Ruby on Rails

Ruby on Rails

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

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

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

概要RubyonRailsAdventCalendar2022の17日目の記事です。RubyonRails7.0からアセット管理にimportmapsが使われるようになりました。Rails6のときに使われていたwebpackerとは大きく仕...
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.app...
Program & Service

郵便番号検索APIサービスをGraphQL対応しました

概要郵便番号検索APIサービスにおいて、GraphQLに対応しました。graphqlを使い、paginationにはgraphql-pagination,kaminari-activerecordを使っています。考察GET系だけなので特にハ...
Ruby on Rails

Benchmarking ActiveRecord and mysql2

概要RubyActiveRecordを使う場合と使わない場合におけるベンチマークがWebを探しても無かったので測ってみました。純粋な比較は難しいので、あくまでも参考値として見ていただければと思います。比較activerecord(5.2.4...
Ruby on Rails

Railsのroutesのshallowは安易に使わないで欲しい

概要Shallowの説明はRailsGuideにあるとおり。examplenormal:/authors/1/articles/1shallow:/articles/1(authorのIDはarticleのIDがわかれば自明だから指定しない...
Ruby on Rails

Railsの404エラーページをコマンド1発でクールにする

Railsのエラーページがかっこ悪い!ググっても欲しいテンプレが見つからない!ってことで、作りました。以下のコマンドを1発叩くだけでマシなテンプレートになります。curl|shスクリーンショットデモ:ソースコード適当に作っただけなので、もっ...