[CircleCI 2.0] Rails 5.x で bundler: failed to load command: rspec ~ NoMethodError: undefined method `captures’ for nil:NilClass エラーの解決方法
CircleCI 2.0 + Ruby on Rails 5.x で bundle exec rspec コマンドでテストケースを実行させると、以下のようなエラーが発生しました。
bundler: failed to load command: rspec (/home/circleci/yourapp/vendor/bundle/ruby/2.4.0/bin/rspec) NoMethodError: undefined method `captures' for nil:NilClass |
無事に解決できたので、その修正方法をご紹介します。
前提
以下のアーキテクチャでお送りしています。
- CircleCI 2.0 (無料プラン)
- Rails 5.1.4
- Yarn 0.27.5
- Webpacker 3.0.2
CircleCI 2.0 無料プランで動かすための修正内容
CircleCI 2.0 の無料プランはコンテナが1つしか動かないので、TEST_FILES=”$(circleci tests glob “spec/**/*_spec.rb” | circleci tests split –split-by=timings)” のコードが不要でした。
diff --git a/.circleci/config.yml b/.circleci/config.yml index 7cd1539..e5a0f8b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -48,13 +48,10 @@ jobs: name: run tests command: | mkdir /tmp/test-results - TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)" - bundle exec rspec --format progress \ --format RspecJunitFormatter \ --out /tmp/test-results/rspec.xml \ - --format progress \ - "${TEST_FILES}" + --format progress # collect reports - store_test_results: |
この処理は、CircleCI 公式サイトからそのまま持ってきたサンプルコードでした。無料プランですぐ動かせないのは、あまりユーザーフレンドリーではないように感じますね。
- CircleCI Demo Applications – CircleCI
- circleci-demo-ruby-rails/config.yml at master · CircleCI-Public/circleci-demo-ruby-rails
無料プランでも動く .circleci/config.yml
CircleCI 2.0 の無料プラン (container 1つだけ) でも動く .circleci/config.yml のサンプルコードは別記事 [CircleCI 2.0] Rails 5.x + Webpacker 構成で Rspec テストを実行する job 設定方法 に書きましたので、こちらをご参照ください。
以上、CircleCI 2.0 で Rails 5.x の Rspec を動かしたい、現場からお送りしました。