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

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

株式会社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
“`

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

元記事を表示

RSpecを実行するとWebdrivers::VersionErrorが発生する場合の対処方法

## 発生する問題

RSpecのテストを実行すると以下のようなエラーが発生する。

“`
Webdrivers::VersionError:
Unable to find latest point release version for 115.0.5790. You appear to be using a non-production version of Chrome. Please set `Webdrivers::Chromedriver.required_version = ` to a known chromedriver version: https://chromedriver.storage.googleapis.com/index.html
# ./spec/system/tasks_spec.rb:24:in `go_to_project’
# ./spec/system/tasks_spec.rb:14:in `block (2 levels) in


# —————–

元記事を表示

devise_token_authでproviderを変更する

## 概要

RailsのAPIサーバでdevise_token_authによるトークン認証を実装しようとした際に、providerにかなり苦しめられたので、providerを変更する手順について記事にしました。

## やりたいこと
devise_token_authのデフォルトのproviderはemailになっていますが、私はただの文字列(login_idと定義)で認証を行いたかったので、providerを’login_id’に変更したい。これは、usernameなどで認証を行いたい場合も同じで、これから説明することを行う必要があります。

## 方法
以下を行うことでproviderの変更ができます。
– devise_token_authのUserテーブルのproviderを’email’→’login_id’にする
– providerをオーバライド

それぞれについて説明していきます。

## テーブルのproviderを変更
devise_token_authでインストールした直後(devise_token_authをinstallしてからdb:migrateするまで)

元記事を表示

Ruby on Railsのエラー画面の読み方

## 自己紹介
はじめまして、はると申します!
現在はスクールに通いながら学習をしており、学習開始から4ヶ月が経過しました。
 
## 概要
Ruby on Railsでアプリ開発中に出会うエラー画面の基本的な読み方について、
調べたりChatGPTに相談しながら、勉強を兼ねてまとめたものをアウトプットしてみます。
初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです?
(エラー例は、Ruby 3.1.3、Rails 7.0.5で作成した学習時間を記録するアプリで、記事のために意図的に起こしたものです)
 
## エラー画面の見方 例①NoMethodError
![6c5c3b7e63d012d172f585deeee8bd19.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3471604/8a1c7c9e-1f75-92a8-27c0-004a9ec079c1.jpeg)
 
項目の上から順に意味を確認していきます。
 
#### エラータイトル
`NoM

元記事を表示

【rails】【fullcalendar】カレンダーの表示(月週日)切り替え、予定ごとに色を変える

# 経緯
カレンダーの表示切り替えり、予定によって色分け出来たらいいなと思い実装してみました。
環境はrails6,ruby3.1.5です。
jqueryを使う記事が多いですが使わずに実装しました。

# 完成イメージと本記事にて、できる事・できない事
完成イメージ分かりやすいように公式ドキュメントのdemo貼っておきます。

https://fullcalendar.io/demos
## この記事で出来ること、出来ない事
– 出来る
– 予定によって色分け
– 月表示、週表示、日表示の切り替え
– 出来ない
– 表示されてる予定をドラッグアンドドロップで移動
– 詳しい解説(公式ドキュメントにほとんど書いています)

# 実装
それでは実装していきます。

::: note
前提
– 投稿用のMVCとしてPostを使用しています。
– 投稿機能は実装されている前提
– indexページにカレンダーを表示させる。
>カラムは以下を用意
– 予定開始用として`start_time:datetime`
– 予定終了用として`end_time:datetim

元記事を表示

[Rails]仮想カラムをもちいて、ソート機能を実装する

## はじめに
#### 実装したこと
PFでコミュニティサイトを作成しており、投稿一覧にソート機能を実装しようとしております。「いいねが多い順」のソート機能の実装が思ったより難しかったのでアウトプットのため、記事に残します。

#### 動作環境
Ruby 3.1.2
Rails 6.1.7.3

## 手順
#### モデルとカラムの状態
~~~shema.rb
create_table “contents”, force: :cascade do |t|
t.string “title”, null: false
t.text “text”
t.datetime “created_at”, precision: 6, null: false
t.datetime “updated_at”, precision: 6, null: false
end

create_table “favorites”, force: :cascade do |t|
t.integer “content_id”
t.datetime “cr

元記事を表示

ElastiCache for RedisのClusterモード(暗号化)への接続方法 Rails編

# はじめに
AWSでRedis(クラスターモードかつ暗号化)を作成した際、
接続が止まった状態でエラーログも何も出ない。。
ということで何に気を付ければいいか書いていく

## サーバー内接続確認

