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

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

RubySilverに合格できたお話

## はじめに
初めまして、@jinta_02と申します。
未経験からエンジニアに転職して、早3ヶ月が経ちましたが、業務をする上で、「これ何してんだ?、どんな書き方?」と思おうことが多々あったので、RubySilverを受験してきました。
これから受験される方の参考になればと思ったので、受験記録を残します😀

## スキルレベル
– エンジニア歴3ヶ月(未経験からWebエンジニア)
– 転職前に、10ヶ月ほどプログラミングスクール受講(主に、Ruby, Railsを学習)
– 以下のポートフォリオを作成できるレベル
[個人開発】服好き・カフェ好きのためのショップ検索サービス「服カフェ」をリリースしました](https://qiita.com/jinta_02/items/329abd44056277a17d739)

## 受験のきっかけ
エンジニアに転職して実際にサービス開発に携わる中で、チームメンバーが書いているコードを理解できない部分があったので、もう少しRubyの文法だったりライブラリについて学ぶ必要があると感じたからです。また、学習するなら何か形に残るものにしたかったのと、R

元記事を表示

【Rails】Amazon BedrockのKnowledgeBaseを使ってRAGを使ってみた。

どうもこんにちは。

今回は、Amazon BedrockのKnowledgeBaseを使ったRAGをRailsアプリケーションで行ってみました。

pineconeやKnowledgeBaseのセットアップ方法、AWSコンソール上でのテストについては、さまざまな方が記事にしているので、自分はRailsでの使い方にフォーカスして話を進めます。

# 環境

Ruby: 3.2.2
Rails: 7.1.3.4
リージョン: バージニア北部(東京リージョンだとpineconeが使えなかったので…)

# 前提条件

以下の記事を参考にして、pineconeやKnowledgeBaseをセットアップしたものとして話を進めます。

https://aws.amazon.com/jp/blogs/news/leveraging-pinecone-on-aws-marketplace-as-a-knowledge-base-for-amazon-bedrock/

# Railsへの実装

## 1. ライブラリインストール

Gemfileに記載して、インストールします。

“`Ge

元記事を表示

Rails 7.2 をちょこっと試す (insert_all returning オプション編 (ただしMariaDBに限る))

## はじめに
Rails 7.2 では、MariaDB で、`insert_all` に `returning` オプションが使えるようになりました。
MySQL では使えないので注意が必要です。
(PostgreSQL では、以前から `returning` オプションが使えます。)
## 環境
– Ruby 3.3.2
– Rails 7.2.0.beta2
– MariaDB 11.4.2
– MySQL 8.4.0

## 準備
Bookモデルを作ります。
“`sh
$ bin/rails g model Book title
“`

## MySQL での挙動

MySQL では `returning` オプションを使うとエラーになります。
MySQL に接続するように `config/database.yml` を修正して以下を実行します。
“`sh
$ bin/rails db:create db:migrate
“`

Rails コンソールで `insert_all` を `:returning`実行するとエラーになります。
“`ruby
$ bin/r

元記事を表示

RailsでMySQLのDBから定義書を自動生成する

ある時、DBの定義書を確認したいと思い生成に成功したため実現方法を紹介します。

# 生成までの大まかな流れ

1. mysqldumpでXML形式のダンプファイルを出力
1. ダンプしたXMLファイルをHTML形式のファイルに変換
1. HTML形式のファイルをPDFに変換

# 実装方法

XMLに変換するためのテンプレートファイルを用意します。

“`xml:doc/db/schema/style/schema.xsl



元記事を表示

【Rails7】to_sでwrong number of arguments (given 1, expected 0) (ArgumentError)が発生する

## はじめに
Rails7にアップデート中、to_sを使用している部分でエラーが発生したので、解消方法をまとめていきます。

## 問題
エラー内容
“`ruby
date = DateTime.now
puts date.to_s(:db)

`to_s’: wrong number of arguments (given 1, expected 0) (ArgumentError)
“`

## 解決方法
to_sをto_fsに変更することで解消します。

“`ruby
date = DateTime.now
puts date.to_fs(:db)
“`

## 参考
https://scrapbox.io/ukuh1r8-86980398/Rails7%E3%81%8B%E3%82%89Active_Support%E3%81%AE%E4%B8%80%E9%83%A8%E3%81%AEto_s%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%ABformat%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E

元記事を表示

Rspec WrongScopeError発生

Rspecでテストを走らせた際に発生した問題について、備忘録として投稿します。

## 発生した問題

“`
Failure/Error:
raise WrongScopeError,
“`#{name}` is not available from within an example (e.g. an ” \
“`it` block) or from constructs that run in the scope of an ” \
“example (e.g. `before`, `let`, etc). It is only available ” \
“on an example group (e.g. a `describe` or `context` block).”

