- 1. 【Rails】レコードの中から、ある項目ごとの最新データを取得する方法
- 2. Docker, Rails7.1.3.2で環境構築する
- 3. Docker, Rails7.1.3.2の環境構築が上手くいかなかった記録
- 4. 【Rails】スキーマ情報が一目でわかるannotate_models
- 5. stylesheetを読み込ませてCSSを反映させたい
- 6. 【学習前に】”Ruby on Rails チュートリアル”の注意点
- 7. 【RSpec】APIを使うメソッドのテストでVCRを使う【Youtube Data API】
- 8. if文の条件部分で代入式があるけど?
- 9. 【Rails,AWS】SageMakerのエンドポイントをRailsで使用してみる
- 10. There are no versions of nokogiri (~> 1.14) compatible with your Ruby & RubyGems.
- 11. Railsフィルターにおける条件分岐の落とし穴:不適切な`unless`の使用
- 12. Railsアプリケーションを立ち上げる
- 13. RailsでURLからidを取得する方法
- 14. FactoryBotでhas_oneの関連付けを表現する。traitの基本的な使い方。
- 15. 【Rails】erbからslimへ変換したい方へ
- 16. 備忘: Railsで古い日付を JST の TimeWithZoneに変換すると時刻がずれる
- 17. local: trueって何だろう?って考察した話
- 18. 【Rails】メモ書きしたコメントを一括で見る機能
- 19. 【RSpec】フレーキーなテスト(たまに落ちるテスト)の直し方
- 20. Railsの動的プルダウンリストで`include_blank: true`を削除した際のJavaScriptの不具合とその解決法
【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
“`上記のコマンドを実行したが、下記のエラーに遭遇。
`sudo`をつけて回避しようと試みる。“`
sudo gem install rails -v 7.0.4.3
“`ところが、次は下記のエラーに遭遇。
“`
ERROR: Error installing rails:
There are no versions of nokogiri (~> 1.14) compatible with your Ruby & RubyGems. Maybe try installing an older version of the gem you’re lookin
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
RailsでURLからidを取得する方法
## はじめに
RailsのCRUDを学習し直すために、簡易的な勤怠管理アプリを作成したため、自分用の備忘録としてまとめてみました。基本的なものだけを紹介しているので、より詳しく知りたいものについては適宜ご自身で調べながら読み進めて頂けると幸いです。また、こちらはプログラミング初学者がまとめた記事となりますので間違っていることがあるかもしれません。その際はご指摘等頂けると幸いです。宜しくお願いします。
## 本記事の内容
Railsでよく使われる文法の解説。## 対象者
Railsのparamsについての基礎が抜けていたので備忘録としてメモです
もしかしたら間違っているところもあるかもしれないので、その際は優しく指摘頂けると幸いです🙇🏼♂️
# “` find_by “`メソッドの使い方
特定のidの投稿を取得するために“` find_by “`を使う
“`ruby
post = Post.find_by(id:3)
“`
のような感じこうすることによってデータベースから特定のidを持った値を取得できる
# “` URLにidを含める 方
FactoryBotでhas_oneの関連付けを表現する。traitの基本的な使い方。
FactoryBotでhas_oneの関連付けを表現するのってどうやるんだっけ?ってなったので自分用に備忘録を残しました。
traitという機能を使用しました。
今回はtraitの基本的な使い方➕作業の全体像を記しています。参考にした記事
https://qiita.com/ShotaroHirose59/items/7c64be350676120de9bd
## 前提条件
CustomerがProfileをhas_oneしています。
“`customer.rb
class Customer < ApplicationRecord has_one :profile, dependent: :destroy end ``` ```profile.rb class Profile < ApplicationRecord belongs_to :customer end ``` ## 本題のコード customerの方のFactoryBot “`spec/factories/customers.rb FactoryBot.d
【Rails】erbからslimへ変換したい方へ
## はじめに
みなさん`slim`はお好きでしょうか?
`erb`から`slim`への変換をしてくれる便利な`html2slim`というgemがあるのですが、非推奨のメソッドが使用されている関係で警告が出ていました。
それだけでなく、一部のファイルが変換できない現象があったため解決しようと試みました💡
:::note warn
ご覧いただきありがとうございます!
この記事の投稿者は主にRuby on Railsを学習している初学者です。
理解不足な点や内容に誤りがございましたらご指摘いただけますと幸いです。
:::## 問題
“`
NoMethodError: undefined method `exists?’ for class File
“`
exists?メソッドが非推奨(そして最終的に削除された)ために発生しているようです。
現在は`File.exists?`の代わりに`File.exist?`を使用するのだそうです。詳しいことまではわからないのですが、ライブラリの記述で起きている問題のため、本家のgemの更新を待つ他にはないようです。
## 解決方法
備忘: Railsで古い日付を JST の TimeWithZoneに変換すると時刻がずれる
# 追記
https://qiita.com/vivid_muimui/items/876d89f8bdc0a35c4fb5#comment-96533a49b7d45a748ead![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26310/518d80f7-da5c-fc0c-555f-92f95e641442.png)
コメントで教えていただきました!
—
# 以下、元記事
:memo: ふかぼりきれておらず事象だけのメモ
# 環境
ruby: ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin22]
rails: 7.1.2# 現象
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26310/af57e6c1-d3d5-e39b-72d4-2136a63f4e7f.png)
“`rb
❯ TZ=
local: trueって何だろう?って考察した話
# はじめに
Ruby on Railsを使ったプログラミング学習をしていた際、入力フォームを作成する方法を調べていると時々見かけるlocal: trueの記述。これって何だろう…と、ふと疑問に思ったことから調べつつ考察してみることにしました。
結論から言うと、local: trueは、Railsのバージョンによって必要になってくるform_withのオプションでした。結論にたどり着いた経緯と、この考察の過程を通して今回私が学んだことについて記録していきます。
# local: trueとは?
今回、私がlocal: trueを調べてみようと思ったきっかけのコードがこちら。
“`ruby:
<%= form_with url: search_path, local: true, method: :get do |f| %>
<% end %>
“`
そもそもlocal: trueは何をするための記述なのでしょうか?
Google検索にて、調べてみました。___form_withのデフォルトがAjax通信…非同期通信になってしまい、local: true
【Rails】メモ書きしたコメントを一括で見る機能
## はじめに
アプリケーションコード内のコメントにtodoを書くことがあるのですが、実装途中に一覧で確認したい時があり、探したところ見つかりました!!
:::note warn
ご覧いただきありがとうございます!
この記事の投稿者は主にRuby on Railsを学習している初学者です。
理解不足な点や内容に誤りがございましたらご指摘いただけますと幸いです。
:::## 問題
コメントに記入したtodoの内容は把握できているはずだが、見落としがないか一覧表示で確認したい。## 解決方法
コメントをアノテーション(注釈)として残しておく機能がRailsにありましたので、そちらを使っていきます。使用方法は簡単です、コメントの記述方法を少しだけ追加します。
“`ruby:example_controller.rb
def example_action
# TODO: 後でちゃんと実装してくださいね
puts “hoge”
end
“`
コマンドラインで下記コマンドを入力します、すると・・・
“`
bin/rails notes
“`
このような形で表示させ
【RSpec】フレーキーなテスト(たまに落ちるテスト)の直し方
## はじめに
自動テストを整備しておくと大量のテストを自動実行してくれるので大変便利です。
ですが、テストコードが増えてくると「パスするはずなのに、なぜかたまに失敗する」というテストが出てきます。
このような不安定なテストを「フレーキー(flaky)なテスト」と呼びます。### フレーキーなテストの問題点
フレーキーなテストは「たまに失敗するだけ」なので、何度かやり直せばパスします。
なので、GitHub ActionsのようなCIツール上でテストが落ちても、「あ、また落ちた。再実行したら直るかな(ポチッ)」という安易な解決策に走りがちです。しかし、フレーキーなテストを放置するのはよくありません。
理由は以下の通りです。– 本当はバグのせいで失敗しているのに「きっとフレーキーなテストだからに違いない」と思い込んで、そのままリリースしてしまうから(いわゆる「狼少年」状態)
– 実務レベルの巨大なテストコードになると、再実行するにしても完了まで数十分かかるので開発のテンポが遅くなるから
– 1回の再実行で全パスする保証はどこにもなく、再々実行や再々々実行しないとパスしない可能
Railsの動的プルダウンリストで`include_blank: true`を削除した際のJavaScriptの不具合とその解決法
## はじめに
Railsアプリケーションで動的なプルダウンリストを扱う際、初期状態を空白にすることがあります。このオプションは一般的に`include_blank: true`で実装しますが、この記述を削除すると、JavaScriptが正常に作動しなくなり、動的に選択肢を取得することができなくなる場合があります。特に、選択肢が一つしかなくユーザーがそれを変更できない場合、JavaScriptのイベントが発火せず、結果として動的に選択肢を更新できなくなる問題が生じます。この記事では、その問題の原因と解決策を一つのケーススタディとして紹介します。## 問題の詳細
例えば、以下のコードは予約システムで使用されるフォームの一部で、ユーザーはスタッフを選択し、その選択に基づいて利用可能な時間帯のプルダウンリストが動的に更新されます。`include_blank: true`を使用して、初期選択肢として空白を提供しています。
“`erb
<%= form_with url: time_tables_path, method: :post, local: true, data: { co