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

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

Rails7.2をちょこっと試す(少し静かな rails new 編)

# はじめに
Rails 7.2.0 beta1 がリリースされたので、ちょこっと試してみました。

Rails 7.2 では、`rails new` のときに `bundle install` が `–quiet` オプション付きで実行されるようになりました。

## Rails 7.1

Rails 7.1 では、`rails new` を実行したときに `bundle install` が `–quiet` オプションなしで実行されます。
bundle install による出力が表示されます。
“`shell
root@2d5740c8a6b6:/app# rails -v
Rails 7.1.3.3
root@2d5740c8a6b6:/app# rails new sandbox –database postgresql
create

run bundle install

“`

## Rails 7.2

Rails 7.2 では、`rails new` を実行したときに `bundle i

元記事を表示

【個人開発】3日坊主からの脱却を支援するRPGアプリを開発しました⚔️🛡️🪄

## はじめに
こんにちは![MaTTa](https://x.com/RckLVnPtRv61824)と申します。プログラミングスクールRunteq50期生です。
この度、卒業制作として[**「3日目に魔王がいる**」](https://mao-the-3rd-day-front-e8eb3156d3f2.herokuapp.com/)というWEBアプリを開発し、MVP*リリースいたしました!
往年のレトロ RPG の世界観をベースにしており、AIによるオリジナルアバター生成やバトルモード、ショップなど様々なゲームフィケーション要素を通じて**日々の記録の習慣化を支援**します。
開発はまだ続きますが、一旦ご紹介させてください 💡

*Minimum Viable Product: 最小限のプロダクト

:::note info
アプリ開発初学者のため、解釈の誤りや、妥当でない設計を含む場合があります。
ご指摘・アドバイスなどありましたらコメントにお寄せいただけますと幸いです。
:::

## サービスURL
https://mao-the-3rd-day-front-e8eb31

元記事を表示

pry-byebugを使ってRuby on Railsでのデバッグ

Ruby on Railsでアプリケーションを作成するうえで、必ずエラーに遭遇します。そのためエラーを解決する能力というものが、開発を行う上で必須の能力となります。

今回はこのエラーが発生した際に、どうすればエラーを解決できるかという方法についてご紹介します。最初はエラー画面が怖いものですが、エラー対応を身に着けることで飛躍的に成長できるので頑張りましょう!

## 「pry-byebug」の使い方

「pry-byebug」とは?については、下記リンクにて説明があります。気になる方は、こちらをご覧ください。それでは早速ですが、使い方について説明します。

[>> 「pry-byebug」とは?](https://taishi-official.com/2021/05/21/729/#toc1)

### 「pry-byebug」のインストール
Gemfileのgroup :developmentの最後に、以下の追記をすることで使用できます。

“`ruby:Gemfile
group :development do

gem ‘pry-byebug’
end
“`

元記事を表示

【Rails6】ラジオボタンの使いづらさ解消 & Bootstrap5.3を使ったレイアウト調整

# はじめに
Railsを使って学習を進めていると、機能として動いてはいるんだけどなんだか使いづらい…という場面に多々遭遇します。
今回は、絶妙に使いづらかったラジオボタンの使い勝手を、ちょっとだけ向上させたときの内容をご紹介します。

## 基本の記述
form_withでtext_fieldなどを呼び出すときのように、ラジオボタンを作成しようと思うと、以下のような形になります。
“`html:絶妙に使いづらいラジオボタン
<%= form_with model: @item, url: items_path do |form| %>

<%= form.radio_button :is_active, :true %>
<%= form.label :is_active, "公開" %>

<%= form.radio_button :is_active, :false %>
<%= form.label :is_active, "非公開" %>

<% end %>
“`
これでもラジオボタン自体は表示されるのですが、このままで

元記事を表示

【Rails】初心者がform_withを使うときに気を付けるポイント

# はじめに
form_withとは、Railsでデータを送るときに使うヘルパーメソッドです。

https://railsguides.jp/v6.1/form_helpers.html

このform_withを扱う時に、初心者の私が勘違いしていたことや、うっかり忘れてしまいがちだった部分をご紹介します。

## 1. modelで渡している@​listとかって何者なのか
“`html:ビュー
<%= form_with model: @list do |f| %>
<% end %>
“`
form_withで新規登録フォームを表示したり編集用のデータを呼び出したりするためには、オブジェクトに紐づける必要があります。

新しくデータを作りたいときは、
List.new
更新をしたいときはどのデータを編集するか判別するために
List.find(1)
などをこのmodel部分で指定します。

これをコントローラから指定するために、
“`ruby:新規作成の場合
def new
@list = List.new
end

