rake-confirm という gem を作ってもらったのでさっそく使ってみたところ、 db:rollback
と db:fixtures:load
も production 環境でのうっかり実行を防ぎたかったので Pull Request を送った。
テストのない Pull Request は reject されそうだなあと思ったので、 Rake の task はどうテストしたらいいのか調べてみたところ、
- rake-confirm は
Rake::Task#enhance
を使って事前タスクというものを追加している Rake::Task#prerequisites
というメソッドは、タスクに追加された事前タスクのリストを返す
ということがわかった。それを踏まえて書いたテストがこれ https://github.com/hsbt/rake-confirm/commit/92b42a371335a614566d3e40ebc6ff35f91c7833
一般化して書くと、こうなる。