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

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

【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ヶ月半ほどかけています。

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

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

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

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

元記事を表示

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

# はじめに
初めまして。かめと申します。
未経験からの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)

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

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

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

元記事を表示

ポートフォリオ・テスト

テスト投稿

元記事を表示

Turbo Streamの主なアクション

## 初めに

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

# Turbo Streamとは
HTMLの断片をリアルタイムで更新するツール。
Java Scriptの動的な更新を知識が無くとも可能にする。

# 代表的なアクション
・append
・prepend
・replace
・update
・remove
・before
・after
“`
<%= turbo_stream.prepend "(IDの名称)" do %>
<%= render @xxxxxx %>
<% end %>
“`
指定した要素をアクションに従って指定したIDを持つ要素の内部に反映する。
# Append
新しい要素を既存のコンテンツの後に追加

# Prepend
新しい要素を既存のコンテンツの後に追加

# Replace
既存の要素を新しい内容で置き換える

# Update
既存の要素の内容を部分的に更新する際に使用する。
※いいね数等

#

元記事を表示

replaceメソッドを活用した関連テーブルの更新

# はじめに

Rubyには“`replace“`というメソッドがあります。

Rubyの配列 (Array) やハッシュ (Hash) などのオブジェクトに対して使われ、対象オブジェクトの内容を別のオブジェクトの内容で置き換えるメソッドです。

https://docs.ruby-lang.org/ja/latest/method/Array/i/replace.html

よく見るのは

“`ruby
a = [1, 2, 3]
a.replace [4, 5, 6]
p a #=> [4, 5, 6]
“`

“`ruby
hash1 = { a: 1, b: 2 }
hash2 = { c: 3, d: 4 }

hash1.replace(hash2)
puts hash1.inspect #=> { c: 3, d: 4 }
“`
この辺りでしょうか??

今回は“`replace“`を配列やハッシュではなく、ActiveRecordと一緒に使ってみることにします。

# replaceを使ったコード例

:::note

元記事を表示

Ruby on Rails コマンドラインまとめ

## 1. Rails New
– **実行方法**: `rails new <アプリケーション名>`
– **できること**: 新しいRailsプロジェクトを作成する
– **実行例**:
“`bash
rails new myapp
“`

## 2. Rails Server
– **実行方法**: `rails s` または `rails server`
– **できること**: ローカル開発サーバーを起動し、アプリケーションをブラウザでテストする
– **実行例**:
“`bash
rails s
“`

## 3. Rails Generate
– **実行方法**: `rails generate <タイプ> <名前>` または `rails g <タイプ> <名前>`
– **できること**: コントローラ、モデル、リソース、スキャフォールドを作成する

### 例:
– **コントローラの作成**:
– **実行例**:
“`bash
rails generate con

元記事を表示

ねえ、知ってた?「Railsドキュメント」はRailsの公式ドキュメントではないんですよ、という話

## TL;DR(最初に結論)

– Railsドキュメント( https://railsdoc.com/ )というサイトはRailsの公式ドキュメントではない
– 最初のとっかかりをつかむために参照するのは良いが、情報の裏取りとして公式サイトの情報も併せてチェックしよう

## はじめに

上記のTL;DRに書いた話をすでに知ってる人や、わかっている人はこの記事を読まなくても大丈夫です。
ですが、Railsを学び始めた初心者プログラマのみなさんは意外と勘違いしている人が多そうなので、注意喚起を兼ねてこの記事を書いておきます。

## 「Railsドキュメント」はRailsの公式ドキュメントではない
Rails関連の調べ物をすると、検索結果の上位によく上がってくる「Railsドキュメント」というサイトがあります。

![Screenshot 2024-08-24 at 11.41.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7465/c29064d5-b9ff-f8d1-311b-5061d95

元記事を表示

Rails7でActive Storageを用いた画像リサイズを行うために必要な準備

Rails初学者の備忘録として、表題の手順を簡単にまとめておきます。
振り返るとだいぶ初歩的な部分で詰まってしまったのですが、自身と同じくActive Storageを全く初めて使う方に少しでも参考になれば幸いです。

## 使用環境
– Rails 7.0.8.4
– Ruby 3.2.1

## 現状・実現したいこと
– ECサイトの商品一覧ページを只今製作中
– とりあえずActiveStorageの導入は済んでおり、Item(商品)テーブル上のimageカラムに画像の登録はできている
– 現在はシンプルに下記コードで画像表示中

“`erb:app/views/items/index.html.erb
<%= image_tag item.image %>
“`
– 下記画像のように、現状、Seedで登録した画像サイズがバラバラで、見栄えがよろしくないので450×300のサイズに統一したい

![スクリーンショット 2024-08-25 17.15.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

OTHERカテゴリの最新記事