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

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

Rails ActionDispatch::Cookies::CookieOverflowというエラーが出る原因と対策

※この記事は僕がぶち当たった問題をとりあえずChatGPTくんに丸投げしてライティングしてもらったものです。

# 概要
この記事では、Railsアプリケーション内で発生する可能性のあるActionDispatch::Cookies::CookieOverflowエラーについて説明します。
このエラーは、クッキーがサイズの上限を超えた場合に発生します。エラーの原因や、解決するためのさまざまな方法について解説します。

# エラーの原因
エラーの原因は、クッキーのサイズが大きすぎることです。
特に、セッション情報をクッキーに保存している場合、その情報が大量になるとエラーが発生しやすくなります。

# 対策
エラーを解決するためには、以下のような方法を検討することができます。

1. クッキーのサイズを小さくする: 必要な情報のみを保存することで、クッキーサイズを削減します。
2. セッション情報のサーバーサイドへの保存: セッション情報をサーバーサイドのメモリやデータベースに保存することで、クッキーのサイズを減らすことができます。
3. クッキーの分割: クッキーが大きすぎる場合は、複数

元記事を表示

【Rails】Bootstrap4から最新版(ver.5.3)に移行する方法

こんばんは!
今日Bootstrap4から最新版へと移行したので、方法を載せておきます。
実際方法は公式に載っていますし、とても簡単なのですぐ導入できます!
ですが、今回は自分の備忘録として載せます笑

## 過去のバージョンからの移行
今回古いバージョンからの移行となりましたが、特に古いバージョンの記述があっても残しておいて問題ありませんでした。
移行するメリットは最新版でjavascript主体のBootstrapが適用できるということです(Ver.4ではjQueryも使われていましたが、Ver.5以降はjavascriptのみになったそうです。)。オフキャンバスやその他多くの新機能も実装できるようになります。ただ一つデメリットとして挙げられるのは、もともとBootstrap4に対応していた記述が一部使えなくなる場合があることです。おそらくjQueryを使っていた部分やclass変更があった部分かと思います。私の場合は特に移行後も動作に問題ありませんでしたが、部分的にはそのような問題が起きうるかもしれないです。

## 早速導入してみる
1. 以下の記述をlayouts/appli

元記事を表示

【Rails】異なるアクションが読み込まれるエラー(+その他エラー)

今日は新しい機能を実装している際にルーティングを追加し、エラーが出てしまったのでそのエラー解決方法について備忘録として載せたいと思います!
他にもいくつかエラーが出てしまったので、その対処法も書いてみます!
以下紹介するエラー内容です。

::: note alert
エラー1: パスを指定したが遷移時に異なるアクションが読み込まれるエラー
エラー2: ActionTextが正常に表示されない(エラー文は出ていない)
エラー3: app/javascript/packs/application.jsが読み込まれない(コンソール上のエラー)
:::

## エラー1: パスを指定したが遷移時に異なるアクションが読み込まれるエラー
今回はパス自体の記述はあっているのに、遷移した際に違うアクションのページが読み込まれている場合です。ズバリ!ルーティングに問題がありました…というのも、そもそもなぜそのようになってしまっているのかまず説明しますね。
ルーティングをする際にroutes.rbを書きますよね。Railsはパスを読み込むと記述したルーティング順にどのアクションをすればいいか探してい

元記事を表示

[Docker] Rails7 + postgreSQL + bootstrapの環境構築

## はじめに

この記事では Docker を使って rails7 + PostgreSQL + bootstrap の環境構築を行います。

## 環境

– macOS Ventura 13.3.1
– Docker 24.0.7
– Docker Compose v2.23.3-desktop.2
– Ruby 3.2.2
– Rails 7.0.8.1
– PostgreSQL 12.18
– bootstrap5 5.3.2

## ファイルの準備

ファイル構成です。

“`
app
|– Dockerfile
|– docker-compose.yml
|– Gemfile
|– Gemfile.lock
“`

### Dockerfile

