Rails関連のことを調べてみた

Rails関連のことを調べてみた
目次

【個人開発】趣味でバンド活動をする私が、練習で使いたいタスク管理アプリを作りました🎸

# はじめに
初めまして。かめと申します。
未経験からのWebエンジニア転職を目指して、学習を続けております。
この度、バンド活動をする社会人に向けた、タスク管理ツール「bandmemo(バンドメモ)」を開発いたしました。

**▼サービスURL**
https://bandmemo-app.com/
**▼GitHub URL**
https://github.com/kame-0707/graduation_bandmemo

[![Image from Gyazo](https://i.gyazo.com/35c01695ae5f80b111b5ee763e70c76b.png)](https://gyazo.com/35c01695ae5f80b111b5ee763e70c76b)

# 開発した理由
これまで、仕事と両立しながら趣味で複数のバンドに所属してきました。
バンド活動は、実際に体験してみると細かいタスクが多いです。

社会人バンドのタスク内容例

“`
【ライブ運営の場合】
– ライブ会場を抑える
– イベント

元記事を表示

ポートフォリオ・テスト

テスト投稿

元記事を表示

Turbo Streamの主なアクション

## 初めに

疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。

# Turbo Streamとは
HTMLの断片をリアルタイムで更新するツール。
Java Scriptの動的な更新を知識が無くとも可能にする。

# 代表的なアクション
・append
・prepend
・replace
・update
・remove
・before
・after
“`
<%= turbo_stream.prepend "(IDの名称)" do %>
<%= render @xxxxxx %>
<% end %>
“`
指定した要素をアクションに従って指定したIDを持つ要素の内部に反映する。
# Append
新しい要素を既存のコンテンツの後に追加

# Prepend
新しい要素を既存のコンテンツの後に追加

# Replace
既存の要素を新しい内容で置き換える

# Update
既存の要素の内容を部分的に更新する際に使用する。
※いいね数等

#

元記事を表示

replaceメソッドを活用した関連テーブルの更新

# はじめに

Rubyには“`replace“`というメソッドがあります。

Rubyの配列 (Array) やハッシュ (Hash) などのオブジェクトに対して使われ、対象オブジェクトの内容を別のオブジェクトの内容で置き換えるメソッドです。

https://docs.ruby-lang.org/ja/latest/method/Array/i/replace.html

よく見るのは

“`ruby
a = [1, 2, 3]
a.replace [4, 5, 6]
p a #=> [4, 5, 6]
“`

“`ruby
hash1 = { a: 1, b: 2 }
hash2 = { c: 3, d: 4 }

hash1.replace(hash2)
puts hash1.inspect #=> { c: 3, d: 4 }
“`
この辺りでしょうか??

今回は“`replace“`を配列やハッシュではなく、ActiveRecordと一緒に使ってみることにします。

# replaceを使ったコード例

:::note

元記事を表示

Ruby on Rails コマンドラインまとめ

## 1. Rails New
– **実行方法**: `rails new <アプリケーション名>`
– **できること**: 新しいRailsプロジェクトを作成する
– **実行例**:
“`bash
rails new myapp
“`

## 2. Rails Server
– **実行方法**: `rails s` または `rails server`
– **できること**: ローカル開発サーバーを起動し、アプリケーションをブラウザでテストする
– **実行例**:
“`bash
rails s
“`

## 3. Rails Generate
– **実行方法**: `rails generate <タイプ> <名前>` または `rails g <タイプ> <名前>`
– **できること**: コントローラ、モデル、リソース、スキャフォールドを作成する

### 例:
– **コントローラの作成**:
– **実行例**:
“`bash
rails generate con

元記事を表示

ねえ、知ってた?「Railsドキュメント」はRailsの公式ドキュメントではないんですよ、という話

## TL;DR(最初に結論)

– Railsドキュメント( https://railsdoc.com/ )というサイトはRailsの公式ドキュメントではない
– 最初のとっかかりをつかむために参照するのは良いが、情報の裏取りとして公式サイトの情報も併せてチェックしよう

## はじめに

上記のTL;DRに書いた話をすでに知ってる人や、わかっている人はこの記事を読まなくても大丈夫です。
ですが、Railsを学び始めた初心者プログラマのみなさんは意外と勘違いしている人が多そうなので、注意喚起を兼ねてこの記事を書いておきます。

## 「Railsドキュメント」はRailsの公式ドキュメントではない
Rails関連の調べ物をすると、検索結果の上位によく上がってくる「Railsドキュメント」というサイトがあります。

![Screenshot 2024-08-24 at 11.41.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7465/c29064d5-b9ff-f8d1-311b-5061d95

元記事を表示

Rails7でActive Storageを用いた画像リサイズを行うために必要な準備

Rails初学者の備忘録として、表題の手順を簡単にまとめておきます。
振り返るとだいぶ初歩的な部分で詰まってしまったのですが、自身と同じくActive Storageを全く初めて使う方に少しでも参考になれば幸いです。

## 使用環境
– Rails 7.0.8.4
– Ruby 3.2.1

## 現状・実現したいこと
– ECサイトの商品一覧ページを只今製作中
– とりあえずActiveStorageの導入は済んでおり、Item(商品)テーブル上のimageカラムに画像の登録はできている
– 現在はシンプルに下記コードで画像表示中

“`erb:app/views/items/index.html.erb
<%= image_tag item.image %>
“`
– 下記画像のように、現状、Seedで登録した画像サイズがバラバラで、見栄えがよろしくないので450×300のサイズに統一したい

![スクリーンショット 2024-08-25 17.15.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

Ruby on Railsで簡単にMessagePackエコーサーバを構築してみた話 – Unity通信の学習用に

# はじめに
Unityのタグを入れましたが、内容はRailsを使ったサーバ構築の話です。
Railsを使ったサーバの構築がすごく手軽で感動したので記事として残しました。

### なぜエコーサーバを立てようと思ったのか
Unityの通信周りの実装を学ぼうと思い、通信テストを効率的に行うためにはサーバが必要になりました。
「エコーサーバ」という、クライアントから送信されたデータをそのまま返すサーバを立てることで、クライアント側の実装を容易にテストできるようになります。
エコーサーバとは、クライアントから受け取ったリクエストデータをそのままレスポンスとして返すシンプルなサーバです。
これにより、クライアントが送信するデータと受信するデータを簡単に確認でき、テストが非常に効率的になります。

### MessagePackについて
通信のデータ形式としてMessagePackを使用します。
JSONが広く使われていますが、MessagePackはパフォーマンス面で優れており選択肢として選ばれるケースも増えると思います。
私自身がMessagePackを試してみたいという好奇心から始めた内容

元記事を表示

S3 Presigned URLを使ってハマった話

社内システムでアバター機能を作る必要があり、s3を利用して実装することにした。

## tl;dr
以下の点で躓きました。
1. ローカルとデプロイ環境では設定が異なる
→ ECSが自動的に環境変数を処理してくれる
2. CORS設定
→ AWSコンソールで設定する必要あり
3. 署名方式
→ クライアントで送るとき複合化をする必要があった

## なんでpresigned url?
### クライアントで直接送りたい
サーバーで画像の処理を行うと、何台しかない状態でオーバーヘッドの起きる可能性がある。
その反面、クライアントはユーザーの数ほど存在するため、画像の処理をクライアントに任せたいと考えた。

### 外部からs3にアクセスする方法
調べると、以下のような選択肢があった。
1. Public
→ 誰でもアクセスできてしまう。今回は社内システムなので外部に公開したくない
2. AWS SDK
→ IAM権限を持っているユーザーだけ
3. AWS CLI
→ IAM権限を持っているユーザーだけ
4. S3サイトホスト
→ 静的サイトを作っているわけではない
5. C

元記事を表示

【Rails】findとfind_byの違いを理解する

## はじめに
Railsでデータベース操作を効率的に行うためfindとfind_byの違いを調べたのでメモとして残します!
それぞれのメソッドの動作や使いどころを簡単な例を通じてお伝えできればと思います。

## 両者の違い
### findメソッド
Rialsの公式より
> find(*args)
Find by id – This can either be a specific id (ID), a list of ids (ID, ID, ID), or an array of ids ([ID, ID, ID]). ‘ID` refers to an “identifier”. For models with a single-column primary key, `ID` will be a single value, and for models with a composite primary key, it will be an array of values. If one or more records cannot be found for the requ

元記事を表示

ECS環境で動作しているRuby on Railsの環境に、EventBridge Ruleでバッチ処理を組み込む

# 概要
表題の構成でバッチ処理を構築したので、その構築方法について記載します。

# 前提条件
:::note warn
前提条件一覧
– `ECS`環境で`Ruby on Rails`のアプリが動作している
– `Terraform`がインストールされている
– `ECS`や `Network`関連(`ALB`、`IAM`、セキュリティーグループ等)が`Terraform`で構築されている
– `Ruby on Rails`のバージョンは、7.0以上
:::

# 作成手順
## Ruby on Rails
### 初期設定
– `EventBridge Rule`から`rails runner`(以下、`r`に省略)でコマンド叩く際、`path`の入力を行わないで済む様にする為、下記を追加した
“`config/application.rb
config.eager_load_paths << Rails.root.join("lib", "batches") ``` 上記の設定をした事で、ローカル環境では、下記のコマンドでバッチ処理の確認が可能 ```sh rails r "

元記事を表示

【個人開発】Qiitaで投稿を断念してしまった私が、3ヶ月越しに「初学者向けの技術記事アプリ」を作成しました!💐

## はじめに
初めまして。
2024年1月よりプログラミングスクールRUNTEQに通っている、sayaと申します。
今回スクールの卒業制作として、**技術記事投稿したことがない/投稿に苦手意識を感じている方向けの技術記事投稿アプリ**を作成しました。

①投稿へのハードルが低いこと
②第三者からの反応内容を確認できること
③継続して投稿できること
を目的に、約2ヶ月に渡り開発を行ってまいりました。

### サービスURL: [Miniita(ミニータ)](https://www.miniita.com/)
### GitHub: [リポジトリ](https://github.com/s17w09/Miniita)
[![Image from Gyazo](https://i.gyazo.com/f9acd6ce27eb2065aac3cfb78aee5c24.png)](https://gyazo.com/f9acd6ce27eb2065aac3cfb78aee5c24)

3ヶ月前にQiitaで記事を投稿するのを断念してから、この度このような形で記事を投稿できることをとても嬉し

元記事を表示

【豆知識】rails console から errors メソッドや full_message メソッドの返り値を確認する手順について

# はじめに
アプリ制作課題に取り組むと同時に過去課題を参考にしているわーちゃんです。今回はユーザー登録でバリデーションエラーが発生した場合、そのエラーメッセージを画面に表示するようなファイル設定、コードの記載を行ったあと、ローカルで確認することもできますが、ターミナルで確認できるようになってこそ!!大切だとおもったので、改めて学習しなおしてみました。
前回に比べて、「じゃあこの場合はどうなるのか?」という考えもできるようになってきたのでアウトプットの為にもまとめてみます。

## さっそく手順
1. **`rails console` を起動**
`docker compose exec web rails c` で Rails コンソールを開く

2. **モデルのインスタンスを作成**
バリデーションエラーを確認するためには、モデルのインスタンスを作成し、そのインスタンスが無効な状態である必要があります。たとえば、`User` モデルがあると仮定します。

“`ruby
user = User.new
“`

元記事を表示

Railsで、パーシャルを使って、Webサイト・Webアプリの画面を作る

## 概要

パーシャルの意味合いはおそらく、Webサイトの画面の開発のDRYさを低減するのが目的だと感じた。

開発の効率を上げる、同じコードを繰り返す書くことを避ける

その機能を提供してくれるのが、Railsのパーシャルという機能だ。

機能というか、Railsのサービス的な?

## やり方

Railsのフレームワークを生成すると、たくさんのディレクトリが自動生成される。

その中に、appディレクトリがある。

そして、

appディレクトリの中に、viewsディレクトリがあり、

viewsディレクトリの中に、layoutsディレクトリがある。

Railsは、`render`メソッドが使えますが、

“`
app/views/layouts
“`

このディレクトリの中に、

“`
__◯◯.html.erb
“`

というファイルを作ります。

そして、

“`
application.html.erb
“`

の中に、

“`
<%= render 'layouts/◯◯' %>
“`

と記載すれば、

`__◯◯.html.erb`の中に、

元記事を表示

エンコードとデコード

# はじめに

先日、業務で文字列をエンコード、デコードする実装を行ったので、備忘録として記事にまとめたいと思います
この記事では、Ruby on Railsでのエンコードとデコードの基本的な使い方について説明します

# エンコードとデコードとは?

エンコードとデコードは、データを異なる形式に変換し、必要に応じて元の形式に戻すプロセスです
このプロセスにより、データの送信や保存時にセキュリティが確保され、データの整合性も維持されます

Ruby on Railsでは、`Base64`モジュールを使用してエンコードとデコードを行います
`Base64`モジュールを使用して、文字列のエンコードとデコードを簡単に行うことができます

## エンコード
エンコードは**データを特定の形式に変換する**手順です
例えば、バイナリデータをテキスト形式に変換することで、インターネット通信やデータベースにデータを保存する際にセキュリティが担保され、データが安全に取り扱えるようになります

以下は、ユーザーのパスワードをBase64でエンコードする例です
“`
require ‘base64’

元記事を表示

Procとlambdaの違いとRails開発で使われる場面

## はじめに

`Proc.new`と`lambda`はどちらもProcクラスのオブジェクトを作成する方法です。

しかし、両者で作られるオブジェクトには挙動の違いがあります。

そこでこの記事では、`Proc.new`と`lambda`それぞれで生成されるProcオブジェクトの違いをまとめます。

この記事におけるバージョンは**Ruby 3.3**です。

## 【おさらい】`Proc.new`と`lambda`の使い方

最初にサラッと`Proc.new`と`lambda`の使い方を確認しておきます。

### `Proc.new`の使い方

次のように`Proc.new`を使います。

“`ruby
p = Proc.new { |n| n * 2 }
p.call(5) #=> 10
“`

また`Proc.new`の代わりに`proc`メソッドを用いても、同じ機能のProcオブジェクトを生成できます。

“`ruby
p = proc { |n| n * 2 }
p.call(5) #=> 10
“`

### `lambda`の使い方

`Proc.new`

元記事を表示

includesメソッドについて

## 初めに

疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。

## どういった時に使用するメソッドか
主に一覧などを作成する際、アクションに定義する。
関連するデータを一度のクエリで効率的に取得できる。

## 具体的には
“`
@object = object.includes(:example)
“`
objectを取得と同時にそれに関連するexampleも一緒にロードされる。
これによってN+1問題が解消されるので、効率的に関連データを取得できる。

元記事を表示

レビューコメントを長期的な成長に活かすためのテクニック

# 同じコメントを何度もされている。
レビュー者の思考を理解し、その思考をするための前提知識を学び
根本的な原因が同じレビューコメントを何度ももらわない様に気をつけていきたいですよね。

## 表面的にもらったコメントに対応する問題
> このパーツはキャッシュしておいて、次回実行時に再度計算されない様にしたほうが良い

あなたはシンプルにコメントに従って修正したとする。
確かに、このPullRequestではそれで完結するかもしれないが問題がある

### 問題点は以下2点
* レビュー者のコメントに至るまでの思考回路が理解できていない
* あなたはその思考をするための、前提知識を学んでおらず、成長していない。

## 思考回路を理解せず場当たり的に改善
このパターンはキャッシュするんだ、覚えておこう!
これで終わってしまう、確かにいつかは全パターン網羅できるかもしれないが。

ロジックを理解せず全パターン試してみるのは
確率の計算で全パターンを試験テスト中に試してみる様なもので再現性がない。

### Dパターンの実装時にキャッシュするか判断できそうですか?
* Aパターンはキャッシ

元記事を表示

React こんにちは!Ruby on Rails さようなら!(したくない)

# はじめに

**ReactとRuby on Railsについての考察を期待している人へ**
ごめんなさい。React周辺技術をゆる〜くまとめだけの記事です。最後に軽く感想だけ書いています。

**普段からReactの開発を行っている人へ**
ここに書かれている内容はすでにご存知のはずなので読まなくても大丈夫です。

# 背景

私は普段Ruby on Railsでどちらかというとバックエンド寄りの開発をしています。

最近とあるReactのコードを読む機会がありました。私自身は過去にReactでコードを書いた経験もあるのですが、2020年頃のことなので結構前です。

でも「まあ読めるだろう」と久しぶりにReactのコードを読み始めたのですが、周辺技術が色々と進化していてコードを読むどころではなく「これは何?」というのを知るところから始めなくてはなりませんでした。2020年当時から存在していたものもありますが、今回調べたことを軽くまとめておくことにしました。

**以下、周辺技術のゆる〜いまとめです。**

## React関連

### React

大人気のフロントエンドライブラ

元記事を表示

【Rails】render textが使用できない

## はじめに
Railsのアップデート中にrender textを使用している箇所でエラーが出たので、その対応をまとめます。

## 問題
以下のように、render textを使用するとエラーが出ます。
“`ruby
class TestController < ApplicationController def index render text: "Hello World" end end ``` ## 解決方法 Rails5系からrender textは使用できなくなりました。 代わりにrender plainを使います。 ```ruby class TestController < ApplicationController def index render plain: "Hello World" end end ``` ## 参考 https://zenn.dev/yukito0616/articles/3dfc26b6a8ff56 https://guides.rubyonrails.org/layouts_and_re

元記事を表示

OTHERカテゴリの最新記事