ActiveRecordを単体で試すためのテンプレートを作る
はじめに
勉強だったり仕事でRailsやActiveRecordのソースを読んでるうちに手元で動かしたくなる事が多いので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とか他にもあるがまた試したくなった時に追加する予定。