“`Dockerfile:Dockerfile
FROM ruby:3.2.2-alpine
RUN apk update && \
apk add –no-cache gcompat && \
apk add –no-cache linux-headers libxml2-d

元記事を表示

【Ruby on Rails】form_withヘルパーの各記述を読み解く

### 勉強前
– form_withヘルパーを使うと自動でフォームを生成 + 登録処理をいい感じにしてくれる?みたい…
 でもどこの記述がどこの画面表示、何の処理に紐づいているのかわからない
– 登録処理はcontrollerのcreateメソッドとセット?

### 調べたこと
– form_withヘルパーでできること
– フォームの生成
– フォームに入力された各要素をconrrollerのcreateメソッド or updateメソッドに渡す
– 登録済みのデータをフォームにデフォルト値として表示する

– labelとxxx_fieldの値は、リクエスト先のメソッドの引数のハッシュ(モデルのパラメータ名)と一致している必要がある

以下サンプルコード
前提として…
– 以下を登録するユーザー登録フォームを想定
– ユーザー名(name)
– メールアドレス(email)
– パスワード(password)
– 確認用パスワード(password_confirmation)

#### controllerのメソッド定義
fo

元記事を表示

【個人開発】漫画好きが漫画とアロマをお勧めする診断アプリを作りました📚

## はじめに
はじめまして、1歳子持ちのshikimum(@abbyE424214)と申します。
完全異業種からエンジニアに転職するためオンラインスクールに入り学習をしていました。
私は漫画が大好きで、漫画に勇気をもらったり慰めてもらったり、セリフを真似したりと、影響受けまくりの人生を送ってきました💪

もっとたくさんの人に漫画を読んでもらいたい、人生を変える1冊に出会って欲しいという思いから、その人にあった漫画をおすすめするアプリを作成しました📚

**「漫画の処方箋」**
ユーザーの疲れタイプに合わせて、あなたにあった漫画とアロマをお勧めします。

https://www.comic-health.com/

[![Image from Gyazo](https://i.gyazo.com/03568b9efa89d71279e9c0877b08a8ca.jpg)](https://gyazo.com/03568b9efa89d71279e9c0877b08a8ca)

https://github.com/shikimum/portfolio

## 使い方
### **1.診

元記事を表示

Railsプロジェクトを新規作成し、Docker化する

## はじめに

最近、Dockerについて学習したので、実際にRailsの新規プロジェクトを作成し、Docker化する手順を書いていきます。

なお、データベースにはPostgreSQLを、オーケストレーションツールには、docker-composeを利用します。Docker Containerは1コンテナ1アプリケーションの構成とします。

補足となりますが、私は以下の学習教材を利用してDockerの理解を深めました。もしDockerについて理解を深めたい方はご参考にしていただけるとよいかもしれません。

– [米国AI開発者がゼロから教えるDocker講座 | Udemy](https://www.udemy.com/course/aidocker/)

## 作業手順
1. 必要なファイルの作成
– Dockerfile
– docker-compose.yml
– Gemfile
– Gemfile.lock
2. Docker Containerの起動とRailsプロジェクトの新規作成
4. database.ymlの編集
5. データベース

元記事を表示

Apache + Passenger + Docker + Docker-composeでRuby on Railsの環境を構築

# 概要
`Docker`と`Docker Compose`を使用して、`Apache`サーバー上に`Phusion Passenger`を動作させ、`Ruby on Rails`を展開する環境を構築します。今のこのご時世にこの構成で`Rails`を動かす事はほぼないと思っておりますので、構築手順は、シンプルに記載します。

# Apacheの概要
`Apache`は、`HTTP`サーバーの一つであり、クライアントからの`HTTP`リクエストを受け取り、ウェブページやウェブコンテンツを提供する役割を果たす

https://httpd.apache.org/

# Phusion Passengerの概要
`Apache`や`Nginx`等の`web`サーバーと連携して使用する。`Passenger`は`Web Application`を処理する為の`Application`サーバーとして機能し、`web`サーバー(`Apache`や`Nginx`)と連携する事で、リクエストの受け入れ、アプリケーションの処理、レスポンスの送信を行う

https://www.phusionpassen

元記事を表示

scopeメソッドとは

## scopeとは

scopeとは、データベースからレコードを取り出すロジックをカプセル化するメソッド。

基本構文は、第一引数に条件式を呼び出すためのスコープ名、第二引数に条件式を記述します。

“`ruby
class モデル名 < ApplicationRecord scope :スコープ名, -> { 条件式 }
end
“`

また、条件式に引数を渡すこともできる。

“`ruby
class モデル名 < ApplicationRecord scope :スコープ名, -> (引数){ 条件式 }
end
“`

## メリット

scopeメソッドを使用するメリットは、以下の3つ。

①モデルとコントローラに正しく役割を分担できる

②可読性が上がる

③DRY(Don’t repeat yourself)に則ったコードを書ける

例)booksテーブルからタイトルが2000円以下で、ジャンルが食のレコードを取り出す場合。

| id | title | genre | price | out_of_stock |
| — | — | —

元記事を表示

【Rails】params[:id]を取得するbefore_actionにindexを指定するとCouldn’t find Template without an ID

# 初めに
削除機能の実装でエラーに遭遇したので書きます。

# 問題
削除ボタンを押したときに、`Couldn’t find Template without an ID` が起きました。

# 解決方法
before_actionにindexアクションを指定していたので削除しました。

“`ruby
# before_action :set_template, only: [:index, :edit, :update, :destroy]
before_action :set_template, only: [:edit, :update, :destroy]