元記事を表示

AL2023内のElastic Beanstalk環境でbundle exec rails c (rails console) する方法

# 結論

“`ruby
gem ‘irb’, require: false
“`

がある状態で、

“`bash
eb ssh
“`

して、`rails c`するならこう。
“`bash
sudo su -c ‘env $(cat /opt/elasticbeanstalk/deployment/env | xargs) su webapp -c “cd /var/app/current ; bundle exec rails c”‘
“`

じゃなくて必要な環境変数を持った状態で`webapp`ユーザになるだけならこう。
“`bash
sudo su -c ‘env $(cat /opt/elasticbeanstalk/deployment/env | xargs) su webapp’
“`

# Gemfileについて
ここはちょっと自信がない部分。
Ruby2.5までは明示しなくても`irb`が利用できたけど、2.6以降はGem化されたらしく、使用するのであれば明示的に書いておく必要があるらしい。
ただ、アプリケーションとして必要なわけではないことが多い

元記事を表示

railsのemail_fieldのバリデーションが効かない

## 発生した事象
フォームヘルパーのemail_fieldにはバリデーションがあります。
email形式でない文字を入力した際に「メールアドレスに「@」を挿入してください~」というような文言が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1328154/0a58c8f7-177e-8c9a-e6dd-3e7369cd399b.png)

該当コード
“`erb

<%= form.label :name, style: "display: block" %>
<%= form.text_field :name %>
<%= form.label :email, style: "display: block" %>
<%= form.email_field :email %>
<%= form.submit %>

“`

この

元記事を表示

【RSpec】2次元hashでincludeマッチャを使うときの注意点

## 直面したエラー
“`terminal
$ docker-compose exec api bin/rspec –only-failure
Failure/Error:
expect(JSON.parse(response.body)).to include({
‘user’ => {
‘id’ => user.id,
‘user_name’ => user.user_name,
‘email’ => user.email,
}
})

expected {
“user” => {
“created_at” => “2024-05-29T10:00:43.356+09:00”,
“deleted_at” => nil,
“email” => “test@gma

元記事を表示

【個人開発】管理栄養士国家試験対策サービスを開発しました

# はじめに
初めまして、[よしき](https://x.com/eiyou_quiz)と申します。
今回、管理栄養士国家試験対策サービス「栄養士マスタークイズ(eiyoushi-master-quiz)」を開発しました。
初めての記事執筆なので拙い点も多いかと思いますが、その点何卒ご了承ください。

もしよろしければ最後までご覧ください!

# サービス名 : 栄養士マスタークイズ

▼ サービスURL
https://eiyoushi-master-quiz-1d4150fdbd38.herokuapp.com/

▼ Githubリポジトリ
https://github.com/Urubu495/eiyoushi-master-quiz

## サービス概要
このサービスは管理栄養士国家試験の対策をサポートする学習支援アプリです。
過去の試験問題を利用してユーザーに出題し、試験対策のための学習をサポートします。

### サービスを作成した背景
このサービスを作った理由は、私が管理栄養士国家試験の試験勉強をしていた頃、勉強する際には基本的に参考書(主に過去問集)を利用して勉強し

元記事を表示

Ruby breakとthrow&catch

## Rubyのネストされたループでのbreakとthrowの使い方

今回は、ネストされたループで特定の条件を満たしたときにループを脱出する方法の`break`と`throw&catch`の2つの違いを紹介します。

### break

`break`は、内側のループのみを脱出する際に使用します。外側のループは続行されるため、全ての組み合わせが試行されるまで処理が続きます。

以下のコードでは、`vegetables`の配列と`amounts`の配列をそれぞれシャッフルしながら繰り返し処理を行っています。`vegetable`が`’onion’`で`n`が`30`のときに`break`を使って内側のループ(amounts)を脱出しますが、外側のループ(vegetables)は続行されます。

“`ruby
vegetables = [‘cabbage’, ‘onion’, ‘eggplant’]
amounts = [10, 20, 30]
vegetables.shuffle.each do |vegetable|
amounts.shuffle.each do |n|

元記事を表示

【Rails7】WebアプリにGoogleアカウントでログイン

# はじめに
Railsで開発中のWebアプリにGoogleアカウントでログイン出来るようにしたので、
記憶の整理を含めて記事に記述していこうと思います。

# 1.開発環境
MacOS
Ruby:3.2.3
Rails:7.0.8
Postgresql:16

