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

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

MiniMagick gemのバージョンを変更したら動かなくなった。そのため5.0.1から4.5.1へ修正する。

## はじめに
Railsのバージョンアップ中にて
プロジェクトで画像処理のためにMiniMagickを使用していて、特定のバージョンでエラーが発生しました。ここではエラー内容と、その解決のためにMiniMagickのバージョンを変更した方法について共有します。

## 発生したエラー
まず、コード内で以下のようなエラーが発生しました:

mogrify: unrecognized option `-run-command’ @ error/mogrify.c/MogrifyImageCommand/5941.

このエラーは、MiniMagickが`mogrify`コマンドで`-run-command`オプションを使用しようとしたときに発生しました。`-run-command`はサポートされていないオプションであるため、エラーが発生したと考えられます。

## 環境
– Ruby: 3.2.3
– MiniMagick: 5.0.1

## エラーの原因と対応
エラーメッセージから、バージョン互換性に問題がある可能性を疑いました。調査の結果、MiniMagickのバージョンを

元記事を表示

【Ruby on Rails】初学者向け-開発の流れについて④ 一覧、新規作成、参照、更新、削除画面機能の追加編vol.2

## Rails開発の流れについて

・Railsプロジェクトの作成とDockerの設定
[【Ruby on Rails】初学者向け-開発の流れについて① プロジェクトの作成編](https://qiita.com/y-kida/items/2c8634ceb28a93c84bc9 “Qiita Home”)

・Gem・DB設定とルーティング
[【Ruby on Rails】初学者向け-開発の流れについて② Gem・DB設定とルーティング編](https://qiita.com/y-kida/items/1d34bf72a3296579f213 “Qiita Home”)

・Bootstrapの導入
[【Ruby on Rails】初学者向け-開発の流れについて③ Bootstrapの導入編](https://qiita.com/y-kida/items/cb3723a344766fcaf15e “Qiita Home”)

・一覧、新規作成、参照、更新、削除画面機能の追加vol.1
[【Ruby on Rails】初学者向け-開発の流れについて④ 一覧、新規作成、参照、更新、削除

元記事を表示

【devise】新規登録とメールアドレス変更で異なるテンプレートを使用する

## はじめに
deviseでメールアドレス変更を行おうとすると、デフォルトでは認証メールは新規登録と同じテンプレートを使用する様になっていました。
しかし、新規登録とメールアドレス変更でメールの内容を変更したい。試行錯誤して設定を行ったので、備忘録に。

テンプレート変更の設定にフォーカスした内容になっていますので、deviseでのメールアドレス変更の基本的な詳しい設定方法は他の記事をご覧ください。
私は[rails deviceを使用したメールアドレス変更](https://qiita.com/mone_pi/items/ca132baa3f432947fc96)を参考にしました。

## 環境
* rails 7
* **devise導入済み**
* **メール認証を含む新規登録〜ログイン**
* **メールアドレス変更実装済み**

## やり方

deviseをオーバーライドしてメールアドレス変更用の認証メールの`confirmation_on_edit_address_instructions`を追加する

“`app/controllers/users/answer

元記事を表示

`link_to`をブロックで囲った際に適用範囲がおかしい

# 問題
* `

` の範囲をリンクにしたくて以下のように実装していたが何故か `link_to` が反応しない
* デベロッパツールで確認してみると `div` が `` に囲われていないという想定外の表示となっていた
* 当然 `

元記事を表示

(本番環境)Rails における `devise + Omniauth` の Google 認証の導入メモ

# はじめに
* こちらの記事の通りにローカルで試験的に Google 認証が出来たことを確認済みな状態が前提となっております

https://qiita.com/nakad119/items/9caa1ce803185b93fe85

* 「本番環境」 = 「デプロイ済みの Web アプリがある」という前提となっております
* 私は Render に web アプリをデプロイしております


# 本番の URI を追加するだけ
* やることは単純で Google Cloud コンソールで公開した Web アプリの URI を追加するだけ
* Google Cloud コンソールでは `http://localhost:XXXX/` のようにローカルだけでの利用を許可している状況だとデプロイした Web アプリでは利用許可が降りていません

## 現状
* 現状はローカルホストだけでの利用を許可されているためデプロイしたアプリで Google 認証を利用しようとすると以下のような画面が表示されるかと思います

元記事を表示

Railsの環境構築

# はじめに
Rubyも書いたことない、webアプリも作ったことない人が`Rails7`環境構築やってみた編です。
今回はローカル環境で1からRailsを立ち上げるところまでのメモ程度です。
そして作者は深夜テンションです。ご了承ください

行ってみよー:sunglasses:

# 作者の環境
– Macbook
– Ruby 3.3.5
– データベース(ここではPostgres)
– Rails 7.2
– Homebrew 4.3.19

# Rubyの確認

実はMacにRubyは標準でインストールされてたりするので、すぐにRubyを使うことが可能です。
もしかしたら、すでにRubyが入っている可能性があるので、確認しましょう。

ターミナルで以下のコマンドを実行して下さい。
“`console
$ ruby -v
“`
>RailsではRubyバージョン3.1.0以降が必須です。これより低いバージョンが表示された場合は、新たにRubyをインストールする必要があります。

良さげなバージョンが出てきたらインストールされているので、次に進んでください。
Ruby入ってなさそ

元記事を表示

メッセージ機能の実装

この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。

## 記事投稿の背景
Xのクローンサイトを制作している時にメッセージ機能の実装で色々と躓いたので、知識整理も兼ねて記事として残すことにしました。

## 実装時のER図
![スクリーンショット 2024-10-26 18.20.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3508918/1445a2ae-a6b1-349f-f3dd-da9bc90e8845.png)
UserモデルとRoomモデルの間に二つの中間テーブルを作りました。
Roomモデルはチャットルーム(メッセージをやり取りする場所)となります。
※チャットルームについて以降はルームと表現します。

Entrieモデルの役割:どのユーザー(user_id)がどのルーム(room_id)に居るのかを保存する