def set_template
company = Company.find(params[:company_id])
@template = company.templates.find(params[:id])
end
“`

set_template で何をしているか?

インスタンス変数 @template に /company_id/templates/id を代入して、templa

元記事を表示

ポートフォリオ作成

# 天気予報日付ごとに表示したい
– OpenWEatherMapAPIを使用して、天気の情報を取得しているのですが取得した予報データが1つの大きな配列に格納されたままとなっており、ビューで日付ごとにデータを扱うの難しいという問題が発生しておりました。
– `group_by`メソッドを使用して、同じ日付の予報データをグループ化してまとめ、配列として取り出すことで、各日の天気情報を区別して表示できるようにしました。
– これにより、ユーザーが一目で知りたい日にちの情報を確認できるようになっております。
– 加えて、取得できる天気のアイコンには2種類あり、取得した時間帯により異なるアイコンが表示されてしまっていたため、gsub(ジーサブ)メソッドを使用して、天気予報のアイコンを常に昼間のアイコンが表示されるようにしました。

“`ruby
def show
@weather_data = get_weather_forecast(@post.latitude, @post.longitude)
end

def get_weather_forecast(latitu

元記事を表示

【個人開発 / PictoMemory】旅の思い出の投稿・地図の色塗り・旅先探しができるアプリを作りました

# はじめに
エンジニア目指して学習中のさば🐟(@saba7678pg)と申します。
2023年6月からエンジニア転職するためにプログラミングスクールで学習を行っております。

これまでの学習の成果として「PictoMemory」という旅の思い出投稿アプリを作成致しました。
アプリの紹介、使用技術を紹介させていただきます。

:::note info
万が一誤り・ご意見・ご指摘事項等ございましたら、
コメントやX宛にDM頂けますと幸いです。
:::

## アプリ概要

サービスURL:https://pictomemory.com
サービスリポジトリ:https://github.com/SabaCrevette/travel_app

[![Image from Gyazo](https://i.gyazo.com/6c85e19c8160cc723eb02581d8bae6bc.png)](https://gyazo.com/6c85e19c8160cc723eb02581d8bae6bc)

旅の思い出を投稿する、CGM型のサービスです。
投稿した都道府県に紐づいて、真っ白な日

元記事を表示

RubyとRailsのバージョンアップで苦労したこと(Gem編)

依頼いただいて久しぶりに言語とFWのバージョンアップの対応を行ったので、苦労した点などを。

PHP(4->5)などのバージョンアップぐらいしか経験がなかったので不安でしたが、なんとかなりました。

### バージョン情報

#### 元のバージョン

– Ruby
– 2.7.4
– Rails
– 6.1.4

#### アップしたバージョン

– Ruby
– 3.2.2
– Rails
– 7.1.3

### やる前に想定していたこと

– 最近参画したプロダクトで知らない箇所しかないので苦労するだろうなぁ
– メジャーバージョンを上げるから、コードの書き方が変わる箇所も多々あるだろうなぁ
– メソッドとかのDeprecateのWarningとかもすごいだろうなぁ
– 設定とかも大きく変わるだろうから、精査しないといけないな
– Gemとかそのままだと動かないものがあるからバージョンアップ必要だろうなぁ
– Gemもそもそも更新止まっていて、更新できないものもあるんじゃないかなぁ
– リリース後にトラブルがあった時に戻す

元記事を表示

プログラミング教材で作ったチャットアプリに機能追加してみた

# はじめに
[こちら](https://www.techpit.jp/courses/195)の講座でチャットアプリを作成したので、追加のお勉強としてメッセージの削除機能を追加してみました。自分の備忘録を兼ねてやったことをメモ的に書いておきます。

# 環境
“`
OS:MacOS 14.1.1(Sonoma)
Ruby:2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin23]
Vue.js:@vue/cli 5.0.8
“`

# 仕様
* メッセージごとに削除ボタンを表示し、クリックすると該当メッセージが削除される
* 削除対象はチャットにログインしている本人が送信したメッセージのみ
* 他人のメッセージには削除ボタンを表示させない
* メッセージ削除に成功するとメッセージ一覧が再取得され、削除したメッセージは画面から消える

# ルートを設定する
* メッセージ削除のルートを追加します
“`config/routes.rb
resources :messages, only: [‘index’, ‘d

元記事を表示

【Rails初心者】いつものform脱却!Action Textとdatetime_fieldの紹介

こんばんは!
今回の紹介は以下の通りです。
1. Action Text
2. 時間のform(datetime_field)

# 環境
AWS Cloud9
Rails 6系

## Action Text
![スクリーンショット 2024-03-01 231109.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677302/c75a7f19-b638-8334-433d-b63891352dcd.png)
普段のformと違い、太字や斜体、箇条書きなどを感覚的に入力できるものです。こちらは導入しないとこのように表示できないため、下にあるURLを参考に導入してください。導入自体は簡単です!

::: note warn
実装時の注意点
Actiontext用のカラムはテーブル作成時に作成しないでください!
モデルに直接書き込みます。
:::

https://autovice.jp/articles/36

## 時間のヘルパーメソッド
カラムのデータ型datetimeにしている場合有効ですが、時

元記事を表示

Railsで特定のコールバックを条件付きでスキップする方法

## 事象

`Rails` アプリケーションにおいて、モデルの `save!` メソッドを使ってデータを生成または更新する際、`before_save` や `after_save` コールバックを用いてデータ更新前とデータ更新後の処理を定義することが一般的です。しかし、特定のビジネスロジックの要件により、`after_save` の処理を条件付きでスキップしたい場合があります。例えば、バッチ処理中には特定のデータ更新後の処理を行いたくない、または特定の条件下でのみ処理を実行したい場合などです。

## 対処法

このような特定の条件下でコールバックをスキップするには、`attr_accessor` を使用してフラグを設定し、そのフラグに基づいてコールバック内の処理を実行するかどうかを制御します。以下はその具体的な実装例です。

“`rb:custom_task.rake
namespace :custom_namespace do
desc ‘特定の処理を実行する’
task custom_task: :environment do
Model.find_each

元記事を表示

form_withのlocal:trueに関して

## はじめに
スクールの課題で、タスク管理アプリを作成しているときに、バリデーションが反映されない事象がありました。Railsのコンソールで、確認するとたしかにバリデーションのメッセージは出るのに、実際にブラウザ画面では出ませんでした。解決したのですが、備忘録として共有させていただきます。修正や追加等ありましたら、コメントいただけるとありがたいです。

## 環境
・MacBookAir 13インチ M1(2020)
・OS:Sonoma 14.3
・メモリ:16GB
・Rails: version 6.1.7.6

## エラーメッセージが出ない
“`Rails
<%= form_with(model: task) do |form| %>
<% if task.errors.any? %>

<%= pluralize(task.errors.count, "error") %> prohibited this task from being saved:

“`
taskの新規

元記事を表示

rails transaction が rollback しないのは マルチデータベースだからかもしれない話

# Rails で意図的に fail させているのに rollback しない!

このようなコードを書いた時には確実に rollback しますが
マルチデータベースの場合は rollback が行われないこともあります。

“`rb
ActiveRecord::transaction do
User.last.update!(name: ‘new name’)
raise ‘hoge’
end
“`

“`rb
class User < UserDatabase end ``` ## トランザクションのスコープ Rails では、トランザクションは特定のデータベース接続に紐付けられ UserDatabase クラスまたはそのサブクラスでトランザクションを開始した場合 そのトランザクションは UserDatabase の 接続先DBでのみ有効になります ## 対象DBにつながっているクラスでトランザクションを開始する ActiveRecord::transaction で開始するのではなく `User.transaction` や `UserDatabase

元記事を表示

activerecord.ja.ymlファイルの便利さ

## はじめに
 Railsで簡単な掲示板サイトを作っていた時に、ページ(今回はプロフィール画面)のカラムが期待通りに表示されておらず、なかなか原因が分からなかった事がありました。
## 環境
ruby 3.14
rails 7.0.3.1
## 目次
事例
activerecord.ja.ymlファイル
別の方法
まとめ

## 事例
 Railsで簡単な掲示板サイトを作っていた時に、profileページが期待通りに表示されませんでした。

![qiita1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3726578/8a8764e4-651a-7673-9c44-ea758a58d44d.png)

メールアドレスや氏名がちゃんと表示されているにも関わらず、アバターだけがAvatarと英語表記になってしまっています。

profiles/edit.html.erb
“`

<%= form.label :last_name %>
<%= form.

元記事を表示

Rails7でjQueryを使えるようにする

## 導入手順

importmapにjqueryを追加する

“` text:console
bin/importmap pin jquery
“`

動作確認も含めて以下を追加
“` js:javascript/application.js
import jquery from “jquery”
window.$ = jquery

$(function(){
alert(‘ok’);
});
“`

ちゃんと動いていたらページを更新すると
アラートが表示されます。

簡単だけどimportmapが全然わからないときめっちゃ困ったから書きました。

元記事を表示

OTHERカテゴリの最新記事