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

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

Ubuntu 24.04に上げたら Rails で libMagickCore-6.Q16.so.6 が見つからなくなった話

## 状況の説明

私のRailsプロジェクトでは、画像処理に`ImageMagick`を利用しており、特に`rmagick`というGemを使っています。Ubuntuを`22.04`から`24.04`にアップグレードした後、アプリケーションをデプロイしようとしたところ、次のようなエラーが発生しました。

“`zsh
LoadError: libMagickCore-6.Q16.so.6: cannot open shared object file: No such file or directory – /deploy/apps/langfix/shared/bundle/ruby/3.3.0/gems/rmagick-6.0.1/lib/RMagick2.so (LoadError)
“`

このエラーは、`libMagickCore-6.Q16.so.6`という`ImageMagick`のライブラリが見つからないことを示しています。

## 原因

Ubuntuのバージョンアップによって、多くのライブラリも更新されます。その結果、依存関係にあるライブラリのバージョンが変更され

元記事を表示

【ElasticBeanstalk】新規環境構築をする時に、DBを作成しなければ!

どうもこんにちは。

今回はRailsを動かすためのEB環境を構築した時にDBの作成を忘れてつまづいたので、メモします。

# 前提

今回は、`RDS`と`ElasticBeanstalk`の作成は済んでいることとして話を進めます。

# ぶつかった壁

`RDS`と`ElasticBeanstalk`を作成し、開発したRailsアプリケーションをデプロイしました。

すると、以下のようなエラーが出てきました。

“`ruby
Unknown DataBase
“`

RDS作成したのにデータベースがない???

# 結論

結論として、RDSを作成しただけでは、データベースは作成されないようです。

RDSは、**データベースを作成するための箱**だと解釈しました。

なので、AWSのセッションマネージャー or SSH接続(`eb ssh`)でEB環境に接続して、データベースを作成するコマンドを叩く必要があります。

以下の手順で作成できます。

“`sh
$ eb ssh
“`