Messageモデルの役割:どのユーザー(user_id)がどのルーム(room_

元記事を表示

【個人メモ】Ruby on Rails チュートリアル 第3章

Ruby on Railsチュートリアルで学んだ内容を個人的なメモとして簡単にまとめたものです
# 個人メモ
– コントローラの生成コマンド
rails g controller コントローラ名 アクション名
– マイグレーションの変更を元に戻す
rails db:rollback
– テスト駆動開発(TDD:
最初に「正しいコードがないと失敗するテスト」を書き、次に本編のコードを書いてそのテストがパスするようにする
– assertion(アサーション)
アクションをgetして正常に動作することを確認するテスト手法
– テストの実行
rails test
– provideメソッド
引数にてページのタイトルをviewごとに変更
– yeildメソッド
記述箇所に実際にタイトルが挿入される

元記事を表示

不労所得獲得装置開発その4~楽天スッキリ検索”Rtrak”~

# はじめに
2023年8月に「[不労所得獲得装置開発その3~AVアラート~(アダルト注意)](https://qiita.com/dugabot0/items/d7da6bf9dff16414811f)」で、RailsによるAVアラート開発について投稿しました。

https://av-alert.info/

当時から若干の更新があり、現在では以下の機能が実装されています。
– お気に入りのAV女優、シリーズ名、ジャンルなどをキーワードとして登録
– キーワードに該当するタイトルが新発売されるとその日にアラートメールが送信される
– キーワードに該当するタイトルがセール対象になるとアラートメールが送信される
– 全ユーザに週一でその週のベスト10タイトルがメール配信される

おかげさまでアフィリエイト収益でサーバー代くらいはなんとか稼げており、自分用にも重宝しているので持続可能なサービスになっております。現在ではメンテナンスにもほとんど時間をとられることはありません。

そこでまとまった時間がある程度できたので、今回は一転して真面目な(?)サイトを開発しました。そのサイト開発につい

元記事を表示

ActiveAdminでの`NoMethodError`解決: `undefined method ‘delete’ for :ok:Symbol`エラー

## はじめに
Railsで管理画面を実装している際に、以下のようなエラーに遭遇することがあります。

“`
NoMethodError at /admin/items
undefined method `delete’ for :ok:Symbol
“`

この記事では、このエラーの原因とその解決方法について詳しく解説します。

## エラーメッセージの詳細
エラーが発生するのは、`app/admin/item.rb`ファイルの以下の部分です。

“`ruby
column :name
column “ステータス” do |item|
if item.is_active
status_tag “アクティブ”, :ok
else
status_tag “非アクティブ”
end
end
“`

このコードで`status_tag`に渡している`:ok`が原因で、エラーが発生しています。

## エラーの原因
### `status_tag`の仕様
– `status_tag`メソッドの第2引数には、`class`オプションを含む文字列またはハッシュを

元記事を表示

【Rails】sort_byメソッド,sortメソッド 【本日の積み上げ】

本日の学習記録を、記録します。

### sort_byメソッド, sortメソッド
指定した条件に基づいて、並び替えができる。

### 使い方
sort_byメソッド

数値配列の並び替え
“`rb:example.rb
numbers = [3, 4, 5, 1, 2]
sorted_numbers = numbers.sort_by{ |number| numbers }
#任意の変数名(この中に並び替えられた配列が入る) = 配列が入っている変数名.sort_by{|ブロック変数|条件}
#デフォルトが昇順並び替え、降順にする際は{ |number| numbers }.reverseとする
p sorted_numbers # [1, 2, 3, 4, 5]
“`
文字数の長さによって並び替え
“`rb:example.rb
words = [“apple”, “strawberry”, “banana”]
sorted_words = words.sort_by{|word| word.length}

p sorted_words #[“apple”, “ban

元記事を表示

Rails undefined method ‘keys’ for #

## はじめに
RailsアプリケーションでActiveAdminを使用している際に、次のようなエラーに遭遇することがあります。

“`
NoMethodError at /admin/columns/new
undefined method `keys’ for #
“`

この記事では、このエラーの原因と解決方法について説明します。

## エラー内容の詳細
このエラーは、`app/admin/column.rb`ファイル内でフォーム定義を行う際に発生します。具体的には、以下のコードが原因です。

“`ruby
f.semantic_errors *f.object.errors.keys
“`

`f.object.errors`が`ActiveModel::Errors`のインスタンスであるにもかかわらず、その中で`keys`メソッドが利用できないという問題が発生します。

## エラーの原因
### ActiveModel::Errorsの変更点
– Rails 6以前では、`ActiveModel::Errors`はハ

元記事を表示

debrideというRailsのGemを使ってコードのお掃除をした話。

# デッドコードがもたらす弊害

皆さんはこんな経験ありませんか?

:::note info
この処理どこで呼ばれてるんだろう→ちょっと調査→呼ばれてないんかい!
:::

:::note info
似ているメソッドがあるけどどっちを使えば良いんだ。このメソッド使っていいのかな?
:::

デッドコード(到達不能コード)は、存在しても決して実行されることのないコードを指します。

これらのコードがあると、使っていないとは分かっていても少し脳のメモリを割かれる感じがしますよね。
使っていないコードが残っているとファイルの行数が単純に増えて、ちょっと気も重くなります。

気分的な問題だけでなく、デッドコードを残しておくと、誤って呼び出されてしまってバグを引き起こしてしまうなど、残しておいて良いことはひとつもありません。

テストコードに関しても、使っていないメソッドをテストするのは時間の無駄ですよね。

# 不要なコードをお掃除しよう!
そこで私の所属していたチームではGemを使ってのリストアップをおこなってデッドコードのお掃除を進めました!

どんな感じで進めたかをざっくりとご紹介でき

元記事を表示

【Ruby on Rails】初学者向け-開発の流れについて④ 一覧、新規作成、参照、更新、削除画面機能の追加編vol.1

本記事については簡易的なタスク管理アプリを作成することを前提に、
下記流れのもと、Railsの開発について言及して行きたいと思います。

## Rails開発の流れについて

・Railsプロジェクトの作成とDockerの設定
[【Ruby on Rails】初学者向け-開発の流れについて① プロジェクトの作成編](https://qiita.com/y-kida/items/2c8634ceb28a93c84bc9 “Qiita Home”)

・Gem・DB設定とルーティング
[【Ruby on Rails】初学者向け-開発の流れについて② Gem・DB設定とルーティング編](https://qiita.com/y-kida/items/1d34bf72a3296579f213 “Qiita Home”)

・Bootstrapの導入
[【Ruby on Rails】初学者向け-開発の流れについて③ Bootstrapの導入編](https://qiita.com/y-kida/items/cb3723a344766fcaf15e “Qiita Home”)

**・一覧、新規作成

元記事を表示

【個人メモ】Ruby on Rails チュートリアル 第2章

Ruby on Railsチュートリアルで学んだ内容を個人的なメモとして簡単にまとめたものです

# 個人メモ
– scaffordコマンド
データモデルに関するコードを自動生成する
rails generate scaffold リソース名 データモデルの属性
– データベースのマイグレート
rails db:migrate
– RailsにおけるMVC
 1. ブラウザから送られたリクエストはRailsのルーティング機構によりControllerのアクションに割り当てられる
 2. アクションの実行により、ModelとDBでデータのやり取りが行われる
 3. Controllerは取得したデータをViewへ渡し、生成されたhtmlファイルをブラウザへ返す
– RESTとは
REpresentational State Transfer
データベースとHTTPの操作に対応したCRUD機能を作成することでアプリケーションを実現する
– ユーザー用のリクエストをUsersコントローラーのアクションに割り当てを行うコード
resources :users
– テーブル同士の関連付け(ユーザ

元記事を表示

JSON gemのアップデートで「Wrong number of arguments (given 2, expected 1)」エラーを解決

### はじめに
Rubyを使用しているとき、以下のエラーに遭遇したことがあるかもしれません。

“`
Wrong number of arguments (given 2, expected 1)
“`

この記事では、エラーの原因とその解決方法について解説します。

### 症状
以下のようなエラーメッセージが表示されることがあります。

“`
Wrong number of arguments (given 2, expected 1)
“`

### 原因
このエラーは、`json` gemの特定のバージョンで、メソッドの引数の仕様が変更されたために発生します。Rubyや他のgemと互換性が取れなくなり、正しく動作しない場合があります。

### 解決方法
この問題を解決するには、`json` gemをアップデートして最新バージョンにすることです。

“`bash
# json gemを最新バージョンにアップデート
bundle update json
“`

または、`Gemfile`で明示的にバージョンを指定してから再インストールします。

“`ruby
ge

元記事を表示

CarrierWaveで「can’t resolve image into URL」エラーと解決方法

### はじめに
CarrierWaveで画像を表示しようとしたとき、以下のようなエラーに直面することがあります。

“`
can’t resolve image into URL (undefined method `to_model’ for #)
“`

この記事では、なぜこのエラーが発生するのか、そしてその解決方法について説明します。

### 症状
これまでは、以下のように `.url` を省略して画像を表示できていたのが、

“`erb
<%= image_tag @user.avatar %>
“`

アップデート後に上記のコードでエラーが発生するようになりました。

### 原因
CarrierWaveのアップローダーオブジェクトが直接URL文字列を返さなくなり、`.url` を使ってURLを取得することが必須になったためです。この動作変更により、CarrierWaveのオブジェクトそのものを `image_tag` で渡すと、URLを解決できなくなりました。

### 解決方法
以下のように、`.url

元記事を表示

ActiveRecordのスコープundifined methodになる問題  WhereChain オブジェクトと ActiveRecord::Relation の違い

### 症状
以下のようなコードがあったとします。

“`ruby
Column.published.order_latest.limit(3)
“`

このコードで使用されている `scope` メソッドは、以下のように定義されています。

“`ruby
scope :order_latest, -> { order(published_at: :desc, created_at: :desc) }
scope :published, -> (current_date = nil) {
current_date ||= Util::DatetimeUtil.get_instance.get_current_date_time
where { (is_published == true) & (published_at <= current_date) } } ``` 上記のコードを実行したときに、以下のようなエラーが発生します。 ``` undefined method 'order_latest' for #

元記事を表示

リクエストスペックが推奨されるのか?

## TLTR;
**コントローラースペック**: コントローラー内部の特定のロジックと実装を検証し、ユーザー体験とは多少距離があります。
**リクエストスペック**: HTTPリクエストからレスポンスまで全体のユーザーフローを検証し、実際のユーザー体験を反映します。

## なぜリクエストスペックが推奨されるのか?
Railsでリクエストスペックが推奨される理由を理解するために、まずRailsのリクエスト処理の流れを見てみましょう。

### ステップ 1: HTTPリクエストの受信
ユーザーがブラウザでURLを入力すると、HTTPリクエストがウェブサーバー(Puma, Unicornなど)に届きます。

### ステップ 2: Rackミドルウェアの処理
HTTPリクエストを受け取ると、Rackがこれを標準化し、セキュリティ、ログ記録、キャッシング、セッション管理などの定義されたRackミドルウェアを順次実行します。

### ステップ 3: ルーター処理
Rackミドルウェアを通過したリクエストは、Railsルーターに渡され、適切なコントローラーとアクションが決定されます。

#

元記事を表示

Railsのポリモーフィズムを完全理解!複数モデルを一括管理する魔法の手法とは?

## はじめに

Railsアプリケーションを開発していると、複数のモデルに対して共通の機能を持たせたいケースに遭遇することがよくあります。たとえば、ユーザーの投稿(Post)にコメントを付ける機能を実装したい場合、同じコメント機能を他のエンティティ、例えば画像(Image)や商品レビュー(Review)にも使いたいことがあります。

そんなときに便利なのが、Railsが提供する**ポリモーフィズム**(Polymorphism)です。この記事では、Railsでのポリモーフィズムの仕組みを理解し、実際にどのように使うかを具体例を交えながら解説します。

## ポリモーフィズムとは?

ポリモーフィズム(多相性)とは、**異なるモデルが同じインターフェース(メソッドやデータ構造)を共有する**仕組みを指します。Railsにおけるポリモーフィズムは、ある1つのモデルが**複数の異なるモデル**と**同じ関連**を持つことを可能にします。

たとえば、次のようなケースで役立ちます:

– **コメント機能**をユーザーの投稿(Post)だけでなく、画像(Image)やレビュー(Review)

元記事を表示

OTHERカテゴリの最新記事