guard-rspecを使って、specが保存される都度自動実行されるが、specを増えると、やはり実行時間に気になるので、何とかしたい

zeus を選択する理由

  • Sporkと比較
    • spec-helperファイルを汚染しない
  • Commandsと比較
    • rspec対応
    • destroy対応
    • Commandsは両方とも使えいないらしい
  • Springと比較
    • destroy対応
    • zeus start1つプロセスで、異なるセッション間で共有出来る
      • Springはセッション毎にSpring serverが走ってるらしい

導入方法

  • Gemfiledevelopmentグループに追加
    • `gem “zeus”
  • Guardと併用している場合、Guardfileを修正
    • guard 'rspec'zeus: trueオプションを追加
    • このオプションによって、Guardrspecを実行する時にbundle exec zeus rspecになる
    • guard-zeusというgemもありますが、これを使うと、Guard起動すると、zeus startを実行してくれるが、spec実行される通度、zeus startの内容とspec実行の出力とバラバラになってしまうので、却下
  • Cucumber使わないとか、の場合は、zeus.jsonを作成
    • やったのは
      • ‘Cucumber’を削除
      • ‘dbconsole’を削除
      • ‘runner’を削除
    • ちなみに、zeus initを実行すると、ひな形が作成してくれる
{
  "command": "ruby -rubygems -rzeus/rails -eZeus.go",

  "plan": {
    "boot": {
      "default_bundle": {
        "development_environment": {
          "prerake": {"rake": []},
          "console": ["c"],
          "server": ["s"],
          "generate": ["g"],
          "destroy": ["d"]
        },
        "test_environment": {
          "test_helper": {"test": ["rspec", "testrb"]}
        }
      }
    }
  }
}

問題

  • specの中に、shared_contextを使ってるせいかもしれませんが、zeus rspec ...を実行する都度、...not found shareed_context...エラーになってる
    • 対策として、spec_helperrequire rspec/autorun行を削除するとエラーがなくなった
    • 正直に言うと、その行のそもそもの役割はよく分かってない。削除しても、rspecとかも正常に実行出来るし

まとめ

  • こう設定すると、修正を保存する都度、specが素早く実行されて、すごく快適です