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

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

既存のDocker環境(rails7-on-docker)をDevContainer化した話

# 結論
rails7-on-docker環境の`compose.yaml`を使用してDevContainer環境を構築するのがおすすめ!

# 環境
* VScode
* [rails7-on-docker](https://github.com/ryanwi/rails7-on-docker)環境の準備が整っていること
* 他環境のDevContainer化でも参考になると思いますが、記事自体はrails7-on-railsについて言及しています。
* `rails7-on-docker`は、docker環境にrails7、postgresql、RSpecなどが入っています。いちいちrubyをインストールしたりだとかをしなくていいので便利です。
* もし環境準備がまだであればこちらの記事がおすすめです:[Windows WSL Docker Rails7 環境構築](https://qiita.com/mt-blue-sou/items/47e76c37eebf5ad7e603)

# dovcontainer化する手順
VScode公式のDEV

元記事を表示

railsの部分テンプレート描写について

# はじめに
railsで、部分テンプレートとしてパーシャルを利用しています。
しかし、使いすぎると描写に時間が掛かったりとデメリット部分もあり、使いどころに迷うケースがあります。
今回、そのパーシャルの利用方法が初見だったので、備忘録として残しました。

# やりたかったこと
スケルトンローダーの画面を作成したかった
![l_6814799_128_cc8998bdb47074590d3c2505975a7e2d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632357/c3ef4dcd-a68b-228b-9077-248e1013b516.png)

スケルトンローダーに関しては、こちらが分かりやすいかもしれません

https://marron-web.site/blog/cdad43/

# 作成
“`css:css
.one_comment {
display: flex;
animation: pulse 2s cubic-bezier(.4,0,.6,1) infinite

元記事を表示

【React導入】既存のRailsアプリにReactを導入する

## はじめに
この記事では、既存のRailsアプリにReactを導入する方法についてまとめています。

環境構築段階からReactを導入する方法についての記事は多いですが、途中からReactを導入する記事は少ないため、私自身かなり苦労しました。同じように苦戦している方の助けになれば幸いです。

https://ja.react.dev/

## 環境/前提
– Ruby 3.2.3
– rails 7.1.3.4
– TaiwindCSS使用
– Docker環境
– 「**esbuild**」で開発を行っていること
– バックエンド(ruby、rails)のみで環境構築していること

## Webpackerについて

以前は「Webpacker」を使用するのが一般的でしたが、最近では「Import Maps」や「esbuild」、「Vite」などの新しいツールが推奨されています。Webpackerは廃止されたわけではないですが、公式では使わない方向にシフトしています。この点を押さえておくと良いでしょう。

既存のRailsアプリにReactを導入するための記事が少なく、ChatG

元記事を表示

i18nの設定がconfig.i18nにまとまってconfig.action_viewは非推奨となった

Rails6からRails7へアップデートした時に、このような警告が出るようになりました。

“`zsh:
DEPRECATION WARNING: action_view.raise_on_missing_translations is deprecated and will be removed in Rails 7.0. Set i18n.raise_on_missing_translations instead. Note that this new setting also affects how missing translations are handled in controllers.
“`

警告の内容は、i18n(国際化)の設定を`config.i18n`にまとめたため、今まで使用していた`config.action_view`の方は非推奨になるというものです。

環境設定の中でi18nの設定をしている場合は、このように変更すると警告が出ななります

“`diff_ruby
– config.action_view.raise_on_missing_tr

元記事を表示

[Rails] Rspec_uninitialized constantになったら、described_classを見直す!?

# はじめに
先日、以下の現象が起きました。

・・・

今回の`rspec`の内容です。
– `describe`に`it`ブロックを複数定義
– `subject`で、インスタンスを作成する処理をしている
– そのインスタンスが返す値をテストしている

“`rb
RSpec.describe ‘PostShortcode’ do
subject { TestPost::Shortcode::PostShortcode.new(params) }

it ‘hoge’ do
expect(subject.hoge).to eq ‘hoge’
end

it ‘fuga’ do
expect(subject.fuga).to eq ‘fuga’
end
“`

上記で実行すると、なぜか**2回目以降**の`it`の時に、`NameError: uninitialized constant`が発生します。

“`sh
NameError:
uninitialized constant TestPost::Shortco

元記事を表示

railsでアプリケーション情報の表示するコマンド

## はじめに
あれ?このシステムのrailsのバージョンってなんだっけってことよくありますよね。
Gemfileを見れば分かりますが、わざわざファイルを見に行かなくてもrails,rubyのバージョンを知ることができるコマンドを見つけました。

## アプリケーション情報の表示するコマンド
rails aboutというコマンドを打つだけでrails,rubyのバージョンを知ることができます。
開発メンバーで同じ環境を使えているか確認する際などに使えそうですね。
“`sh
$ rails about

About your application’s environment
Rails version 7.1.3.3
Ruby version ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux]
RubyGems version 3.5.9
Rack version 3.0.11
Middleware ActionDispatch::HostAuthorization

元記事を表示

Rails: パーシャルに渡す変数は、なるべく少ない方がいいというレビューを受けた話(haml記法)

## 読んで欲しい人

– モデルにアソシエーションがあるのに、パーシャルに渡す変数を複数個にしてる方へ
– 過去の自分

## 動作環境

– ruby 3.3.0
– Rails 7.1.3.3

## 前提

作っているもの
– ポスト詳細画面に表示する、コメント一覧のパーシャル

## レビュー内容とコード

### レビュー内容
“`diff
– = render ‘posts/comments’, comments: @comments, post: @post
+ = render ‘posts/comments’, comments: @comments
“`
コメント

– モデル同士がお互いを知っているのであれば、渡す変数は1つの方がいい

### コード構成と内容

モデル:postとcommentは、1対多の関係性

“`post.rb
has_many :posts, dependent: :destroy
“`

“`comment.rb
belongs_to :post
“`

コントローラ

“`posts_controlle

元記事を表示

Railsアプリケーションをサブディレクトリで公開する方法

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

表題の通りですが、Railsアプリケーションで `example.com/ec-site` というようなサブディレクトリの形でRailsアプリケーションをリリースしたい時の設定になります。

環境は以下の通りです。

– Nginx
– Ruby on Rails:v7.1
– Ruby:3.2
– puma

:::note warn
この記事では便宜的にドメイン名を`example.com`、アプリケーション名を`ec-site`という名前にしています。
:::

# Nginxの設定
Nginxのファイルを以下のように設定してください。
ただし、`example.com`と`ec-site`に関しては、ご自身の環境に合わせて変更してください。

“`nginx:rails.conf
client_max_body_size 2G;

元記事を表示

swiperの導入を整理してみた

## はじめに
Swiperの公式ドキュメントをみてみてもいまいち「?」だったため、GPTやほかのサイトを回ってみて私なりにまとめたものをお伝えしたいと思います。

https://swiperjs.com/get-started

## Swiper名前の由来
読んで字のごとく、「Swipe」からきています。
日本語に訳すと「指でなぞる」。スマートフォンやタブレットでのスワイプ操作を前提に設計されているため、この名前が付けられたと考えられています。

![スワイプ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3777936/06582699-c5a7-9889-7c97-955e88a0f67d.jpeg)

## Swiperとは
スライドショーが作れるJavaScriptのプラグインです。
他にスライドショーが作れるプラグインには「slick」があります。
slickはjQueryに依存するプラグインですが、SwiperはjQueryに依存しないプラグインなので、SwiperはjQueryを読み

元記事を表示

DaisyUIのコンパイルで苦戦した話[Rails7]

# はじめに
初めまして、現在プログラミングスクールにてRuby on Railsをメインに学習しているikedaと申します。
アプリ制作時にプリコンパイルを忘れて苦戦したのでその備忘録としてまとめようと思います。
初めて記事を書くのでお手柔らかにお願いします。

# 使用技術
Rails 7.0.8.1
Ruby 3.1.2
docker
Tailwindcss
DaisyUI

# [daisyUI](https://daisyui.com/?lang=jp)とは何か
Tailwind CSSをベースとしたコンポーネントライブラリで、わかりやすく言うとTailwind CSSを更に使いやすくするためのもの
### [Tailwind css](https://tailwindcss.com/)とは
ユーティリティファーストのCSSフレームワークのこと

# やりたかったこと
daisyUIのコンポーネントにあるチェックボックスを導入したかった。

# 問題

daisyUIのコンポーネントのチェックボックスを導入したら色が反映されなかった。

# 試したこと
`docker co

元記事を表示

ローカルからRenderにデプロイする際出やすいエラーについて

### はじめに
今回はローカルでrailsで環境構築した後、Renderにてデプロイする際によく起きるエラーと対処法を備忘録としてまとめてみます

## 事象
ローカル環境でrailsチュートリアルを学習中、1章で最初のデプロイをRenderにする際にエラーが発生

## エラー内容
“`
`validate_platforms!’: Your bundle only supports platforms [“x64-mingw-ucrt”]
but your local platform is x86_64-linux. Add the current platform to the lockfile
with (Bundler::ProductionError)
“`

## 原因
bundlerが実行できるプラットフォームが制限されている。ローカルでRailsアプリを作成すると、bundlerが実行できるプラットフォームはRailsを実行した環境OSのみとなるらしい。今回はWindowsでbundle installしたためWindowsOSのみの環境になっている。その

元記事を表示

Railsでポリモーフィック関連付けを使用した柔軟なモデル関連付けの実装」

## はじめに
アプリ制作の過程で、ポリモーフィック関連を用いた実装を行いました。ここではその実装過程で得られた気づきをまとめます。ポリモーフィック関連について実際の例を交えながらなるべく分かりやすくまとめたいと思います。

## なぜポリモーフィック関連付けが便利なのか
例えば、ブログ記事にコメントを付ける機能を作ったとします。その後、イベントページにもコメントを付けたくなったとします。通常であれば、新しくコードを書き足さないといけないと思います。しかし、ポリモーフィック関連付けを使うと、既存のコードをほとんど変更せずに、イベントにもコメントを付けられるようになります。
それでは、実際にコードを見ていきましょう。

## モデルの設定
まず、モデルの設定から。`Article`、`Event`、`Comment`の3つのモデルを作ります。
“`ruby
class Article < ApplicationRecord has_many :comments, as: :commentable end class Event < ApplicationRecord has

元記事を表示

【Rails】You need to supply at least one validation エラーが発生したら

## 概要

Rails アプリでフォームデータを送信するとき、以下のようなエラーが発生しました。

“`
You need to supply at least one validation
“`

## 原因

このエラーは以下のように `validates` メソッドにバリデーションの内容が指定されないと発生します。

“`rb
class Profile < ApplicationRecord validates :user_id end ``` ## 対処法 このエラーを解決するためには `validates` メソッドに適切なバリデーションを指定します。例えば `user_id` が一意であることを検証するために `uniqueness: true` オプションを指定できます。以下のようにすると、エラーは解消されます。 ```rb class Profile < ApplicationRecord validates :user_id, uniqueness: true end ``` ## まとめ `validates` メソッドを使用する際は、バ

元記事を表示

【ActiveRecord】length vs size

# 目的
**ActiveRecord**の`length`と`size`について、しっかり理解した上で適切に使いこなせるようにする。
#### 補足
本記事は、レコード数の取得においてSQL文の発行数を抑えることの出来る`length`と`size`にフォーカスしています。
※`count`メソッドは、必ずSQL文を発行するため割愛(比較用で一部記載あり)

# ActiveRecordのlengthとsizeの違い

## `#size`
https://github.com/rails/rails/blob/main/activerecord/lib/active_record/relation.rb#L345-L352
“`rb:rails/activerecord/lib/active_record/relation.rb
# Returns size of the records.
def size
if loaded?
records.length
else
count(:all)
end
end
“`
:::note
– Loadされて

元記事を表示

[Rails] rspec_{ } と () の使い方

# はじめに
rspecでテストを実装していて、以下の箇所で詰まりました…。

“`rb
# NG
expect(subject).to raise_error(RuntimeError, ‘testだよ’)

# RuntimeError:
# testだよ

# OK
expect{ subject }.to raise_error(RuntimeError, ‘testだよ’)
“`

`{}`と`()`の違いだけなのに、テストが成功するか変わりました。
挙動が違うと思い、調べた内容をアウトプットいたします。

# `( )`
仮に、上記のコードで例を挙げます。

– `subject`を評価され、`subject`の結果を`expect`メソッドに渡します
– なので、`subject`を実行した内容で例外があれば、そこで処理が止まります
– テストもエラーになります

流れの結果として、どんな値が返ってきたのかをテストするには、すごく向いています。

# `{ }`
`{…}`で記載したコードは、コードブロックとして評価され、「後で実行される」ことを

元記事を表示

Railsで共通パーツの一部をページごとに変更する方法

## はじめに

アプリ制作の過程で、ヘッダーの一部を特定のページで戻るボタンに変更するという実装を行いました。
ここではその実装過程で得られた気づきをまとめます。

## 本記事の内容
Railsで共通パーツとして使っているものの一部分を特定のページで変更する方法。

## ヘッダーのView
“`ruby:_header.html.erb

元記事を表示

【個人開発】服用管理をする介護者向けのアプリ「medicine-checker」を開発しました【Rails】

# はじめに
初めまして、現在プログラミングスクールにてRuby on Railsをメインに学習している[ikeda](https://qiita.com/orudasulife)と申します。
7/2にアプリをリリースしたので、アプリ紹介と技術、感想をまとめさせていただきます。
初めて記事を書くのでお手柔らかにお願いします。

### サービスURL
https://medicine-checker.com

### GitHub URL

https://github.com/ikedaatusi/medicine-checker

# 開発背景

このサービスを作りたいと思ったきっかけは、私の父親が薬の服用管理が苦手で、薬を飲み忘れることが多かったからです。その結果、何度か救急車で病院に運ばれる事態にもなりました。この問題を解決したいと思い、薬の服用管理をアプリで行うことで、父親のように薬の服用を忘れるがちな人々の健康を守りたいと考えました。

# 機能・アプリ紹介

[![Image from Gyazo](https://i.gyazo.com/55909d76ffc23789

元記事を表示

ラジオボタンの由来、ウェブ関係あるの?

## はじめに
今回はラジオボタンについて少し学習したので、ラジオボタンの実装の流れ、を紹介しようと思いましたが、少しずれて、由来の話。
「なぜにラジオボタン?ラジオ要素はどこ?ウェブと関係あるの?」と疑問に思ったので、紹介したいと思います。

## ラジオボタンとは
![ラジオボタン.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3777936/b2ffa09b-475a-2bef-37bc-6f5a30a5e26e.jpeg)

スマートフォン主流の昨今、ラジオ放送がどこでも手軽に聴けるようになり、**ボタンを押す**という動作がなくなりましたね。
アーカイブも無料で1週間残っているのは大変うれしく思う世代です。

昔は今ではもしかしたら考えられない方もいると思いますが、放送局ごとに割り振られたボタンがいくつも並んでいて、あるボタンを押して選曲すると、押されていた他のボタンが元に戻るという仕組みになっていたそうです。
で、このような仕様のボタンを**ラジオボタン**と呼ぶようになったそうです。

元記事を表示

【Rails】bundle installでGemのインストールはしているのにコンテナやEB環境で認識されない時の対処法

どうもこんにちは。

今回は、タイトルに記載した件について対処したので備忘録として記事にします。

# 環境

Ruby 3.2.2
Rails 7.1.3.3
EB環境 Ruby 3.2 running on 64bit Amazon Linux 2023/4.0.7

# どんなエラーが出ていた?

エラーログをそのまま貼り付けてしまいますが、`Could not find sassc-2.1.0 in locally installed gems (Bundler::GemNotFound)`という部分でどんなエラーかが確認できます。

“`
bundler: failed to load command: rake (/var/app/staging/vendor/bundle/ruby/3.2.0/bin/rake)
/usr/share/ruby3.2-gems/gems/bundler-2.4.10/lib/bundler/definition.rb:524:in `materialize’: Could not find sassc-2.1.0 in locally

元記事を表示

OTHERカテゴリの最新記事