[Ruby on Rails 5] CLI と Rubymine 上で RSpec を実行するための設定
Rails 5.2.4.1 にアップグレード後、bundle exec rspec
で実行できるテストが bin/rails spec
で実行できなくなりました。
Rubymine に設定していた Run
rake task の設定も同様でしたので調査。
CLI での実行
bin/rspec
が公式に書かれているので、これを設定していきます。
bin/rspec
は存在しません。
% ls bin
bundle* rails* rake* setup* update* yarn*
bundle binstubs rspec-core
を実行し、bin/rspec
をしたところ警告が表示されました。
% bundle binstubs rspec-core
% bin/rspec
Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.
と言われるので下記を実行したところ、bin/rspec
でテストが実行できるようになりました。
% bundle binstubs bundler --force
ただプロジェクトの bin/bundle
を確認したところ、ファイルの内容が大きく変更されていました。
おそらく下記を実行すべきだったようなので、bin/bundle
ファイルの内容も元に戻しました。
% bin/bundle binstubs rspec-core
違うのかな。
% which bundle
/Users/foo/.rbenv/shims/bundle
% which bin/bundle
bin/bundle
Rubymine での実行
Run
メニューから実行するもテストが走りません。
Testing started at 3:10 ...
/usr/local/bin/zsh -c "bash -c 'env RBENV_VERSION=2.6.5 /usr/local/Cellar/rbenv/1.1.2/libexec/rbenv exec bundle exec ruby /Users/foo/projects/bar/vendor/bundle/ruby/2.6.0/bin/spring rails spec'"
Process finished with exit code 0
修正のついでに bin/spring
の設定を行います。
% bundle exec spring binstub --all
* bin/rake: Spring inserted
* bin/rails: Spring inserted
% ls bin
bundle* rails* rake* rspec* setup* spring* update* yarn*
元の設定から Environment Valuables
に RAILS_ENV=test
値を与えると動きました。
Run
メニューから実行した結果に表示されるコマンド上は何も変わっていないのがよく分かりません。
/usr/local/bin/zsh -c "bash -c 'env RBENV_VERSION=2.6.5 /usr/local/Cellar/rbenv/1.1.2/libexec/rbenv exec bundle exec ruby /Users/foo/projects/bar/vendor/bundle/ruby/2.6.0/bin/spring rails spec'"
RSpec で設定した場合は、このような形になりました。
表示されるコマンド。
/usr/local/bin/zsh -c "bash -c 'env RBENV_VERSION=2.6.5 /usr/local/Cellar/rbenv/1.1.2/libexec/rbenv exec bundle exec ruby /Users/foo/projects/bar/vendor/bundle/ruby/2.6.0/bin/rspec /Users/foo/projects/bar/spec --require teamcity/spec/runner/formatter/teamcity/formatter --format '\"'\"'Spec::Runner::Formatter::TeamcityFormatter'\"'\"' --pattern '\"'\"'**/*_spec.rb'\"'\"''"
補遺
binstub
の話。
binstub
とチーム開発の話。
script/rails
をやめて bin/rails
になったあたりの話。