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

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

【RSpecエラー】Failure/Error: require_relative ‘../config/environment’ FrozenError:対処

## はじめに
RSpecテストで「**bundle exec rspec**」を実行したところ以下のようなエラーが発生しました。
“`
An error occurred while loading ./spec/models/user_spec.rb.
Failure/Error: require_relative ‘../config/environment’

FrozenError:
can’t modify frozen Array: [“/usr/local/bundle/gems/turbo-rails-2.0.5/app/channels”, “/usr/local/bundle/gems/turbo-rails-2.0.5/app/controllers”, “/usr/local/bundle/gems/turbo-rails-2.0.5/app/controllers/concerns”, “/usr/local/bundle/gems/turbo-rails-2.0.5/app/helpers”, “/usr/local/bundle/gems/turb

元記事を表示

【Rails】前のページに戻るボタンの実装方法

## はじめに
Railsの戻るボタンの実装について、「button_to」を使用した記事がなかったので、
link_toとbutton_toを使用した2パターンの実装についてまとめてみました!

## 実装コード
下記のコードで、「一つ前に表示していた画面に戻る」という機能を簡単に実装することができます!
### 戻るリンク
“`
<%= link_to '戻る', :back %>
“`

### 戻るボタン
“`
<%= button_to '戻る', :back, method: :get %>
“`

## 参考
[【Rails】戻るボタンの実装方法【複数ページ戻ることも可能】](https://qiita.com/nekojoker/items/cb662de7cbb65e438985)
[『戻る』ボタンを 『link_to』 ではなく、『button_to』 で作成したい](https://teratail.com/questions/280995)

元記事を表示

Cursorを使ってrubyコードを生成してみた

## Cursorとは
前から使ってみたいと思っていたCursorを今回使ってみました。

Cursorとはchatgptを組み込んだコードエディターです。
会話ベースでコードを書いてくれたり、修正してくれます。
VSCodeをフォークしているみたいなので、今までVSCodeを使っていた方は直感的に使えると思います。

## インストール方法

インストール方法や使い方はこちらの記事を参考にさせていただきました。

https://blog.future.ad.jp/cursor

ダウンロードは以下の公式からできます。

https://www.cursor.com/

## railsでCursorを使ってみる
私はWSLに接続し、docker環境で使ってみることにしました。
任意の場所に、test.rbを作成します。
Ctrl + Kを押すと、以下のように入力フォームが出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1328154/76e50f17-c94f-bb0a-

元記事を表示

[Ruby] メモリと見るshallow copy

最近勉強して出てきた`shallow copy`について、まとめてみます。
新米エンジニアなので、誤りがあったらご指摘ください:santa:

# shallow copyとは
かなりざっくり「**外見は別物だけど、中身は一緒だよ**」というコピー
– **aオブジェクト**と、それをコピーしてできた**bオブジェクト**があった場合…

1. aオブジェクトとbオブジェクトは、別々の`object_id`だよ(**外見は別物**)
2. aオブジェクトとbオブジェクトが指してるオブジェクト(配列の要素など)の参照先は一緒だよ(**中身は一緒**)

というコピーのこと。

Rubyだと、`clone`や`dup`で`shallow copy`ができます。

文字だけだと何を言っているか分かりにくいので、次にいきましょう。

# 見てみよう
※分かりやすくするために、`object_id`をメモリの番地としています。(`object_id`は適当です)

#### 1. `shallow copy`元と、`copy`先の`object_i

元記事を表示

Ruby on Railsでの<%= %>と<% %>の使い方について

# はじめに
Ruby on Railsでは、<%= %>と<% %>は埋め込みRuby(ERB)テンプレート内でRubyコードをHTMLに組み込むためのものです。

# <%= %>と<% %>の違いは
### 1. <%= %>(出力ありのERB):
<%= %>は、Rubyコードを評価し、その結果をHTML出力する場合に使います。これは**戻り値のあるメソッド**と考えることができます。
例: <%= @user.name %> は、@userインスタンス変数の名前を出力します。

### 2. <% %>(出力なしのERB):
<% %>は、Rubyコードを評価して結果を直接HTML出力せず実行したい場合に使います。 **戻り値のないメソッド(void)** だと考えればいいでしょう。
例: <% if @user.admin? %> 管理者 <% end %> は、ユーザーが管理者の場合にのみ「管理者」というテキストを表示します。

