travel_backってどこで使うんだ…?と使い所に関して挙動を確認してたらたどり着いたメモ。
環境
$ bin/rails -v Rails 5.2.2
理由と解説
travel_back
というリアル時刻に戻す機能があるのだが、一昔の前のブログをさがすと「ブロックなしの travel_to
をしたら必ずやってね!」という文章がたくさんでてくる
しかし5.2系にてこれを修正するPRが出され、マージされている
TimeHelpers moduleでafter_teardownメソッドを定義し、テスト終了時に自動でtravel_backを呼び出すよう修正しています。 これにより、block無しのtravelやtravel_toを使用した場合に、明示的にtravel_backを呼ぶ必要は無くなります。 Remove automatic removal of Date/Time stubs after each test caseで一度同様の対応が削除された事があったのですが、自動でtravel_backした方が便利だろう、という事で再度入ったようです。 - rails commit log流し読み(2017/07/24) - なるようになるブログ
そのため、いままでは
context "travel_test" do before do travel_to( "2018-10-10 10:00:00".in_time_zone ) end it "ためしに時刻表示" do pp Time.zone.now end after do travel_back end end
とかく必要があったが、afterが不要になり
context "travel_test" do before do travel_to( "2018-10-10 10:00:00".in_time_zone ) end it "ためしに時刻表示" do pp Time.zone.now end end
だけでよくなった
参考リンク
- Merge pull request #29860 from georgeclaghorn/travel-back-automatically · rails/rails@57a103c - これ見る感じ 5.2.0のbeta1からみたい