“`sql
> mysql -u ユーザ名 -h ホスト名 -p
— パスワードを求め

元記事を表示

【rails】renderデプロイ時の[ActiveSupport::MessageEncryptor::InvalidMessage]

## はじめに
renderでデプロイ時にcredentials.yml.encの設定がうまくかなかったので、備忘録に。

## 仕様
Rails7
dokcer
render

## デプロイ時のエラー
“`
ActiveSupport::MessageEncryptor::InvalidMessage
“`
暗号化されたメッセージを復号化できていない。
おそらくconfig/master.key の鍵が config/credentials.yml.enc の鍵穴と一致していない。

## credentials.yml/master.key の関係について
master.key を鍵、credentials.yml.enc を鍵穴に例えるとわかりやすいです。

credentials.yml.enc は暗号化されたデータ(例えば、アプリケーションのパスワードやAPIキー)で、このデータを読むためには特定の鍵が必要です。その鍵が master.key です。つまり、master.key を使って初めて credentials.yml.enc に格納された情報を解読(鍵を使

元記事を表示

【gem:Refileの使い方】Railsでの画像投稿機能の実装方法

プログラミング初心者に向けて、Ruby on Railsで画像投稿機能を実装する方法についてご紹介します。今回は「Refile」というgemを使って、[以前解説したRuby on Railsを使って作成したシンプルなToDoアプリ](https://taishi-official.com/2020/04/25/433/)を例に実装していきます。

## 【gem】Refileとは
「Refile」はRuby on Railsのgemで、ファイルアップロードを簡単に実装するためのライブラリです。Refileを使うことで、画像のアップロードやリサイズ、クロップなどが簡単にできます。

またRefileでアップロードされた画像はRailsのActiveRecordを使用して、データベースに画像を保存することができます。GitHub上でオープンソースとして公開されています。

[>> 「Refile」のGitHub](https://github.com/refile/refile)

## 【gem】Refileを使って画像投稿機能の実装
### Gemfileに追記する
ge

元記事を表示

Rails基本アクションをゼロから理解するためのガイド

# はじめに
最近railsを本格的に使うようになりました。
基本アクションに沿ったページ作成ができるとデータ取得などが非常にやりやすいということを痛感しています。
そこで、各アクションがどのような用途で使われているのか違いを認識し適切なものが使えるように説明していきたいと思います。

# 作成
### `new`アクション
– **役割**: 新しいリソースを作成するためのフォームを表示するアクションです。`create`アクションとセットで使用されることが多く、ユーザーが入力フォームにアクセスできるようにします。
– **詳細**:
– **URLパターン**: `/users/new`, `/posts/new`
– **動作**: `User.new` で空のインスタンスを作成し、フォームに渡す。ビューにはフォームヘルパーを使って、フォームのフィールドが表示されます。
– **例**:
“`ruby
def new
@user = User.new
end
`

元記事を表示

【Datadog APM】謎の500エラーとの戦い【ddtrace】

# 概要

– Rails アプリを [`ddtrace`](https://github.com/DataDog/dd-trace-rb) gem を使って Datadog の APM でいろいろ見られるようにしている環境
– 通常は発生したエラーの種類などの情報が表示されるが、今回発生したエラーは原因が不明だった
– 手がかりとなる情報を追加でDatadogに送信し、原因を特定した

# 本編

ある日、Datadogのダッシュボードを見ると、なにやらエラーが増えていることに気づきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325392/1fe466b7-d525-f9e2-bf01-8bed46536191.png)

リクエストをエラー数順でソートすると、`resource name` が `POST 500` となっているリクエストが一番多くエラーになっていることがわかりました。

![image.png](https://qiita-image-store.s3

元記事を表示

Railsでimportmapが読み込めないエラーの発生と解決

## エラーの発生

rails7を使っていると、ブラウザにて以下のエラーが発生した。身に覚えがない。

“`text
An import map is added after module script load was triggered.
Uncaught TypeError: Failed to resolve module specifier “application”. Relative references must start with either “/”, “./”, or “../”.
“`

importmapが読み込めていないらしい。
だがimportmapに手は加えておらず、viewのjavascript_importmap_tagsを設置する位置をheadタグの一番上に変えたりもしたが効果なし。
調べてもそれらしきものは見当たらず、結果として数時間かけてなんとか解決法できたので備忘録も兼ねて書き残す。

## 試したこと

importmapについて色々調べたが、それらしい情報がない。
が、よくよく見てみればエラーは常に出ているわけではなかった。

元記事を表示

Rails 7.2 (Hotwire) でDeviseのログアウトリンクを作成

最近はRailsのアプリ開発から少し離れていましたが、Rails 7あたりからHotwireやYJITなどおもしろそうな動きもあり、またRailsに興味を持ちはじめています。

Rails 7.2のアプリでDeviseのログアウトリンクを作成したとき、Hotwireに対応する方法がわからなかったのですが、以下の情報を見つけました。

https://dev.to/spaquet/rails-7-devise-log-out-d1n

https://discuss.hotwired.dev/t/simple-method-delete-with-confirm/4834

開発中のアプリには以下のように記述して、以前と同様にログアウトができるようになりました。

“`erb
<%= link_to destroy_user_session_path, data: { turbo_method: :delete, turbo_confirm: t("views.confirm_sign_out") }, class: "dropdown-item" do %>

元記事を表示

ShoryukenをActiveJobのアダプターとして利用する際のリトライの挙動を調べた

# はじめに

Gakken LEAPで働いていますkoboriです。普段はRuby on Railsを使用したWeb APIの開発に携わっています。その中でShoryuken というgemに触れる機会があり、リトライ制御について調べた話について書いていきます。

# Shoryukenとは

ShoryukenはAmazon SQSに対応した、スレッドベースのメッセージプロセッサで、RubyGemとして提供されています。ShoryukenはプレーンなRubyプログラムに組み込むこともできますが、ActiveJobのアダプターとしても利用することもできます。
今回の記事では、ActiveJobのアダプターとして利用する場合のリトライの挙動について調べました。

# Shoryukenのリトライ制御について