`name` is not available from within an example (e.g. an `it` block) or from construct

元記事を表示

`revert`がわからなかった件

## はじめに
今回は、後から言われればすごく簡単なことなのに、なぜか長い時間悩んだこと`revert`についてお話します。

## 経緯
– 課題をGit hubから1回目の提出`Create pull request`を押す
– 仕組みをさっぱり分かっておらず`Merge pull request`と`Confirm merge`を押す
– 修正するよう返信が来たので、コードを修正して、再度`git add`から`git push ~`までをおこなっていたがGit hub上では修正されたものが出ていない??
– 相談すると`revert`するよう指示がでた

・・・さぁ、問題の`revert`が出てきました。

## revertとは何?
– 既存のコミットを取り消すためのコマンド
– 「取り消したいコミットを打ち消すようなコミットを新しく作成する」という処理によって、既存のコミットを取り消します
– 日本語訳は「〔元の習慣・状態などに〕立ち戻る」
– 既存コミットの履歴は消えず、新たにコミットを追加
– どんな変更があったか、という事は残り、リモートにpushされて公開されている

元記事を表示

既存のDocker環境(rails7-on-docker)をDevContainer化した話

# 結論
rails7-on-docker環境の`compose.yaml`を使用してDevContainer環境を構築するのがおすすめ!