# form_tag
下記コードを見てください。form_tagは一見 **戻り値のないメソッド(void)** に見えて、 <% %>

元記事を表示

[Docker][M1 Mac] Unknown MySQL server host ‘db’ (-2) と表示されてdb:createができない!!

# はじめに

dockerのbuildが完了しRailsのデータベース作成しようと、
“`
docker compose run main rails db:create
“`

を実行した際に以下のエラーが発生。
“`
Unknown MySQL server host ‘mysql’ (-2) Couldn’t create ‘myapp_development’ database.
Please check your configuration. rails aborted!
“`

docker-compose.ymlは次の通り。

“`docker-compose.yml
services:
mysql:
container_name: myapp_mysql
image: mysql:5.7
platform: linux/x86_64
command: –default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROO

元記事を表示

Ruby 2.6.6でRails 6.0.3をインストールする際のトラブルシューティング

### エラー1: nokogiriのバージョンとRubyの互換性に関するエラー
Ruby 2.6.6でRails 6.0.3をインストールしようとすると、次のようなエラーが発生することがあります。

“`bash
$ gem install rails -v 6.0.3

ERROR: Error installing rails:
The last version of nokogiri (>= 1.8.5) to support your Ruby & RubyGems was 1.13.10.
Try installing it with `gem install nokogiri -v 1.13.10` and then running the current command again.
nokogiri requires Ruby version >= 3.0.0. The current ruby version is 2.6.6.146.
“`
このエラーは、nokogiri gem がRuby 3.0.0以上を要求しているために発生します。解決方法として、nok

元記事を表示

初学者がRuby Silverに合格!勉強方法をまとめてみました!

現在オンラインスクールにてプログラム学習をしているMiyaki(@Miyaki)と申します。
初学者ゆえに、記事の内容に誤りや分かりにくい点があるかもしれませんがお許しください🙇‍♂️
Ruby Silverに合格しましたので、資格を取得するために実践した方法について共有させていただきます!

# 目次

タイトル
1 勉強時間     
2 学習教材
3

Rails 主要ライブラリ

・Devise
ログイン認証機能を簡単に実装できるGem。

・kaminari
ページネーションの実装ができるGem。
ページネーションとは、ブログなどで画面の下で何ページ目かを示してくれるボタンのこと。

・Paperclip
ファイルアップロード機能を実装するGem.

・Active Admin
管理画面をかんたんに実装できるGem。

・Faker
大量のダミーデータを作成できるGem.

【Ruby】そのassert_raisesの使い方、本当に合ってる? – assert_raisesでエラーメッセージをテストする方法

## はじめに
以下のテストで次の2点をテストしようとしています
– 特定の条件でraiseが発生しているか
– エラーメッセージが正しく出力されているか

このテストの何が悪いか皆さんは分かりますか?
“`sample_code.rb
class SampleCode
def self.animal_check(animal)
raise ‘猫はアレルギーだからダメ’ if animal == ‘cat’

raise ‘犬は可愛すぎるからダメ’ if animal == ‘dog’

