rails

Ruby on Rails

Rails7 + importmap + dartsass-rails

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

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

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

AASMでステータス変更と同じクリティカルセクションで実行

概要主にActiveRecordと併用して使うステータス管理用のgemがあります。AASM(ステートマシーン)です。「ステータス変更と同時に別の処理を実行したい」という要求を満たすために排他制御(主にデータベースのトランザクション)を使う場...
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...
Ruby on Rails

ActiveRecordでネストされたトランザクションのRollback方法

概要ActiveRecordでトランザクションを入れ子にするケースがあり、ActiveRecordのトランザクションの処理を追ってみるとなかなか興味深かったので文章にまとめておきます。おそらく、この内容を知っておかないと排他制御を考慮したク...
Ruby

Ruby on RailsでER図をモデルから生成

Railsの最新のER図をリバースエンジニアリングでスキーマから生成しましょう。rails-erdを使います。docker container内でコピペでできるようにコマンドを列挙しておきます。apt updateapt-get insta...
Ruby on Rails

物理メモリが不足したらpumaを自動で再起動

概要pumaがどんどんメモリを食っていってしまう。同様に、sidekiqもたくさんメモリを食ってしまっている。GCしても減らない。ObjectSpace.each_object(ActiveRecord::Relation).each(&:...
Ruby on Rails

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

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

Railsで作ったREST APIをSwagger対応

背景Web API Advent Calendar 12月3日分@takurosさんの12月2日のSwaggerとは何か? を前提としています。概要swagger-docs を使ってRailsのREST APIをswaggerで表示出来るよ...