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

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

Ruby On RailsにおけるjQuery初期設定

# Ruby On RailsにおけるjQuery初期設定
## 背景説明
現在のrailsに即したjQuery導入説明です。
私のような初学者にも伝わる日本語での説明を見つけられませんでした。英語での説明はあったのでこちらにメモしておきます。
ムダな記述が多いです。記述を省ける箇所や訂正箇所をコメントで教えてください。[^1]

[^1]:[参考文献](https://stackoverflow.com/questions/70921378/how-to-install-jquery-and-bootstrap-in-rails-7-app-using-esbuild-without-webpac)

## 初期設定
### アプリを作成します。
“`sh
rails new useJquery
“`
### 作成したフォルダーへ移動
“`sh
cd useJquery
“`
### コントローラーとビューを作成
“`sh
rails g controller tests index
“`
### ルーティング設定
“`ruby
Rails.applicatio

元記事を表示

【Ruby】<< をそのままメソッドの戻り値にするより、[*array, element] を使おう

## はじめに: `<<`をそのままメソッドの戻り値にする? コードレビューをしていると、ときどき以下のようなコードを見かけます。 ```ruby def do_something foo = [] # 処理があれこれ続く # ... # ... foo << 123 end bar = do_something puts bar ``` 注目してほしいのは `foo << 123` の行です。 ここは配列 `foo` に123を追加し、なおかつそのときの戻り値をこのメソッド(`do_something`メソッド)の戻り値にしています。 ```ruby def do_something foo = [] # 以下の1行は2つの意味を持つ # - fooに123を追加する # - 123を追加したfooをこのメソッドの戻り値とする foo << 123 end ``` たしかに配列に要素を追加する `<<` は戻り値としてその配列自身を返しますが、ふだん `<<` を使うときはあくまで要素を追加するだけで、`<<` の戻り値を利用すること

元記事を表示

非同期通信(Ajax)といいね機能について

# はじめに
Ruby on Railsでプログラミングを学び始めてから、非同期通信も取り入れ始めました。
非同期通信という言葉の意味を調べてもなかなか頭に入ってこなくて、思考が停止してしまったり、理解にとても時間がかかりました。

なんとなく自分で考えながら記述できるようになってきたので、きちんと非同期通信と向き合い始めた今のうちに、理解した範囲の内容をまとめてみようと思います。

最後に実際に[「Rails6.1でいいね機能の非同期化を実装した際の書き方」](#rails61での非同期通信の実装)についても記録しています。

# 同期通信と非同期通信の違い
まずは、基本の同期通信と非同期通信の違いをまとめてみます。

## 同期通信とは
同期通信は、ブラウザサーバーがやり取りをする通信方法。
同期通信ではデータを反映させるために、いったんブラウザを全て更新する必要があります。
ページの表示が全て変わるので、切り替わる瞬間にパッと一瞬、画面が白くなります。

![Videotogif (2).gif](https://qiita-image

元記事を表示

RailsチュートリアルにRubocopを導入

こんにちは!学びと成長しくみデザイン研究所の斉藤です。
本記事はRailsチュートリアルの第14章が終わった段階の[リポジトリ](https://github.com/yasslab/sample_apps/tree/main/7_0/ch14)をベースにして、より実践的なものへカスタマイズしていきます。

– カスタマイズ履歴
– [letter_opener_web 導入](https://qiita.com/SaitoJP/items/f86085e6f5580b803a9f)
– RuboCop 導入 <= 今ココ 前回から引き続き、今回は RuboCop を導入します。 RuboCop を導入することでコード整形が自動化され、作業効率が向上します。 ※ RuboCop の概要については公式サイトをご確認ください: https://docs.rubocop.org/rubocop/index.html#overview # 導入手順 ## RuboCop の導入 ### Gemfileへ追加 開発環境に限定してRuboCopを導入します。 ※ R

元記事を表示

【Rails6】ImageMagickからlibvipsに移行する

## はじめに
先日Rails6で画像処理ライブラリを変更するissueをやりました。
具体的には`ImageMagick`から`libvips`に移行しました。

そこで、これから`libvips`に移行したい人のために移行する方法を書いていきます。
それでは、やっていきましょう。

実際のプルリクエストです。参考にしてください

https://github.com/fjordllc/bootcamp/pull/7397

## libvipsに移行する手順
先に全体像を書いておきます。
また、Rails6バージョンを想定していることに注意です。

1. 設定ファイルの修正
1. 既存の`ImageMagick`に対応しているコードを修正する
1. (必要なら)Dockerfile, CI設定ファイルの修正もする

libvipsに移行するだけなら、簡単なのですがアプリによって2の修正箇所が違ったりするので大変です。
以下で詳しく書いていきます

### 1. 設定ファイルの修正
`config/application.rb`ファイルに1行加えるだけで、ライブラリ自体は変更できてし

元記事を表示

RailsにおけるRSpecテストコードで生成されたデータがデータベースに保存されない仕組み

### RailsでRSpecなどのテストコードを実行すると、テストコード内で生成されたデータは通常、データベースに保存されません。これは、テストコードと本番環境を分離し、テストデータが本番データに混入することを防ぐためです。

# 仕組み

RSpecなどのテストフレームワークは、テストコードを実行する前に、以下の2つの重要な処理を行います。

1\. トランザクションの開始: テストコードの実行前に、データベースへのトランザクションを開始します。
2\. トランザクションのロールバック: テストコードの実行後に、トランザクションをロールバックします。

トランザクションのロールバックにより、テストコード内で生成されたすべてのデータ変更はデータベースにコミットされず、本番環境に影響を与えることはありません。

# 例外

一部のテストシナリオでは、テストデータをデータベースに保存する必要がある場合があります。そのような場合は、以下の方法で実現できます。

save! メソッドを使用する: モデルオブジェクトを保存する際に save! メソッドを使用すると、トランザクションのロールバッ

元記事を表示

RailsでDiscordログインを実装する方法

## はじめに
この記事では、Rails7のOAuth機能を使ってDiscordログインを実装する方法について書きます。
– Discordログインを実装したい
– omniauthを使いたいけど、使い方がわからない

と言った人はぜひ読んでくださいね。
それでは、順番に解説していきます。

## Discordログインを実装する手順
RailsでDiscordログインを実装する全体像を先に解説します。
1. Discordの開発者用画面で設定キーを取得する
1. `.env`ファイルを設定する
1. `omniauth`というgemを導入する
1. ログインの処理を記述する
1. ビューにリンクを追加する
1. テストコードを書く

以上になります。
それでは、1つずつ解説します!
### 1. Discordの開発者用画面で設定キーを取得する
[Discord Developer Portal](https://discord.com/developers/applications)にアクセス&ログインしてください
画像付きで解説しますが、全体としては
– `CLIENT_I

元記事を表示

[2024年4月版]DockerでRails環境を作りチーム開発をしようとした話

## 注意!
初めまして、駆け出し大学生エンジニアです。
この記事が初めての投稿になります。各所で見ずらい点があるかと思いますが、温かい目でご覧ください。また、技術的に不足している点があればコメントで指摘していただくと幸いです。
# 0. 背景
現在、大学のサークル活動で**Rails**を使用したWebアプリを開発しています。割と本格的な開発をしたく**Docker**を使用したチーム開発に挑戦しました。チームはまだ2人ですが…w。
その際、環境構築にめちゃくちゃ手こずりました。ざっと3週間ほど…。そんな3週間の苦労をここに記録しようと思います。

# 1.事前準備
今回は、チーム開発を目的としているので異なるPCを2台以上準備していただけると記事の内容を活かせると思います。

# 2. DockerでRailsの環境構築
この記事でDockerの説明は割愛させていただきます。
DockerでRailsの環境を構築するのは下記のサイトを参考にしました。この記事で「**12. サーバーの起動を確認**」まで行ってください。
*「**8. config/database.yml*

元記事を表示

【Rails】レコードの中から、ある項目ごとの最新データを取得する方法

株式会社学びと成長しくみデザイン研究所の藤澤です。

## 前提
データベースに蓄積されたログから、特定の項目ごとの最新のデータを取得したいことがあるかと思います。

例えば、各タスクの実行状況を記録する TaskLog テーブルがあるとします。このテーブルには、タスクの識別コード(タスクコード)、ステータス、作成日時、更新日時が記録されています。
“`rb
TaskLog(id, task_code, status, created_at, updated_at)
“`

そして、テーブルには以下のようなデータが存在するとします。
“`sh
id | task_code | status | created_at | updated_at |
1 | “taskA” | “ok” | 2022/04/01 12:30:00 | 2022/04/01 12:30:00 |
2 | “taskB” | “ok” | 2022/04/02 12:30:00 | 2022/04/02 12:30:00 |
3 | “taskA

元記事を表示

Docker, Rails7.1.3.2で環境構築する

# 初めに
初学者です。
webアプリを個人で開発するために、dockerを使用してruby on railsでの開発環境構築を実施した際の記録を共有します。
公開日時点での最新安定版を使用しています。

この記事で成功する前に一度挑戦し、上手くいかなかった時の記録はこちら。
https://qiita.com/tkhero555/items/87df4562c8745ef0b6ef

## 構築したい技術構成
| カテゴリ | 技術 |
|—|—|
| フロントエンド | javascript/Hotwire/bootstrap |
| バックエンド | ruby3.3.0/rails7.1.3.2 |
| データベース | PostgreSQL16.2 |
| 認証 | devise |
| 環境構築 | Docker / docker-compose |
| CI/CD | Github Actions |
| インフラ | heroku |

## docker関連のファイル作成 ~rails newまで
新しいディレクトリを作成し、docker関連のファイルを作

元記事を表示

Docker, Rails7.1.3.2の環境構築が上手くいかなかった記録

# 初めに
初学者です。
webアプリを個人で開発するために、dockerを使用してruby on railsでの開発環境構築を実施した際の記録を共有します。
公開日時点での最新安定版を使用しています。

本記事ではdockerを使いherokuへのデプロイをgithub actionsで自動化するところまで行いますが、最終的にエラーで行き詰まり、別記事にて再度環境構築をやり直します。

成功した手順のみを参考にしたい方は、こちらの記事を読んでください。
https://qiita.com/tkhero555/items/a1811369c59021077d62

## 構築したい技術構成
| カテゴリ | 技術 |
|—|—|
| フロントエンド | javascript/Hotwire/bootstrap |
| バックエンド | ruby3.3.0/rails7.1.3.2 |
| データベース | PostgreSQL16.2 |
| 認証 | devise |
| 環境構築 | Docker / docker-compose |
| CI/CD | Github A

元記事を表示

【Rails】スキーマ情報が一目でわかるannotate_models

## はじめに

ファットコントローラーよりファットモデルの方が良い、という教えを守った結果、テーブル情報の確認しづらさを感じ調べてみました。

前回の記事でもアノテーションというものを取り上げた気がしているため、もう注釈おじさんと呼んでください🙇

:::note warn
ご覧いただきありがとうございます!
この記事の投稿者は主にRuby on Railsを学習している初学者です。
理解不足な点や内容に誤りがございましたらご指摘いただけますと幸いです。
:::

## 問題
テーブル・ルーティングの情報をできたら一目で確認したい。
ファイルを開いたときに毎回下までスクロールしないと全容がわからない・・・

## 解決方法
gemがありました🥹

https://github.com/ctran/annotate_models

Gemfileの`development`グループへ

“`ruby:Gemfile
gem ‘annotate’
“`
“`
bundle install
“`
ここからは固有のコマンドです.
実行すると`lib/tasks/auto_annota

元記事を表示

stylesheetを読み込ませてCSSを反映させたい

## cssが読み込みされない!!
テキストを何度か見直しましたが原因がわからなかった。

AIに聞いてみたところで解決。
`<%= stylesheet_link_tag "test", media: "all" %>`
stylesheetを読み込ませる記述をviewページの該当箇所に記載する。
(上記に書いてある”test”は読み込ませたいviewファイルの名前をかく。)

#### 忘れると思うので備忘録として
[![Image from Gyazo](https://i.gyazo.com/d1641fd818b76943e1c78ee52f09a344.png)](https://gyazo.com/d1641fd818b76943e1c78ee52f09a344)

今回は`ktests`というフォルダを作ったためkitesを読み込むためにapp>asets>stylesheetsの中にktests.cssを作る必要がある。

その後`<%= stylesheet_link_tag "test", media: "all" %>`を読み込ませたいページに記入すると無事読み

元記事を表示

【学習前に】”Ruby on Rails チュートリアル”の注意点

# 記事を書いた背景について
 Railsの学習にあたって”Ruby on Rails チュートリアル(Rails 7)”( https://railstutorial.jp/ )を利用したのですが何点か躓いたポイントがあったので共有させていただければと思います。

:::note info
気づいた事があれば随時更新できればと思います。
:::

## 1.”Rubular a Ruby regular expression editor”について
### 第6章 – ユーザーのモデルを作成する
 この第6章で正規表現を検証する箇所があります。この箇所において他の方々も躓いているのが散見されました。

:::note warn
結論
1.検証したい文字列を一つずつ入力するのが良い
2.オプションの入れ忘れに注意
:::

#### 1.検証したい文字列を一つずつ入力するのが良い
 教材の内容から複数の文字列をテストしているため、正規表現の検証も一気に行いたいのですが次の画像のように「マッチする文字列が無い」と警告されます。
![image.png](https://qiita

元記事を表示

【RSpec】APIを使うメソッドのテストでVCRを使う【Youtube Data API】

# はじめに
この記事ではポートフォリオ作成中に学んだことを自分のために記録しています。
初学者のため理解が不十分なところがあるかもしれませんが、その場合はご指摘いただけると幸いです。

# やりたいこと
– VCRを使ってAPIを使用しているメソッドのテストを書く

YouTube Data API v3を使用して動画情報を検索するヘルパーメソッドのテストをRSpecで書いていきます。
実装の詳細は下記の記事でまとめているのでよければご覧ください。
[【Rails】Youtube APIを使ってIDで動画を検索する](https://qiita.com/mnmnm_37/items/315033fd8a63f8aad4e8)

# VCRとは?
テストでのHTTP通信を1回目で記録しておき、以降のテストではその記録(カセットと呼ばれるyamlファイル)を使用することで通信の結果を再現してくれるgem。
2回目以降のテストは実際のHTTP通信を行わないため処理が早くなります。
また、APIを使用するテストにおいては何度テストを実行しても割り当てを消費しないというメリットがあります。

元記事を表示

if文の条件部分で代入式があるけど?

# はじめに
[Railsチュートリアル](https://railstutorial.jp/ “Railsチュートリアル”) でRailsの学習をしている中で
気になった箇所があったので知識整理も兼ねて調べた内容をまとめます。

## if文の条件で代入してる
以下のコードにてif文の条件部分にてある変数に代入している箇所がありました。
元々は session[:user_id] が存在すれ真の判定、存在しなければ偽の判定でした。

“`ruby
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.encrypted[:user_id])
user = User.find_by(id: user_id)
:
end

# 元々は以下のコードだった
# if session[:user_id]
# @current_user ||= User.find_by(id: session[:user_id])
# elsif

元記事を表示

【Rails,AWS】SageMakerのエンドポイントをRailsで使用してみる

どうもこんにちは。

今回は、以下の記事でトレーニングしたBERTモデルをRailsアプリケーションで呼び出してみました。

https://qiita.com/PDC-Kurashinak/items/f55d5d9e534f59440313

# 前提条件

上の記事で手順12まで実行できていることを前提として進めます。

# SageMakerノートブックインスタンス側での設定

## 1. トレーニングしたモデルをデプロイ

SageMakerのノートブックインスタンス内で以下のコードを実行します。

“`python
predictor = huggingface_estimator.deploy(
initial_instance_count=1,
instance_type=’ml.g4dn.xlarge’,
endpoint_name=’endpoint-01′ # ここは任意の名前
)
“`

ここで発行したエンドポイントは、「リアルタイム推論」をするためのエンドポイントとなります。
「サーバレス推論」をするためのエンドポイントを発行する手

元記事を表示

There are no versions of nokogiri (~> 1.14) compatible with your Ruby & RubyGems.

Railsに挑戦しようと、かの有名な[Ruby on Railsチュートリアル](https://railstutorial.jp/)に挑戦することにした。
その際に、最初のRailsのインストールで表題のエラーで躓いたので、備忘録としてこちらを執筆。

まずは下記のコマンドでRailsをバージョン指定でインストールしろとのこと。

“`
gem install rails -v 7.0.4.3
“`

上記のコマンドを実行したが、下記のエラーに遭遇。

“`
Fetching nokogiri-1.16.4-x86_64-darwin.gem
ERROR: While executing gem … (Gem::FilePermissionError)
You don’t have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
“`

`sudo`をつけて回避しようと試みる。

“`
sudo gem install rails -v 7.0.4.3
“`

ところが、次は下記のエ

元記事を表示

Railsフィルターにおける条件分岐の落とし穴:不適切な`unless`の使用

## はじめに
Railsアプリケーションの開発では、コントローラーにフィルタを設定することで、アクション実行前に特定の処理を行うことが一般的です。しかし、これらのフィルタ内での条件分岐には注意が必要です。本記事では、`before_action`フィルタ内で不適切に`unless`を使用したことにより生じた問題について解説します。

## 問題の発生
あるRailsアプリケーションにて、日付パラメータの有無に基づいて日付を設定する`parse_date`メソッドが`before_action`フィルタとして設定されていました。このフィルタは、JSONレスポンスを返す`available_slots`メソッドの動作前に実行されるべきでしたが、以下のように誤った条件が追加されました。

“`ruby
def parse_date
@date = params[:date].present? ? Date.parse(params[:date]) : Date.today unless available_slots
end
“`

この`unless`条件により、`availab

元記事を表示

Railsアプリケーションを立ち上げる

プログラミング学習を始めて約2か月。
理解しているのか謎なので自分なりにまとめてみようと思います。

### アプリの内容
タイトル、名前、内容を投稿するアプリです。
(初心者なので細かな設定はしていません。基本の動作を理解するためのものです。)

#### 手順
1.新規アプリの立ち上げ
2.一覧機能実装
3.投稿機能実装
4.保存機能実装

#### アクション
・index  一覧表示
・new   新規投稿
・create   保存

#### 1.新規アプリ雛形作成
今回は「practice_app」という名前でアプリを作ります。
“`ruby
%rails _7.0.0_ new practice_app -d mysql
%rails db:create #データベース作成
“`

モデルの作成。命名規則は「単数形」
“`ruby
%rails g model post
“`

カラムの追加。項目は「タイトル」・「内容」・「名前」、型はタイトルと名前は1行以上になることはないので「string」、内容は長い文章を想定して「text」としました。
“`r

元記事を表示

OTHERカテゴリの最新記事