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

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

Railsであれば便利なコマンドTips

## 環境
Ubuntu20.4
Rails 5.2

## はじめに
railsコマンドのオプションには用意されていないが、あれば便利なコマンドを作成してみました。

## 内容

#### その1

schema.rbの中から、テーブルの一覧を抽出するコマンドです。
app/modelsの配下のファイル一覧を参照してもいいでしょうけど・・・。

“`
$cat ./db/schema.rb | grep create_table | awk ‘{print $2}’ | tr -d [,\”] | nl
“`

このようなイメージの表示となります。

“`結果.rb
1 table_aaaaa
2 table_bbbbb
3 table_ccccc
4 table_ddddd
“`

#### その2

マイグレーションファイルの日付と時間を見やすく成形して表示するコマンドです。

“`
$ls -l ./db/migrate/ | awk ‘{print $8}’ | sed -E ‘s/([0-9]{4})([0-9]{2})([0-9]{2})([

元記事を表示

[rails7]背景画像が表示されない件

## 目的
rails7でwebアプリを作成している途中で、トップページに背景画像を挿入する際に何をやっても挿入されない事態に陥りました。
その問題の解決記事も少なく少しハマったので備忘録として残したいと思います。

#### 対象者
rails7で背景画像を設定したいけどうまくいかない人

## 開発環境
– Rails 7.0.4.3
– ruby 3.1.2
– bootstrap 5.3.3

## 問題
まず背景画像を表示する際にHTMLとCSSを下のように設定しました。

“`top.html

本文

“`

“`top.css
background-image{
background-image: image-url(‘app/assets/images/background.jpg’);
}
“`

これで表示されると思いきや、全く表示されず。画像の欠片も表示されず。
「まぁHTMLとCSS書くの久しぶりやし、設定が間違っているっしょ。調べれば余

元記事を表示

Ruby on Rails5速習実践ガイドを読んで

# はじめに
現在、webエンジニアに転職すべく、プログラミングスクールで学習をしております。RubyonRailsでのアプリケーション開発のアウトプットに先駆けて、本書を学習しました。ここでは、その感想をまとめていこうと思います。(全部書くのは時間がかかるので、わかりにくかったところや、覚書としておきたいところをまとめて書いております。)

# RubyonRails速習実践ガイドを読んで
本書は、10のChapterに分けて解説されていました。それぞれのChapterごとに読んで学んだことと、理解度をまとめていこうと思います。

## Chapter1:RailsのためのRuby入門
このセクションは、本書の前にRuby自体の学習をチェリー本や、アウトプット課題でこなしていたため、知っているものばかりでした。(理解度:5)
– rubyは万物がオブジェクト
– nilとfalseが偽、それ以外が真。
– nilガード:例えば、`number ||= 10`のように書く。これは「もしもnumberがあればnumber、なければnumberに10を代入した上でのnumber」というよう

元記事を表示

Herokuデプロイ時に Precompiling assets failed. が起きた

### 前提条件
“`markdown: バージョン / スペック
macOS: Sonoma 14.5 / M2
Ruby: 3.3.1
Ruby on Rails: 7.1.3
Tailwind CSS: 3.4.3
daisyUI: 4.11.1
Heroku: 8.11.5
“`

“`markdown: 経緯
1. Ruby on Rails に Tailwind CSS / daisyUI を適応
– $ rails new APP_NAME -c tailwind -d postgresql
2. ローカルでは無事CSSが適応されていることを確認
3. Herokuデプロイ時にエラーが起きた
– Precompiling assets failed.
– Error: Cannot find module ‘daisyui’
“`

【参考資料】
– [Install daisyUI as a Tailwind CSS plugin](https://daisyui.com/docs/install/)
– [Heroku スターターガイド

元記事を表示

【個人開発】試聴効率をアップ!動画に直感的にメモを追加できるアプリを開発しました

## はじめに
こんにちは!kato([@k1997022023](https://x.com/k1997022023))と申します。
この度、「[ViMemo](https://vi-memo.com)」 というアプリをリリースしました!
ViMemoは、動画視聴中に時間軸上で直感的にメモを追加できる機能を提供します。
この機能により、メモ取りが簡単になり、メモに登録されたタイムスタンプをクリックすることで、その時間まで動画をスキップできます。
特に長尺動画では、メモを活用することで視聴効率が飛躍的に向上します。

### サービスURL
https://vi-memo.com
### GitHub URL
https://github.com/n-katou/ViMemo

## 目次
1. [作成経緯](#作成経緯)
2. [機能紹介](#機能紹介)
3. [主な使用技術](#主な使用技術)
4. [構成図](#構成図)
5. [ER図](#ER図)
6. [工夫した点](#工夫した点)
7. [今後の展望](#今後の展望)
8. [終わりに](#終わりに)

## 作成経緯

元記事を表示

ActiveRecord のパフォーマンス関連 Tips

## はじめに
これは ActiveRecord のメモリ節約や処理速度向上等のパフォーマンスに関していくつか調べたり知り得たことを書き留めたメモです。どちらかというと API よりバッチ処理に主眼をおいた Tips になります。
またパフォーマンスを重視する場合、コードの読みづらさだったり、バグを仕込んでしまったりとのデメリットとのトレードオフになることも多いのでその点はご留意ください。

## インスタンス化を避ける
ActiveRecord のインスタンス化はかなり時間の掛かる処理です。
例えば CSV を元に何千何万件の登録を行うような処理で、事前に各レコードに対して ActiveRecord のバリデーションやフックアクション(`before_validation`とか)を通したいことがあります。
この時に毎回 `new` して `valid?` していくとめちゃくちゃ時間がかかりますが、一度初期化したインスタンスにデータだけを上書きして使い回すようにするとかなり早くなります。ただし、使い回すことによる副作用もあると思いますのでその点は十分ご注意ください。

## `e

元記事を表示

Rails viewからcontrollerに値を渡す方法

この記事はプログラミング学習者がコードを書く中で得られた内容を備忘録を兼ねて記事にしたものです。間違った所などあればご指摘頂けると嬉しいです。

## 変数の受け渡しについて
Railsで変数を受け渡す時にcontrollerからviewへ受け渡すというのは良くやります。
これまでもコードを書く中で何度も使ってきました。

“`ruby:merchandises_controller.rb
class MerchandisesController < ApplicationController def index @merchandises = Merchandise.with_attached_image end end ``` ```ruby:index.html.erb<% @merchandises.each do |merchandise| %>


<% if merchandise.i

元記事を表示

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

元記事を表示

【個人開発】生成AIを用いた習慣化支援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

元記事を表示

OTHERカテゴリの最新記事