まずは接続コマンドを入力する。
注意点として
`-c` クラスターモードON
`–tls` 暗号化転送ON
このオプションがないと延々と接続待ちになるので注意
“`
$ redis-cli -h [エンドポイント] -p [ポート番号] -c –tls
“`

ただし、自身のredis-cliの`4.0.10`をインストールしていたが、redis-cliのオプションである`–tls`が使えなかった(ここで詰まった)
“`
Unrecognized option or bad number of args for: ‘–tls’
“`

なのでバージョン6をインストールする
“`
$ sudo amazon-linux-extras install redis6
“`

接続確認して完了
“`
# キー”mykey”に値”Hello, Redis!”をセットする
xx

元記事を表示

異なるOS間でのGemfile.lockの競合を解決する方法

## はじめに

オリジナルプロダクト(ポートフォリオ)のデプロイに向けて、最新のソースコードをAWS EC2に反映させようとしたところ、`Gemfile.lock` の競合が発生しました。
その原因と解決方法についてまとめました。

### 開発環境

– ローカルマシン
– OS:macOS Ventura
– AWS EC2
– OS:Amazon Linux 2
– 共通
– Ruby:3.2.2
– Rails:7.0.6
– Bundler:2.4.13

## エラーメッセージ

EC2 に`git pull`で最新のソースコードを反映させようとしたところ、以下のエラーメッセージが表示されました。

“`
error: Your local changes to the following files would be overwritten by merge:
Gemfile.lock
Please commit your changes or stash them before you merge.
“`

「次のフ

元記事を表示

Ruby on Railsを使ったウェブアプリの全体像を図にしてみた

Ruby on Railsみたいなフレームワークは全体像が分からないとなかなか使いこなせないので図にしてみました。

## 参照にしたUdemy講座

とても分かりやすくRuby on Railsを解説してくれてました!おすすめです。

はじめてのRuby on Rails入門-RubyとRailsを基礎から学びウェブアプリケーションをネットに公開しよう

## 全体像を図にしたもの

Cacooを使用(今までMiroを使ってたけど、ウェブ界隈で人気のCacooを使ってみるとかなり使い勝手が良かったです)

Model, View, Controllerごとに色分けをして、あとはルーティングとかの関係性をまとめました。

Ruby on R

元記事を表示

Railsのルーティング: resources と resource の違いとメリット

# はじめに
Ruby on Railsのルーティングには、`resources`と`resource`の二つの非常に便利なメソッドがあります。これらはRESTfulなルーティングを自動的に生成し、それぞれのコントローラアクションへのパスを簡単に作成することができます。

### resources
`resources`メソッドは、指定したリソースに対する標準的なRESTfulルーティングを自動的に生成します。

例えば、config/routes.rbに以下のように記述すると、
“`ruby routes.rb
resources :users
“`

`UsersController`のアクションに対応した7つのルーティング(index, show, new, edit, create, update, destroy)が自動的に生成されます。また、これらのルーティングに対応したパスヘルパーメソッドも自動的に提供されます。

### resource
`resource`メソッドは、`resources`と同様にルーティングを自動生成しますが、こちらは単数形リソースを表現しま

元記事を表示

ORMとN+1問題

N+1問題はORMを使用する際によく起こるパフォーマンス上の課題です。
N+1問題とは、リレーションシップ(関連付け)を持つ複数のテーブルのデータを取得する際に、1つのクエリでデータを取得する代わりに、関連するデータを1つずつ個別に取得してしまうことによって発生します。

例えば、以下のような場合を考えてみましょう:

“`ruby

# AuthorsテーブルとBooksテーブルがリレーションシップを持つとする
class Author < ApplicationRecord has_many :books end class Book < ApplicationRecord belongs_to :author end # ある著者に所属する本のタイトルを取得するクエリ authors = Author.all authors.each do |author| puts author.books.first.title end ``` 上記のコードでは、著者のリストを取得した後、各著者ごとに関連する本のタイトルを取得しています。 この場合、N+1問題が発生して

元記事を表示

【Rails】TablePlusを使ってローカルDBと接続する方法

プログラミング初学者がローカル環境のDBをTablePlus を使って視覚化出来るようにした方法をメモした記事です。
## 開発環境
Rails 7.0.4.2
Ruby 3.1.2
sqlite3

