Ruby on Rails

Ruby on Rails

末尾の半角スペースで困惑:ActiveModelとMySQLの連携問題

概要ActiveModelのuniqueがあるアトリビュートの末尾に半角スペースがあると挙動がおかしくなるケースがありました。問題以下のようにcodeがユニークなアトリビュートを定義してあるとします。class Product < Appl...
Ruby on Rails

Rail7の推奨になったimportmap+ dartsassを使ってサービスを構築してみました

概要Ruby on Rails Advent Calendar 2022の17日目の記事です。Ruby on Rails 7.0からアセット管理にimport mapsが使われるようになりました。Rails6のときに使われていたwebpac...
Ruby on Rails

Rails7 + importmap + dartsass-rails

概要Rails7のデフォルトでのアセットの管理がどの様になっているか知りたかったので rails newをしてみました。既存プロジェクトを移行したときの差分はこちらです。既存のソースコードの流用などがあるので変更を最小限にしたかったという思...
Ruby on Rails

webpackerを削除してcssbundling-rails+jsbundling-rails+propshaftに移行

概要importmap-railsに移行したかったのですが、手元のブラウザではちゃんと動かなかったので諦めてJavascriptはtranspileすることにしました。webpackerから移行した際の手順をまとめておきます。 こちらのサー...
Ruby on Rails

RailsのアクターがN:Mのシステムを作るときの権限モデル

背景手元で作っているRailsのサービスの要求が肥大化してきたので、権限モデルをちょっと整理してみました。権限が複雑になる原因は、メトリックが多くなること。要件レベルでどれだけメトリックを減らせるかが重要。ビジネスで利用するサービスの場合、...
Ruby on Rails

FakerやGimeiのseedをrspecのseedと一致させる

概要rspecにおいて、単体テストの順番や使うデータをランダム化してテストパターンを増やすために config.order = :randomを有効化するのは普通かと思います。テストが失敗したときに、rspecコマンドの--seedオプショ...
Ruby on Rails

Railsでsessionを無効化する方法

config/initializers/session_store.rbにRails.application.config.session_store :disabledを書き込んでアプリケーションサーバを再起動。echo "Rails.a...
Ruby on Rails

Rails 6.1.5でdb:migrationのときにreference周りでエラー

問題rails db:migrateをしたときに、以下のようなエラーが出るようになってしまった。親のキーがbigntで作られていないから、外部キーが貼れないというエラー。Column `parent_id` on table `childr...
Ruby on Rails

RSA Encryption not supported – caching_sha2_password plugin was built with GnuTLS support がでたときの対処法

原因MySQL5.7までの認証プラグインにはmysql_native_passwordがデフォルトで使用されていましたがMySQL8より新たに追加されたcacing_sha2_passwordがデフォルトに変更されましたがクライアント側が対...
Ruby on Rails

Rails + MySQL 8でngramを用いたfulltext index

Railsのmigrationで普通にfulltext indexを付ける場合には以下のようにすると思いますが、普通のfulltext indexではngramが使われないので日本語の全文検索をする場合には全然マッチしません。class A...