pp ‘他の動物は許す’
end
end
“`

“`test.rb
test ‘猫はアレルギーだからraise’ do
assert_raises(RuntimeError, ‘猫はアレルギーだからダメ’) do
SampleCode.animal_check(‘cat’)
end
end
“`
とあるプロジェクトのテストコードを眺めていたところ、陥りがちなあるミスを発見したので戒めとして記事にしようと思います。
では、なぜ

Rails newからデプロイまで

## はじめに
はじめまして!2024/04/11よりRUNTEQというプログラミングスクールに在学中のみうらと申します。
`Ruby on Rails` を学習中です。
今回は`Docker` を使った`Rails`の環境構築からデプロイまでの一連の流れについて記していきたいと思います。(2024/06/30時点)
## 今回の流れ
– Rails new
– Git hubのリポジトリ作成
– デプロイ

上記の3点についてまとめていきたいと思います。

## 今回使用技術
– ruby:3.2.3
– Rails: 7系統 (7.1.3.4)
– PostgreSQL
– Docker
– Git Hub
– Render

## Rails環境構築

[こちら](https://hackmd.io/@SKjw2RY-RNCUNSdJfEWPig/HJE0GUClC)を参考に環境構築。
その際、`PostgreSQL`を選択。`Bootstrap`と`Tailwind`お好きな方を使ってください。
また`docker compose up`の際にエラーが起きた場合[こちら](h

【Rails】「アセットパイプライン」とは

# はじめに

改めてアセットパイプラインについてまとめてみました

# 目次

[1.アセットパイプラインについて](#1-アセットパイプラインについて)
[2.主な機能](#2-主な機能)

# 1. アセットパイプラインについて

アセットパイプラインは、Ruby on Railsアプリケーションで使われる便利な仕組みです。これは、ウェブサイトやウェブアプリで使うJavaScriptやCSSなどのファイルを、効率よく扱えるようにしてれくます。

例えば、アセットパイプラインを使うと、複数のJavaScriptやCSSファイルを1つにまとめて、ブラウザが1回のリクエストで取得できるようにできます。それに加えて、ファイルのサイズを小さくするための工夫もしてくれます。つまり、使っているJavaScriptやCSSが少ないリクエストで、早くページが表示されるようになるんです。

# 2. 主な機能
具体例を交えて4つ紹介します。

## SHA256フィンガープリントを挿入する機能:
この機能は、ファイル名にSHA256フィンガープリントを含めることで、ブラウザとCDNによってファイル

【個人開発】最寄りの綺麗なトイレを見つけるアプリをリニューアルしました【Next.js×Rails】

# 名称
Quick Clean Restroom Map

# 概要
最寄りの綺麗なトイレの位置をリアルタイムで案内し、トイレの情報を提供します。

# URL
https://quickcleanrestrooms.com/

# 備考
通常時は停止です。

# アプリを開発した背景
ある日、小さな子供(長男・次男)を連れてトイレを探していたとき、なかなか清潔なトイレが見つからず、非常に困った経験がありました。Google Mapsで検索しても、見つかるのは公共のトイレばかり。清潔で快適な「綺麗なトイレ」をすぐに見つけることが難しいと感じたことはありませんか?

そんな経験をしたことがある方は少なくないでしょう。実際、私自身も同じ問題に悩まされていました。特に、小さな子供を連れている時や、おしゃれな服を着ている時など、清潔なトイレを使いたい場面で、何度も歩き回ったり、不便な場所で我慢しなければならなかったことが何度もありました。

この問題を解決し、同じ悩みを抱える人たちの助けになりたいと思い、「Quick Clean Restroom Map」を開発しました。このアプリは、ユーザ

Active Recordってなんだろう?

Rails学習中に出てくるActive Recordについて、自分なりに調べたことを簡単にまとめます。

# Active Recordとは何か?
MVCのM、つまりモデルに関わる仕組み。ORMフレームワークとしてさまざまな機能を備えています。

## ORM(オブジェクト/リレーショナルマッピング)
アプリケーションが持つオブジェクトを、リレーショナルデータベースのテーブルに接続すること。
Railsでは、これを取り入れることで、SQL文を直接書く代わりにアプリケーションにおけるオブジェクトの属性やリレーションシップをデータベースに保存することも、データベースから読み出すこともできるようになります。

# 主な機能
## CRUD(データの読み書き)
controllerのアクションでよく見るコード、これにもActive recordが活用されています。
Create(データの作成)
“`
user = User.new(name: “Michael Hartl”, email: “mhartl@example.com”)
user.save  
/*Userテーブ

【個人開発】生成AIを使って名言を提供するサービスを開発しました【Rails】

## はじめに
こんにちは![ずっと大地🦦](https://x.com/zuttodaichi)と申します!!
2023年11月より、オンラインスクールのRUNTEQにて、未経験からのWebエンジニア転職を目指して学習をしています。
前職はスポーツ選手として活動しておりました。

今回、生成AIを使った名言提供サービス『MeigenOtter(名言おったー)』を開発したので、記事にしたいと思います。
間違いや不備などありましたら、教えて頂けると幸いです。

## サービス名
[MeigenOtter](https://meigenotter.com/)
ユーザー登録をしなくても、ランダムでの名言取得は可能です。気軽に覗いて頂けると幸いです。

**▼サービスURL**
https://meigenotter.com/

**▼GitHub URL**
https://github.com/daichi3102/wordpass

![MOtop.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37737

[Rails] Capistranoが不要なので、削除する

# はじめに
元々、`Capistrano`を使用してデプロイをしていたみたいですが、デプロイ方法が変わって、使用されなくなっていました。

なので、調査をした上で、削除する方針に決まりました。
その内容をアウトプットいたします。

:::note warn
本記事では、削除をメインに記載いたします。
Capistranoについて詳しく知りたい方や実装方法は、別記事を参照していただくようお願いいたします。
:::

# Capistrano とは
https://github.com/capistrano/capistrano

簡単にいうと、デプロイを自動化してくれるGemになります。
詳しくは、以下の記事がわかりやすかったです。

https://pikawaka.com/rails/capistrano

# 確認方法
まず、本当に`Capistrano`を使用していないか、確認します。
デプロイに使用する実行コマンドは、以下のようになると思うので、リポジトリ内・外を調査します。

“`sh
bundle exec cap production deploy
“`

使われ

Railsで検索機能実装に役立つおすすめ記事一覧(Ransack)

# RailsアプリケーションでRansackを使用して検索機能を実装する際に参考にした記事をまとめました。

## 1. [activerecord-hackery/ransack (GitHub)](https://github.com/activerecord-hackery/ransack)
Ransackの公式リポジトリです。まずはこれを見てみるといいと思います。

## 2. [Ransackを使った検索機能の実装(Qiita)](https://qiita.com/nojinoji/items/e1b174220da8c81a1756)
Qiitaユーザーによる実際の使用例が紹介されています。具体的なコード例が豊富です。

## 3. [Ransackの基本的な使い方(Pikawaka)](https://pikawaka.com/rails/ransack)
基本的な使い方や設定方法が分かりやすくまとめられており、読みやすい。

## 4. [Rails7とRansackでのインスタント検索機能(プログ)](https://plog.kobacchi.com/rails

ブラウザタブの左上のアイコンを指定する

# はじめに
ポートフォリオ作成一旦終わりました!
ブラウザタブの左上のアイコンってどうやって指定するんだ?
となり実装まで漕ぎ着けたのでアウトプットしておきます✍️

# 完成図

![スクリーンショット 2024-06-27 23.52.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782860/2699962e-16fb-9407-d2e4-40665297cb2d.png)

# 簡単!

指定したい画像を用意し、拡張子.icoになるよう変換します(ico変換など検索すると変換サイトが出てきます)
適当な変換サイトでOK!

application.html.erbのhead内に以下を記述します

“`application.html.erb

<%= favicon_link_tag('GoOutPlanning.ico') %>

“`

あとは該当の画像をapp/assets/imageに格納するだけ!

# さいごに
ぜひやってみてください!

ホーム画面に追加でアイコンを指定する apple-touch-icon

# はじめに
ポートフォリオ作成一旦終わりました!
iphoneでホーム画面追加するときのアイコンってどうやって指定するんだ?
となり実装まで漕ぎ着けたのでアウトプットしておきます✍️

# 完成図

![IMG_6629.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782860/4586b9b3-5d0e-56a8-58b1-41cf71dff402.jpeg)

# 簡単!
指定したい画像を用意し、サイズを180×180にリサイズしておきます
適当な変換サイトでOK!

application.html.erbのhead内に以下を記述します

“`application.html.erb

<%= favicon_link_tag 'apple-touch-icon.png', rel: 'apple-touch-icon', type: 'image/png' %>

“`

あとは該当の画像をapp/assets/imageに格納するだけ!

# さいごに

未読通知カウント アイコンバッチ

# はじめに
ポートフォリオ制作やっと一旦製作終えました!
今回は通知の未読カウントとDMの未読カウントを実装しました!
未読がある場合はアイコンバッチがつくようにしています
アウトプットとしてまとめます

※旅行やデートのプランを共有するアプリなので、
投稿機能はPostではなくPlanを使用しています!

通知機能の実装方法については、下記に記載しています

https://qiita.com/3rarara/items/1e18838a9fdb22dd535a

# 完成物

![スクリーンショット 2024-06-27 22.20.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782860/1580f956-5cae-42f6-eb72-8bf79ad90d2b.png)

# コントローラー
どの画面でもバッチをつけるために、application_controller.rbに記述します

“`application_controller.rb
class ApplicationCo