ActiveJob経由でShoryukenを利用する場合、ActiveJobの`retry_on`メソッドを利用してリトライの設定を行うことができます。
しかし、単純に `retry_on` を定義すると、意図しない挙動になることが [wiki](https://github.co

元記事を表示

[rails]ログイン後に同じページにリダイレクトする

はじめまして!オンラインスクールでRuby on Rails勉強中の初学者です。
この度卒業制作として、「甲子園NOW!」というアプリを作成いたしました。
甲子園球場の試合中の盛り上がりを可視化でき、ファン同士の交流を促進するアプリです。
そのアプリの作成中に発生した問題たちを記事にしていけたらと思います!
皆様のアプリ制作のお役に立てると幸いです^^

開発環境

Ruby 3.2.3
Ruby on Rails 7.1
gem devise

問題

LINE bot APIの実装中に、LINEのメッセージで送ったURLにリダイレクトすると、[ ログインしてください ]のバリデーションが発生しログインしなおしたら、リダイレクトしたかったページに飛べない😭という問題が発生しました。

原因

ログイン後のリダイレクト先をroot_pathに設定していたため。

解決方法

application_controllerに以下を記述。

“`application_controller .

元記事を表示

kaminariの使い方

## 初めに

疑問に思ったことや上手くいかなかったことのアウトプットをしています。
自分なりの理解でアウトプットしていきます。初学者なので誤りもあると思います。
その際はご指摘いただけると幸いです。

## kaminariとは
Railsでページネーションに便利なgem。
大量のデータを効率的に分割し、ページリングされたビューを返す。
gem ‘bootstrap5-kaminari-views’と合わせるとスタイリングも簡単にできる。

## 手順
1.gemfileにgem ‘kaminari’を書く
2.bundle install
3. サーバーの再起動
4.ターミナルでrails g kaminari:config
5.生成されたファイルに1ページあたりのデフォルトのレコード数を書く。
“`config/initializers/kaminari_config.rb
Kaminari.configure do |config|
config.default_per_page = レコード数
end
“`
6.indexアクションでpageスコープを使用。
※req

元記事を表示

SEOを意識したWebP画像の活用とRuby on Railsでの実装方法

## SEO上、Webpが有利

WebPは、従来の画像フォーマットよりもファイルサイズが小さく、ページの読み込み速度を向上させるため、SEOに有利です。これにより、モバイルフレンドリー性が向上し、ユーザーエクスペリエンスが改善され、結果的に検索エンジンでの評価が高まります。

今日は、Ruby on RailsのActiveStorageを使って、どのようにWebpを使っていくかを説明します。

## そもそもWebPとは

WebP(ウェッピー)は、Googleが開発した画像フォーマットで、主にウェブでの画像配信を最適化するために設計されています。WebPは、静止画とアニメーション画像の両方をサポートし、以下のような特徴があります。

### 特徴

1. **高圧縮率**
– WebPは、従来のJPEGやPNGよりも高い圧縮率を提供します。これは、画像の品質を保ちながら、ファイルサイズを小さくすることができます。
– **ロスレス圧縮**: PNGと同様に、画質を一切劣化させない圧縮が可能です。
– **非可逆圧縮**: JPEGのように、多少の画質劣化を伴うが

元記事を表示

RailsでのJWT認証の実装手順ガイド:Gemのインストールからユーザーログインまで

## 1. Gemのインストール
まず、JWTを扱うためのGemをインストールします。gem ‘jwt’をGemfileに追加し、bundle installを実行します。

“`ruby
# Gemfile
gem ‘jwt’
“`

“`bash
bundle install
“`

## 2. 秘密鍵の準備
JWTを署名するための秘密鍵を設定します。これを環境変数に保存するか、Railsのcredentialsに保存します。

“`bash
# .envファイルに追加 (dotenv gemを使用している場合)
JWT_SECRET_KEY=your_secret_key
“`

## 3. JWTを生成するメソッドの作成
コントローラーやサービスクラスで、JWTを生成するメソッドを作成します。

“`ruby
require ‘jwt’

class JsonWebToken
SECRET_KEY = Rails.application.credentials.jwt_secret_key || ENV[‘JWT_SECRET_KEY’]

def se

元記事を表示

【初学者の教訓】gem Sorceryを使う時の注意点とmigrationについて

## はじめに

Railsでアプリを作成中、gem sorceryでユーザー認証機能を追加しようとしたときに起きた出来事と、そのときに学んだ教訓です。

## 結論

– `rails generate sorcery:install`を実行するとUserモデルも自動的に作成されるので、すでにUserモデルを作っている場合は要注意
– 公式をよく読みましょう。
https://github.com/Sorcery/sorcery

## 何があった?

Railsで掲示板アプリを作成していました。User、Post、Commentなどのモデルを作成したところで、「そういえばsorceryってgemでログイン機能作れるんだったな〜」と軽い気持ちでgemをbundle installし、`rails generate sorcery:install`したところ…

“`ruby
web-1 | == 20240827051328 SorceryCore: migrating ======================================
web-1 | — crea

元記事を表示

【Rails】update_attributesが使用できない

## はじめに
Railsのアップデート中にupdate_attributesを使用している箇所でエラーが出たので、その対応をまとめます。

## 問題
以下のように、update_attributesを使用するとエラーが出ます。
“`ruby
@user.update_attributes(attributes)
“`

## 解決方法
Rails6.1からupdate_attributesは使用できなくなりました。
代わりにupdateを使います。
“`ruby
@user.update(attributes)
“`

## 参考

元記事を表示

ポートフォリオで予約サイトを作りました

## はじめに
転職を目的として、未経験からスクールでプログラミングの学習を行った際に制作したポートフォリオです。
学習期間は約4か月、そのうちポートフォリオ制作には1ヶ月半ほどかけています。

また、前職がネットショップだったこともあり、考えやすいだろうと思って予約サイトを制作することにしました。
制作の中で、個人的にこだわったポイントをまとめて紹介します。

## ポートフォリオのテーマ
「お花屋さん発信型のフラワーアレンジメントや花束の予約サイト」
お客さんが、複数あるショップから商品を選んで予約する、お花屋さん限定のモールというイメージです。

## このテーマを選んだ理由
友人がお花屋さんで働いており、お花のアレンジメントや花束などを当日急に来店されたお客さんから注文されると、事前に準備することもできず焦ってしまって大変だという話を聞きました。
また、私自身、花束などを購入したことがなかったとき、どうやって予約や購入をすればいいのか悩んだ経験があります。

お店とお客さん、お互いにすれ違ってしまっているな…と感じたため、お花屋さん側が花束やアレンジ

元記事を表示

Next.js×Railsでdelete画面を作る。

https://qiita.com/gabakugik/items/882d02d12c3a30beea29
の続きで最後の部分の削除を実装していきます。

“`/backend/app/controllers/todos_controller.rb
class TodosController < ApplicationController def index # 日付が新しい順に10件まで取得する @todos = Todo.all.order(created_at: :desc).limit(10) render json: @todos end def show @todo = Todo.find(params[:id]) render json: @todo end def create @todo = Todo.new(todo_params)

元記事を表示

【個人開発】趣味でバンド活動をする私が、練習で使いたいタスク管理アプリを作りました🎸

# はじめに
初めまして。かめと申します。
未経験からのWebエンジニア転職を目指して、学習を続けております。
この度、バンド活動をする社会人に向けた、タスク管理ツール「bandmemo(バンドメモ)」を開発いたしました。

**▼サービスURL**
https://bandmemo-app.com/
**▼GitHub URL**
https://github.com/kame-0707/graduation_bandmemo

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

# 開発した理由
これまで、仕事と両立しながら趣味で複数のバンドに所属してきました。
バンド活動は、実際に体験してみると細かいタスクが多いです。

社会人バンドのタスク内容例

“`
【ライブ運営の場合】
– ライブ会場を抑える
– イベント

元記事を表示

ポートフォリオ・テスト

テスト投稿

元記事を表示

Next.js×RailsでEdit画面を作る

https://qiita.com/gabakugik/items/b0fcc09158d336e9e2a8
これの続きです。

ツリー構造
“`
|– app
| |– favicon.ico
| |– globals.css
| |– layout.tsx
| |– page.tsx
| `– todos
|– components
| |– CreateTodoForm.tsx
| |– DeleteTodoButton.tsx
| |– EditTodoForm.tsx
| |– Todo.tsx
| `– Todos.tsx
“`

todos以下のフォルダ構成
“`
— [id]
|– edit
| `– page.tsx
`– page.tsx
“`

“`/backend/app/controllers/todos_controller.rb
class TodosController < ApplicationController def i

元記事を表示

OTHERカテゴリの最新記事