Rails関連のことを調べてみた2023年08月05日

Rails関連のことを調べてみた2023年08月05日

Ruby on Railsでカスタム400、500エラーページを作成する方法 – 完全ガイド

## Ruby on Railsにおける標準のエラーページとは
問題が発生した場合に表示されるページで、Ruby on Railsでは、様々な種類のエラーに対応するエラーページが標準で提供されています。

400エラーは、クライアントエラーを示し、通常はユーザーの要求が正しくないことを示します。一方、500エラーはサーバーエラーを示し、アプリケーションが要求を処理するのに問題があることを示します。

Railsのデフォルトのエラーページは、以下のようなものです。

#### 404エラー
![スクリーンショット 2023-08-05 10.52.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35605/3c75728d-6965-5a49-6a70-e8ef43ebbbb5.png)

#### 50xエラー
![スクリーンショット 2023-08-05 10.53.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

Railsで画像を表示する方法、Bootstrapのスタイルの当て方

Railsでアプリを作成時、探し出すのに苦労したのでここに残します。

### Railsで画像を表示させたいとき

Railsでは、HTML方式も使えるし、Rubyも使えるので迷いがち画像を表示させようと、を使用すると、うまく画像が表示させられない。
そんなとき、画像はimage_tagを使うべし!
assets/imagesフォルダに画像を入れ下記のように記述で表示できる。
“`
<%= image_tag 'star.png' %>
“`
 ※ <%= image_tag 'ファイル名' %>

サイズを変えたければ,size: 変えたいサイズで可能
“`
<%= image_tag 'star.png', size:'80x80' %>
“`
 ※<%= image_tag 'ファイル名', size:'変えたいサイズ' %>

cssで変えたい場合は、下記のようにすればクラスが当てられる。
“`
<%= image_tag 'star.png', class:"logo" %>
“`
通常通りcssでクラス別に変更できる。
“`
.l

元記事を表示

s3とslackに同じファイルをアップロードするとエラーになる原因と対処法

# 発生したエラー
下記のコードを実行すると“`Slack::Web::Api::Errors::ParsingError (parsing_error):“`になった。
“`sample_controller.rb
def send_file
file = params[:file]
# s3にアップロード
s3 = Aws::S3::Client.new
s3.put_object(
bucket: AWS_S3_BUCKET,
body: file,
key: file_path,
)
# slackにもアップロード
client = Slack::Web::Client.new
client.files_upload(
channels: channel_id,
file: Faraday::UploadIO.new(file.tempfile, file.content_type),
initial_comment: ‘ファ

元記事を表示

【Rails7】HerokuでActiveStorageとS3を連携させる方法

## はじめに
この記事では、RailsのActiveStorageを用いてAmazon S3に画像をアップロードし、その機能をHerokuで正常に動作させる方法を説明します。
S3を活用することで、アプリケーション側の負担を減らし、より高いパフォーマンスを発揮することができます。

## 前提条件
:::note info
Rails 7.0.6
Ruby 3.2.2
:::
アプリケーションがすでにHerokuにデプロイされており、AWSアカウントは作成済みとします。

## ActiveStorage
ActiveStorageは、`Rails 5.2`から導入された、アプリケーション内でファイルアップロードを簡単に扱うことができる機能です。
ユーザーからアップロードされたファイルを、データベースではなくクラウドストレージやローカルのファイルシステムに保存することができます。

## ActiveStorageのセットアップ
### テーブル作成
ActiveStorageはアップロードされたファイルを直接モデルのテーブルに保存しません。
代わりに、`active_stora

元記事を表示

VScodeでhtml.erbファイルを編集する際入力補正を使いたい

■学習内容
VScodeの拡張機能について

■理解したポイントや参考になった情報
rails課題2からローカル環境で開発することにしたのでVScodeでコーディングしていたところ、html.erbファイルのスニペットが有効ではなかったので自分なりに調べて有効化してみた。

1.拡張機能でrailsと検索し、プラグインをインストール
html.erbの拡張子で文法チェックとスニペットが使えたがhtmlタグのスニペットは有効化されなかった

2.settings.jsonに変更を加えた
 html.erbでhtmlのスニペットを有効化するために、settings.jsonのemmetにhtml.erbにhtmlをインクルードした

左下の設定を開く

検索でemmetと入力し「setting.jsonで編集」を選択

変更を記述
“`settings.json
“emmet.includeLanguages”: {
“html.erb”: “html”
“`

元記事を表示

Railsの日付フォーマット方法まとめ

rails日付フォーマット方法まとめ
1.strftime()メソッドを使う
メリット
・記述が簡単
デメリット
・複数をフォーマットする場合、変更が大変で保守性が悪い

2.config/initializers/time_formats.rbに記述
Time::DATEFORMATS[:id]=”%Y/%m/%d”
と記述しto_s(:id)メソッドでフォーマットする
datetime型はTime、date型はDateで記述
メリット
・保守性が高い

3.I18nでconfig/locale/ja.ymlに記述
lメソッドでフォーマット
メリット
・保守性が良い
デメリット
・言語ごとに記述する必要がある

参考サイト
https://qiita.com/fugo0315/items/2004a8ebf2984aba47c5
https://qiita.com/jnchito/items/831654253fb8a958ec25

元記事を表示

Railsのバリデーションについて

■学習内容
バリデーションについて

■理解したポイントや参考になった情報
1、バリデーションはモデルに記述する場合とマイグレーションファイルを実行してDBで行う場合があるが、両方に書いた方が良い

理由:モデルに書く場合はエラーメッセージの表示などユーザーにわかりやすくスタ得ることができる
DBで行うとサーバー側でDBに直接データを打ち込む時にも対応できる。

2、Not Nullの制約について
モデルでvalidates :column名, presence: true
とする場合は空文字も弾くが、マイグレーションファイルを実行する場合は空文字は弾けない

また、rubyとDBではNullの扱いが異なる点に注意
rubyではnilはfalseとして扱われるが、DBではtrueでもfalseでもない値として扱われる
この違いによるエラーを防ぐためにマイグレーションファイルを実行する際にboolean型のデフォルトの値を設定しておくと良い

元記事を表示

いいね!機能の実装方法

## いいね機能の実装方法をこちらに記載致します。

まず最初にmoelのlike.rbを作成し、その後、ユーザーモデルと投稿にあたるモデルにhas_manyを使って関連づけます。

“`
class Like < ApplicationRecord belongs_to :user belongs_to :shop end ``` ``` class User < ApplicationRecord has_many :likes end ``` ``` class Shop < ApplicationRecord has_many :likes end ``` 続いていいね!ボタンを表示したいファイルでの書き方を説明します。 ボタンを押すことにより、見た目が変化するため、if文を設置する必要があります。 ``` <% if current_user.likes.exists?(shop_id: shop.id) %>
<%= link_to delete_like_path(shop), method: :delete, class: "like-btn"

元記事を表示

email_specのhelperメソッドのチートシート

## はじめに
普段Capybaraでのメールのテストは主に`open_email`を使っているのですが、他にメソッドがあるのか気になってコードを読んだところ、想像していたよりも色々なケースを想定した便利なメソッドがあったのでまとめてみました。(古いからかまとめている記事がなかったので、、、)

読んだコードは下記

https://github.com/email-spec/email-spec/blob/main/lib/email_spec/helpers.rb

https://www.rubydoc.info/gems/email_spec/EmailSpec/Helpers#open_email-instance_method

## メソッド一覧

各メソッドの説明に「メールを取得する」と記載していますが、正確には`Mail::Message`クラスのインスタンスを取得するという意味です。

※コードだけでは理解が怪しい処理は動かして挙動確認もしていますが、もし処理に関して間違ったことを書いている場合はコメントでご指摘いただけるとありがたいです。

### find_e

元記事を表示

【Ruby】空のハッシュに自己代入(+=)したい

# できなかったこと
{}を定義したhashに自己代入演算子を使ったがエラー
“`ruby
hash = {}
hash[:hoge] += 1 # => undefined method `+’ for nil:NilClass (NoMethodError)
“`

# 解決策
ハッシュにデフォルト値0を設定し解決
“`ruby
hash = Hash.new(0)
hash[:hoge] += 1 # => 1
“`

# Hash.new(0)とは?
ハッシュにはキーに対応する値が存在しない時のデフォルト値を設定できる。`Hash.new(0)`でハッシュを生成した場合、デフォルト値が0になる。
設定がない場合、デフォルト値はnilになる。

“`ruby
hash = {} # => {}
hash.default # => nil

hash = Hash.new(0) # => {}
hash.default # => 0
“`

# なぜ自己代入演算子(+=)が使えたのか
自己代入演算子を使わない場合を考えて納得。
“`ruby
hash[:hoge] =

元記事を表示

Webアプリケーションをdocker化する(Ruby on Rails7.0 × postgres12)

## はじめに
本記事はRuby on Rails7.0とPostgresql12で構築したwebアプリケーションへdockerを導入する手順をまとめたものです。
“dockerを導入する”ことにフォーカスした記事となのでrubyやRails、postgresの知識がなくてもお読みいただけます。

## この記事でわかること
– Webアプリケーションをdocker化する方法
– ベースイメージのバージョンの決め方
– Dockerイメージの軽量化
– docker-composeを使うメリット

## フォルダ構成
![スクリーンショット 2023-07-29 17.10.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636274/0b26bc04-3396-6def-d591-bded1c9b7296.png)
今回dockerを導入するにあたって追加したファイルは以下の三つです。上から順に説明していきます。
– Dockerfile
– docker-co

元記事を表示

Active Storageの実際の画像の保管場所はどこ?

## ActiveStorageで保存した画像はどこにあるの?
単刀直入に言うとルートディレクトリ配下のstorageフォルダに入ってる。
[Railsのディレクトリ構造について](http://www.code-magagine.com/?p=4326#:~:text=%E3%81%9D%E3%81%93%E3%81%9D%E3%81%93-,storage,-ActiveStorage%E7%94%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)

そしてファイル保存形式がpngやjpegではない!
データベースに適したBlob型に変換されてstorageフォルダに保存される。

### Blobって何?
> データベース管理システム(DBMS)においてバイナリデータを格納する場合のデータ型である。画像や音声、その他のマルチメディアオブジェクトがBLOBとして格納される。
参考文献:[Blobとは?](https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%BB

元記事を表示

【個人開発】カメラの設定値を共有するカメラ初心者向けサービス「ShotSharing」をリリースしました

## はじめに

こんにちは、@crew_runteq38と申します。
SES企業からWebエンジニア転職を目指しております。
プログラミング学習中の身であるため、技術的な内容に誤りを含んでいる可能性があります。
おかしな記述がありましたらコメント等で教えていただけたらと思います:bow:

## 作成したサービス

サービス名:[Shot Sharing](https://shotsharing.vercel.app/)

![og-image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1865715/fc16a7da-7dfe-52dd-8d0c-fe4108894a54.jpeg)

– サービスURL : https://shotsharing.vercel.app/

– Github : https://github.com/Kaiwa-Jun/shotsharing

## 開発の背景

私の趣味は一眼レフカメラで写真を撮るとこなのですが、一眼レフカメラを趣味にしている方の中で、**

元記事を表示

RSpecの基本 モデルスペック

# RSpecとは
RSpecはRubyで作られたテスティングフレームワークです。単体テストや結合テストなどを自動で行うために使います。

## 特徴
RSpecは主に以下の3つの特徴があります。

**可読性**

RSpecのシンタックスは自然言語に近い形でテストケースを記述することが可能であり、結果的にテストケースがそのままドキュメンテーションとしても機能します。

**柔軟性**

RSpecはRubyのフレームワークとして、テストを記述するための多くの方法を提供しています。これにより、開発者はプロジェクトのニーズに応じてテストをカスタマイズすることができます。

**明示的なテストケース**

RSpecは「describe」と「it」を使ってテストケースを明示的に分類し、それぞれのテストケースが何をテストしているのかを明確にします。

## 最も簡単な例
“`ruby
describe Calculator do
describe “#add” do
it “returns the sum of its arguments” do
expect(2

元記事を表示

Railsのform_withを自分なりにまとめてみた

## はじめに
未経験からプログラミング学習中のkekiと申します。

Railsのログインの仕組みを理解する中で、`form_with` の機能と個人的に難しかった疑問二点を記事にしてみました。
ログイン付近を学習中の方や、その復習をしたい方向けの内容です。
修正・追記あれば随時更新していきます。

## form_withとは
**Railsで情報を送信するためのヘルパーメソッド**です。
`form_with`を使うことにより、簡単に入力フォームに必要なHTMLを作成することができます。
かつての`form_tag`や`form_for`メソッドをひとまとめにした大変便利なものです。
以下のような初期設定があります。

– デフォルトでは`POST`メソッドの処理がされる
– デフォルトではid属性やclass属性は付与されない
– デフォルトで`remote: true`が付与
– 関連モデルがある場合はモデルを指定し、ない場合はURLを指定する

## 主な機能
大きく6つにまとめました。
1. **自動的に送信先のアクションをcreateかupdateに振り分けてくれる**

元記事を表示

既存のRailsアプリ(Postgres使用)をDocker化する手順

Dockerとdocker-composeについて学習し既存のRailsアプリをDocker化したので、その手順をまとめたいと思います。完成版は[こちら](https://github.com/yokoyamamn/rails-docker)です。

# 前提
– Dockerの基礎知識については学習済みと仮定します。
– 今回使用する既存のRailsプロジェクト名は`rails-docker`になります。
– DBはpostgresのversion12を使用します。
– ホストのファイルシステムとコンテナのファイルシステムを同期させます。

# 手順
大まかに以下のようになります。
– `database.yml`の編集
– プロジェクト直下にDocker関係のファイル作成
– `Dockerfile`の編集
– `compose.yaml`の編集
– docker-composeで起動
– `localhost:3000/`にアクセスできるか確認

## `database.yml`の編集
以下のように記述します。`password`のところは環境変数を設定します。
“`ru

元記事を表示

株式会社PAMテスト

元記事を表示

Qiitaの長期インターンに参加して。

はじめまして。こんにちは。

# これは何の記事?
私ごとですが、先日Qiitaの長期インターンを退職してきました。2月から始めたので約5ヶ月くらいですかね。
この記事では私がQiitaのインターンに参加して思ったこと学んだこと、これからエンジニアのインターンに参加したいと考えている学生さんたちに伝えたいことを書いてきます。

# なぜQiitaのインターン?
私がちゃんとwebアプリケーション開発を始めたのは2022年の秋頃でした。HTML, CSSのベーシックなところから始まり、年末ごろにはvue.jsで一つアプリケーションを公開したりしていました。
次はReactで何か作ってみたいなぁと勉強を始めた頃に、唯一のエンジニアの友達に「インターンとかやらないの?」という誘いを受けてインターンに参加してみようとなりました。その彼が参加していたインターンがQiitaだったので、自分もそこに応募してみたという感じです。

ちなみに興味がある方はこちらから応募できます!

採用情報


![Screenshot 2023-07-30 at 21.03.

元記事を表示

【Rails】リンクで言語を切り替える方法

オリジナルアプリ製作中にこの機能の実装をしたかったので、調べて実装してみました。
(間違いありましたらご指摘いただけますと幸いです。)

# 1.デフォルトの言語などの設定

“`application.rb
config.i18n.available_locales = %i(ja ko)
#()の中にjaやko等、使用可能な言語の記載を行う
config.i18n.enforce_available_locales = true
#enforce_available_localesをtrueにすることで上記以外の言語の際はエラーを発生させることができる
config.i18n.default_locale = :ja
#デフォルトの言語を設定する
config.i18n.load_path += Dir[Rails.root.join(‘config’, ‘locales’, ‘**’, ‘*.{rb,yml}’).to_s]
#ymlファイルを読み込む設定をする
“`

# 2.コントローラー

“`appl

元記事を表示

devise導入後ログアウトできないエラーの解決

deviseを導入してログアウトの時にcreated at に関するエラー文が出ていた。
migration fileに

“`ruby
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at

## Rememberable
t.datetime :remember_created_at
“`

これを記述したら解決した。

元記事を表示

OTHERカテゴリの最新記事