ActiveRecordを単体で試すためのテンプレートを作る

はじめに

勉強だったり仕事でRailsActiveRecordのソースを読んでるうちに手元で動かしたくなる事が多いのでActiveRecordを単体で扱えるテンプレートを作成してみた。

やった事

詳細はGithub

動作確認が主な目的でデータを永続化する必要がないので手軽さを優先してDatabaseはSQLite3をin memoryで使用。
Modelを動かすのに必要な処理を分けておいたので必要なテストデータを順次追加していく。 手順の流れはRailsと大体同じでschemaに定義をmodels以下にmodelファイル、テストデータはseed.rbに追加する。

  • schem.rb
  • models/
  • seed.rb

とりあえずhas_one、has_many、valiadtionあたりを確認出来るようにファイルとseedを追加しておいた。

デバッグして挙動も見たいのでデバッガを追加。
Ruby3からは標準のデバッガが改善されているがRuby2以下を使いたくなる場合を考えてpry-byebugにした。

pry-byebugのbinding.pryはファイルの最終行になるとBreakpointとして働いてくれなくなるので

puts 'finish'

を挿入。標準の新しいデバッガのbinding.breakだと最終行でも止まってくれるので後々移行するかも。

あとは puts 'finish' の上に試したいコードを書くなりデバッガを貼るなりして実行する。

bundle exec ruby main.rb

まとめ

has_manyやhas_oneだったりActiveRecordの挙動を確認したくなった際にModelを書いて、テストデータを作成してーというの都度考えるのが面倒なのでまとめてしまった。 CallbackとかObserverとか他にもあるがまた試したくなった時に追加する予定。