# 2.事前準備
https://zenn.dev/yoiyoicho/articles/c44a80e4bb4515
上記の記事を参考にGoogle Cloud Platformに登録してAPIの設定を行い、クライアントIDとクライアントシークレットの準備をします。

# 3.事前知識(知っている方はスルーで大丈夫)
事前知識としてChatGPTから引用しながら以下にまとめます。
仕組みを学び、処理の流れを理解するとエラー発生時に何が原因か判断出来るようになり、沼りにくくなるので事前知識はとても大事だと個人的には思っています。下記を見て分からない箇所があればChatGPT等のAIと認識の摺り合わせをするのもおすすめです。

### OAuth
OAuthは、アクセス権限の認可を行なうためのプロトコルで、アプリがユーザーの

元記事を表示

Ruby on rails の環境構築方法(初心者用)

# Ruby on rails の環境構築方法
(初心者向け)自身の備忘としてアウトプットしています。

### 1.環境構築の準備
ターミナルにて環境構築の準備を行います。
Command(⌘)とスペースバーを同時に押すと、以下のようなSpotlightというウインドウが開くので、「ターミナル」と検索してアプリを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984055/fc6e9eda-4266-a1fc-d9fe-4e647124abca.png)

### 2.Rubyのバージョンを確認する。
Rubyのバージョンを確認してみましょう。ターミナルを開き、以下のコマンドを実行してください。
“`
rbenv versions
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984055/d13dd8fa-0b55-804d-42b9-93e2625121a

元記事を表示

【DeviseTokenAuth】パスワード変更時に変更通知メールを送信する方法

## 設定を記述

設定を記述する。

“`rb:config/initializers/devise.rb
Devise.setup do |config|
# …
config.send_password_change_notification = true
end

“`

## メール内容の変更

メール内容を変更する。

“`erb:app/views/devise/mailer/password_change.html.erb

<%= t(:hello).capitalize + '、' + @resource.name %>さん。

<%= @resource.email %>のパスワードが変更されました。

“`

## 参考ページ

https://github.com/heartcombo/devise/blob/a259ff3c28912a27329727f4a3c2623d3f5cb6f2/lib/generators/templates/devise.rb#L134

https://github.com/he

元記事を表示

【個人開発】お酒&おつまみの組合せを情報共有、AIで組合せ提案できるアプリを作りました

# はじめに
はじめまして、ゆうと(@bitter-or-sweet)と申します。
異業種からエンジニアに転職するため、プログラミングスクールで学習しています。
先日、お酒&おつまみの組合せを情報共有、AIで組合せ提案できるアプリをリリースしましたので、紹介させていただきます。

## 目次
[1.自己紹介](#1-自己紹介)
[2.アプリの紹介](#2-アプリの紹介)
[3.技術構成](#3-技術構成)
[4.こだわった点](#4-こだわった点)
[5.今後について](#5-今後について)
[6.おわりに](#6-おわりに)

# 1.自己紹介
工業高等専門学校卒業後、4年間電気設備工事の施工管理をしていました。
学生時代、専門科目としてC言語があり、初めてプログラミングを経験しましたが、基本についてしか学ばず、あまり実用性を感じることができませんでした。
就職後、業務改善を目的とした施工管理アプリ、社内システムなどに触れ、ITがどのように社会に貢献しているのかを実感しました。その後興味を持ち始め、利用者側ではなく開発者側として関わりたいと考え、転職を決意し、学習を始めました。

#

元記事を表示

bin/devでデバックができない時の解決方法

## 問題
Rails7から’webpacker’ではなく、’foreman’を用いてCSS・JavaScriptの最適化を行うようになりました. そのため、CSS・JavaScriptの最適化が必要であれば、`bin/dev`でサーバーを立ち上げることになりますが、この’foreman’は、標準入力を適切にハンドリングできないため、`byebug`などのデバッグツールを利用しようとすると入力できません.

## 解決方法

– ForemanとRailsサーバーを別々に実行.

Procfile.devから、以下を削除し、別々に起動します.

“`diff_c:Procfile.dev
– web: bin/rails server -p 3000
“`

“`
$ bin/rails s
$ bin/dev
“`

docker利用時には以下のような感じで docker-compose.yml を記述すれば大丈夫です.

“`yml:docker-compose.yml
version: ‘3.8’
services:
db:

~ 省略 ~

web:

元記事を表示

Rails7以前と以降でwhereなどで取得したクエリ結果を任意の順序にする方法

Rails7からクエリ結果を任意の順序にする便利なメソッドが追加されていることに気づいたので、Rails7以前と以後での方法をまとめました.