## 前提
今回はインストールをした状態からの手順となります。
インストールは[こちら](https://tableplus.com/)から出来ます。

## 手順
![スクリーンショット 2023-07-30 16.16.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1374322/bbea180f-f5e8-2ea8-6463-e44a68988468.png)
検索ボタンの左隣にある + を押します。

![スクリーンショット 2023-07-30 16.20.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1374322/33c972e8-2940-b095-d4ec-c0a704ae4f26.png)

元記事を表示

Docker ComposeでRailsアプリ(Rails6.0.6/Ruby3.0.2 + PostgreSQL環境)をdocker化する

# はじめに
今回は既存のrailsアプリケーション環境をdocker化したので、そちらについてまとめていきます。dockerイメージの軽量化のためマルチステージビルドを採用しています。

# マルチステージビルドについて
**マルチステージビルド**とは、複数のイメージを用いたビルド方法のことです。何やら難しそうに聞こえますが、内容としてはシンプルです。
+ `FROM` を複数用意してそれぞれに名前を付ける(これが「**ステージ**」になります)
+ 各ステージは独立した一時的なイメージとして扱い、最終ステージだけが最終的な出力イメージとして保存される
+ 後のステージから前のステージを `–from` を使って参照でき、前のステージからファイルをコピーできる

マルチステージビルドを用いることで、**一つのDockerfileで複数のイメージをビルド**することができます。要は**Dockerイメージのビルドを効率的で、最適化されたものにするためのテクニック**です。

マルチステージビルドを使用する大きな目的は以下の2つになります
+ Dockerfileを読みやすく保守し

元記事を表示

【Ruby】frozen_string_literal: trueとは?

Ruby on Railsでのコーディングの際、`frozen_string_literal: true`というコードが先頭に実装されている場面をよく見かけ、なんだろう?と思い調べてみました。

備忘録としてこちらに残しておきます。

# コード
“`ruby:ruby
frozen_string_literal: true
“`

# frozen_string_literal: trueって何?
– このコード`frozen_string_literal: true`は、Rubyファイルの先頭に書かれるマジックコメントの一つである。
– このマジックコメントがあると、そのファイル内で定義された文字列リテラル(`” “`や`’ ‘`で囲まれた文字列)は全て凍結される。つまり、それらの文字列は不変になり、後から変更できなくなる。
– なぜこんなことをするのかというと、処理の高速化やメモリの節約につながるから。文字列の変更が頻繁に行われると、その都度新しい文字列オブジェクトが生成されてメモリを消費する。しかし、文字列を凍結してしまえば、その心配がなくなる。

# その他、参考にな

元記事を表示

Rails6+attr_encryptedの環境をRails7にアップデートするときにやったこと

## はじめに

Rails6.0からRails7.0(正確には7.0.3)にアップグレードするにあたり、データの暗号化処理をを `attr_encrypted` からRails7の標準機能に置き換えた話を以下にまとめます。

## Rails7にアップブレードする際に発生した問題点

アップグレードの際に以下の諸問題が発生しました。

graphqlのpreloader
https://michiomochi.com/blog/rails-v6047-to-v7023

sessionが見つからない問題
https://ta-watanabe.hatenablog.com/entry/2022/03/14/140128
https://blog.dnpp.org/api_only_rails7_with_devise

Enumerable.sumがRails7から非推奨
https://www.bigbinary.com/blog/rails-7-deprecates-enumerable-sum-and-array-sum

graphql-fragment-cacheが最新だと

元記事を表示

Webhookを活用したMicrosoft Teamsへのメッセージ投稿方法

## はじめに
今回の記事ではWebhookを用いたMicrosoft Teamsへのメッセージ投稿の方法について記述する。
## Webhookとは
Webhookとは、あるシステムに何か特定のイベントが起きた時にサーバーからクライアントに通知するための手法の一つ。APIはユーザーからのリクエストに基づいて情報を提供するのに対し、Webhookは特定のイベントが発生した際に自動的に情報を送信する。

## Microsoft TeamsでWebhookを設定する
– Teamsアプリの右上の三点リーダーをクリック
![](https://github.com/junpei314/Apprentice/blob/main/blog/Webhook1.png?raw=true)
– コネクタをクリック
![](https://github.com/junpei314/Apprentice/blob/main/blog/Webhook2.png?raw=true)
– Incoming Webhookを追加する
![](https://github.com/junpei314/Appren

元記事を表示

Tailwind CSSでフッターを固定する

## はじめに
こんにちは、エンジニア転職を目指してRailsを学習中のチータです!?
現在、ポートフォリオを作成中で、CSSのフレームワークにTailwindを使用しています。
そこで、コンテンツ量の少ないページ(ログインなど)を作成していた際に、フッターが下部に固定されず、フッターの下に余白ができて違和感を感じていました。

## どういう状況か?
今回はログイン画面で説明します。
修正する前のビューのコードとブラウザでの表示は以下のような状況です。
“`html:application.html.erb

.
.

<%= render 'shared/header' %>
<%= render 'shared/flash' %>

<%= yield %>

<%= render 'shared/footer' %>


“`
“`html: sessions/new.html.erb

元記事を表示

OTHERカテゴリの最新記事