# 環境
* VScode
* [rails7-on-docker](https://github.com/ryanwi/rails7-on-docker)環境の準備が整っていること
* 他環境のDevContainer化でも参考になると思いますが、記事自体はrails7-on-railsについて言及しています。
* `rails7-on-docker`は、docker環境にrails7、postgresql、RSpecなどが入っています。いちいちrubyをインストールしたりだとかをしなくていいので便利です。
* もし環境準備がまだであればこちらの記事がおすすめです:[Windows WSL Docker Rails7 環境構築](https://qiita.com/mt-blue-sou/items/47e76c37eebf5ad7e603)

# dovcontainer化する手順
VScode公式のDEV

元記事を表示

railsの部分テンプレート描写について

# はじめに
railsで、部分テンプレートとしてパーシャルを利用しています。
しかし、使いすぎると描写に時間が掛かったりとデメリット部分もあり、使いどころに迷うケースがあります。
今回、そのパーシャルの利用方法が初見だったので、備忘録として残しました。

# やりたかったこと
スケルトンローダーの画面を作成したかった
![l_6814799_128_cc8998bdb47074590d3c2505975a7e2d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632357/c3ef4dcd-a68b-228b-9077-248e1013b516.png)

スケルトンローダーに関しては、こちらが分かりやすいかもしれません

https://marron-web.site/blog/cdad43/

# 作成
“`css:css
.one_comment {
display: flex;
animation: pulse 2s cubic-bezier(.4,0,.6,1) infinite

元記事を表示

【React導入】既存のRailsアプリにReactを導入する

## はじめに
この記事では、既存のRailsアプリにReactを導入する方法についてまとめています。

環境構築段階からReactを導入する方法についての記事は多いですが、途中からReactを導入する記事は少ないため、私自身かなり苦労しました。同じように苦戦している方の助けになれば幸いです。

https://ja.react.dev/

## 環境/前提
– Ruby 3.2.3
– rails 7.1.3.4
– TaiwindCSS使用
– Docker環境
– 「**esbuild**」で開発を行っていること
– バックエンド(ruby、rails)のみで環境構築していること

## Webpackerについて

以前は「Webpacker」を使用するのが一般的でしたが、最近では「Import Maps」や「esbuild」、「Vite」などの新しいツールが推奨されています。Webpackerは廃止されたわけではないですが、公式では使わない方向にシフトしています。この点を押さえておくと良いでしょう。

既存のRailsアプリにReactを導入するための記事が少なく、ChatG

元記事を表示

i18nの設定がconfig.i18nにまとまってconfig.action_viewは非推奨となった

Rails6からRails7へアップデートした時に、このような警告が出るようになりました。

“`zsh:
DEPRECATION WARNING: action_view.raise_on_missing_translations is deprecated and will be removed in Rails 7.0. Set i18n.raise_on_missing_translations instead. Note that this new setting also affects how missing translations are handled in controllers.
“`

警告の内容は、i18n(国際化)の設定を`config.i18n`にまとめたため、今まで使用していた`config.action_view`の方は非推奨になるというものです。

環境設定の中でi18nの設定をしている場合は、このように変更すると警告が出ななります

“`diff_ruby
– config.action_view.raise_on_missing_tr

元記事を表示

[Rails] Rspec_uninitialized constantになったら、described_classを見直す!?

# はじめに
先日、以下の現象が起きました。

・・・

今回の`rspec`の内容です。
– `describe`に`it`ブロックを複数定義
– `subject`で、インスタンスを作成する処理をしている
– そのインスタンスが返す値をテストしている

“`rb
RSpec.describe ‘PostShortcode’ do
subject { TestPost::Shortcode::PostShortcode.new(params) }

it ‘hoge’ do
expect(subject.hoge).to eq ‘hoge’
end

it ‘fuga’ do
expect(subject.fuga).to eq ‘fuga’
end
“`

上記で実行すると、なぜか**2回目以降**の`it`の時に、`NameError: uninitialized constant`が発生します。

“`sh
NameError:
uninitialized constant TestPost::Shortco

元記事を表示

railsでアプリケーション情報の表示するコマンド

## はじめに
あれ?このシステムのrailsのバージョンってなんだっけってことよくありますよね。
Gemfileを見れば分かりますが、わざわざファイルを見に行かなくてもrails,rubyのバージョンを知ることができるコマンドを見つけました。

## アプリケーション情報の表示するコマンド
rails aboutというコマンドを打つだけでrails,rubyのバージョンを知ることができます。
開発メンバーで同じ環境を使えているか確認する際などに使えそうですね。
“`sh
$ rails about

About your application’s environment
Rails version 7.1.3.3
Ruby version ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux]
RubyGems version 3.5.9
Rack version 3.0.11
Middleware ActionDispatch::HostAuthorization

元記事を表示

Rails: パーシャルに渡す変数は、なるべく少ない方がいいというレビューを受けた話(haml記法)

## 読んで欲しい人

– モデルにアソシエーションがあるのに、パーシャルに渡す変数を複数個にしてる方へ
– 過去の自分

## 動作環境

– ruby 3.3.0
– Rails 7.1.3.3

## 前提

作っているもの
– ポスト詳細画面に表示する、コメント一覧のパーシャル

## レビュー内容とコード

### レビュー内容
“`diff
– = render ‘posts/comments’, comments: @comments, post: @post
+ = render ‘posts/comments’, comments: @comments
“`
コメント

– モデル同士がお互いを知っているのであれば、渡す変数は1つの方がいい

### コード構成と内容

モデル:postとcommentは、1対多の関係性

“`post.rb
has_many :posts, dependent: :destroy
“`

“`comment.rb
belongs_to :post
“`

コントローラ

“`posts_controlle

元記事を表示

Railsアプリケーションをサブディレクトリで公開する方法

[株式会社TECH LUCK](https://techluck.co.jp/?utm_source=qiita&utm_medium=article&utm_campaign=myarticle)という会社で代表兼エンジニアをしている齊藤です。

表題の通りですが、Railsアプリケーションで `example.com/ec-site` というようなサブディレクトリの形でRailsアプリケーションをリリースしたい時の設定になります。

環境は以下の通りです。

– Nginx
– Ruby on Rails:v7.1
– Ruby:3.2
– puma

:::note warn
この記事では便宜的にドメイン名を`example.com`、アプリケーション名を`ec-site`という名前にしています。
:::

# Nginxの設定
Nginxのファイルを以下のように設定してください。
ただし、`example.com`と`ec-site`に関しては、ご自身の環境に合わせて変更してください。

“`nginx:rails.conf
client_max_body_size 2G;

元記事を表示

swiperの導入を整理してみた

## はじめに
Swiperの公式ドキュメントをみてみてもいまいち「?」だったため、GPTやほかのサイトを回ってみて私なりにまとめたものをお伝えしたいと思います。

https://swiperjs.com/get-started

## Swiper名前の由来
読んで字のごとく、「Swipe」からきています。
日本語に訳すと「指でなぞる」。スマートフォンやタブレットでのスワイプ操作を前提に設計されているため、この名前が付けられたと考えられています。

![スワイプ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3777936/06582699-c5a7-9889-7c97-955e88a0f67d.jpeg)

## Swiperとは
スライドショーが作れるJavaScriptのプラグインです。
他にスライドショーが作れるプラグインには「slick」があります。
slickはjQueryに依存するプラグインですが、SwiperはjQueryに依存しないプラグインなので、SwiperはjQueryを読み

元記事を表示

DaisyUIのコンパイルで苦戦した話[Rails7]

# はじめに
初めまして、現在プログラミングスクールにてRuby on Railsをメインに学習しているikedaと申します。
アプリ制作時にプリコンパイルを忘れて苦戦したのでその備忘録としてまとめようと思います。
初めて記事を書くのでお手柔らかにお願いします。

# 使用技術
Rails 7.0.8.1
Ruby 3.1.2
docker
Tailwindcss
DaisyUI

# [daisyUI](https://daisyui.com/?lang=jp)とは何か
Tailwind CSSをベースとしたコンポーネントライブラリで、わかりやすく言うとTailwind CSSを更に使いやすくするためのもの
### [Tailwind css](https://tailwindcss.com/)とは
ユーティリティファーストのCSSフレームワークのこと

# やりたかったこと
daisyUIのコンポーネントにあるチェックボックスを導入したかった。

# 問題

daisyUIのコンポーネントのチェックボックスを導入したら色が反映されなかった。

# 試したこと
`docker co

元記事を表示

ローカルからRenderにデプロイする際出やすいエラーについて

### はじめに
今回はローカルでrailsで環境構築した後、Renderにてデプロイする際によく起きるエラーと対処法を備忘録としてまとめてみます

## 事象
ローカル環境でrailsチュートリアルを学習中、1章で最初のデプロイをRenderにする際にエラーが発生

## エラー内容
“`
`validate_platforms!’: Your bundle only supports platforms [“x64-mingw-ucrt”]
but your local platform is x86_64-linux. Add the current platform to the lockfile
with (Bundler::ProductionError)
“`

## 原因
bundlerが実行できるプラットフォームが制限されている。ローカルでRailsアプリを作成すると、bundlerが実行できるプラットフォームはRailsを実行した環境OSのみとなるらしい。今回はWindowsでbundle installしたためWindowsOSのみの環境になっている。その

元記事を表示

Railsでポリモーフィック関連付けを使用した柔軟なモデル関連付けの実装」

## はじめに
アプリ制作の過程で、ポリモーフィック関連を用いた実装を行いました。ここではその実装過程で得られた気づきをまとめます。ポリモーフィック関連について実際の例を交えながらなるべく分かりやすくまとめたいと思います。

## なぜポリモーフィック関連付けが便利なのか
例えば、ブログ記事にコメントを付ける機能を作ったとします。その後、イベントページにもコメントを付けたくなったとします。通常であれば、新しくコードを書き足さないといけないと思います。しかし、ポリモーフィック関連付けを使うと、既存のコードをほとんど変更せずに、イベントにもコメントを付けられるようになります。
それでは、実際にコードを見ていきましょう。

## モデルの設定
まず、モデルの設定から。`Article`、`Event`、`Comment`の3つのモデルを作ります。
“`ruby
class Article < ApplicationRecord has_many :comments, as: :commentable end class Event < ApplicationRecord has

元記事を表示

【Rails】You need to supply at least one validation エラーが発生したら

## 概要

Rails アプリでフォームデータを送信するとき、以下のようなエラーが発生しました。

“`
You need to supply at least one validation
“`

## 原因

このエラーは以下のように `validates` メソッドにバリデーションの内容が指定されないと発生します。

“`rb
class Profile < ApplicationRecord validates :user_id end ``` ## 対処法 このエラーを解決するためには `validates` メソッドに適切なバリデーションを指定します。例えば `user_id` が一意であることを検証するために `uniqueness: true` オプションを指定できます。以下のようにすると、エラーは解消されます。 ```rb class Profile < ApplicationRecord validates :user_id, uniqueness: true end ``` ## まとめ `validates` メソッドを使用する際は、バ

元記事を表示

OTHERカテゴリの最新記事