## 結論
* Rails7以降 – 新たに追加された`in_order_of`を使用.
* Rails7以前 – gem [‘order_as_specified’](https://github.com/panorama-ed/order_as_specified)の`order_as_specified`を使用.

## 問題
Active Recordを用いて、以下のようにidの配列の順番にソートしたいケースがある.

“`rb
users_id = [2, 4, 6, 3, 1]
User.where(id: users_id)
“`

しかし、これでは配列に格納された順番に関係なく、自動的にソートされてしまう.

## 解決方法

### Rails7 以前
gem [‘order_as_specified’](https://github.com/panorama-ed/order_as_specified)の`ord

元記事を表示

ECサイト開発におけるdestroy_allの使用例

# はじめに
チーム開発が無事終了し、振り返りに躓いたところをアウトプットしています。
今回はECサイトを作成する中で、カートの中身を空にするために、destroy_allを使用しました。
検索しても良い記事が見当たらず…実装するのにものすごく時間がかかってしまったので使用例を紹介しようと思います。

# destroy_allとは

Railsにはdestroy_allというActiveRecordのメソッドが用意されています。

ActiveRecordとは

Ruby on Rails で使用されるデザインパターンの一つです。
主な機能は下記です(まだまだあります)
①データベーステーブルとオブジェクトのマッピング
②CRUD操作のサポート
③バリデーション

今回は削除機能なので、②のCRUD操作サポートになります!

destroy_allは文字通り指定したレコードを全て削除することができるメソッドです。
例えば、データベース上の全てのItemを削除する場合は以下です。

“`
Item.dest

元記事を表示

[Rails7]application.bootstrap.scssの変更が反映されない

## 目的
Rails7でbin/devコマンドでサーバーを起動させた際に、エラーが起きたのでその解決方法を共有しつつ備忘録として残します。

## 開発環境
– rails 7.0.4.3
– ruby 3.1.2
– Bootstrap 5.3.3
– Popper.js 2.11.8

## 解決方法
#### 事の始まり
下記の記事を参考にRails7にBootstrap5を導入しました。

https://qiita.com/PJZ9n/items/03341f942c2c84713c99

無事bootstrapの導入が終わって動作確認をしていた際に、`application.bootstrap.scss`の変更がブラウザに反映されないことに気づきました。
これはおかしいと思って色々調べたり、試してみました。

#### Rails7では`bin/dev`を使う
投稿者は開発途中でrails6からrails7にアップデートしました。
アップデート後も`rails s`コマンドで何も問題なくサーバーが起動されていたので、そのまま`rails s`コマンド

元記事を表示

ActiveStorageを使用しての画像のリサイズがうまくいかない時

# はじめに
チーム開発が無事終了し、振り返りに躓いたところをアウトプットしています。
今回は正しくActiveStorageを導入し、リサイズの記述をしているはずなのに、リサイズされない現象が起きました。
解決方法をまとめています。

# ActiveStorageの導入手順
まずはじめに、ActiveStorageのインストールを行います。

“`
$ rails active_storage:install
“`

インストールが終わるとdb/migrateディレクトリ内にActiveStorageのマイグレーションファイルが追加されます。
これをmigrateします。

“`
$ rails db:migrate
“`

ActiveStorageを使用して画像表示をするためには、どのモデルで画像を使用するのか宣言する必要があります。
今回はItemモデルに記述していきます。

“`app/models/item.rb
class Item < ApplicationRecord has_one_attached :item_image end ``` これでA

元記事を表示

AWS FargateでRakeタスクを定期実行する

## 実現したいこと
– 従来はWheneverでcron定義を自動生成し、EC2上で定期バッチを実行させていた
– EC2からFargateへのインフラ移行に際して、定期バッチもFargateで実行できる形にしたい
– 定義の反映はアプリケーションのCI/CDに載せて自動化したい
(「手作業でECS Schesuled Tasksを編集する」のような形は避けたい)
– 定義は設定ファイルで構成管理したい
(「スケジュール追加スクリプトを実行する」ような形は避けたい)

## 選択肢

1. CloudFormation でEventBridgeルールの定義を行い、CircleCI 内で`aws cloudformation deploy` を実行する
2. [ecschedule](https://github.com/Songmu/ecschedule)(ECS Scheduled Task 設定を管理する gem)を使い、circleci 内でコマンドを実行する
3. [Elastic Whenever](https://github.com/wata727/elastic_wh

元記事を表示

OTHERカテゴリの最新記事