[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 の無料プランはコンテナが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 2.0 の無料プラン (container 1つだけ) でも動く .circleci/config.yml のサンプルコードは別記事 [CircleCI 2.0] Rails 5.x + Webpacker 構成で Rspec テストを実行する job 設定方法 に書きましたので、こちらをご参照ください。
以上、CircleCI 2.0 で Rails 5.x の Rspec を動かしたい、現場からお送りしました。