[小ネタ]springを使用してrspecが起動できない?

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

タイトル通りの小ネタです。普段、私はRuby on Railsの開発でspring、rspecを使用しています。spring上でrspecを起動させるのですが、何故か急に動かなくなったので、その解決方法を書いておきたいと思います。

事象

spring上でrpsecを動かすため、いつもどおり$ spring spec spec/ を実行したら、以下のように表示されて、動きませんでした。

$ spring rspec spec/

Version: 1.1.3

Usage: spring COMMAND [ARGS]

Commands for spring itself:

  binstub         Generate spring based binstubs. Use --all to generate a binstub for all known commands.
  help            Print available commands.
  status          Show current status.
  stop            Stop all spring processes for this project.

Commands for your application:

  rails           Run a rails command. The following sub commands will use spring: console, runner, generate, destroy.
  rake            Runs the rake command
  rspec           Runs the rspec command

解決方法

結論としては、springでrpsecを使用するためには、spring-commands-rspecが必要なようです。なので、これをGemfileに追加します。最終的に、私のGemfileは以下のようになりました。

(上略)
group :development,:test do
  gem 'rspec-rails'
  gem 'pry-byebug'
  gem 'spring'
  gem 'spring-commands-rspec'
end

一番下が、先ほど書いた「spring-commands-rspec」で、今回新たに追加しました。「pry-byebug」は、ステップ実行するために使用しているので、使わないのであれば必要ありません。

いつものコマンドで、gemをインストールします。

$ bundle install

springを一旦停止します。

$ spring stop

spring上でrspecを実行します。

$ spring rspec spec/

以上です。二回目からのrspecの実行から、起動が早くなるはずです。

まとめ

今までは「spring-commands-rspec」なしで実行していました。確認はしてませんが、springのバージョンにより「spring-commands-rspec」が必要なのかもしれません。

参考サイト

`spring rspec` just displays spring help.. why?