質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

Q&A

解決済

3回答

5521閲覧

Rails CircleCI Docker bundler: command not found:

naoki10

総合スコア37

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

0グッド

0クリップ

投稿2019/07/25 23:38

編集2019/07/26 08:31

前提・実現したいこと

GitHubへPUSH時に、
Rails と CircleCI で RspecやRubocop を実行したい。
しかし下記エラーが発生します。
対処方法ご存じの方見えましたらご教授頂きたく思います。

発生している エラーメッセージ・エラー画面

bundler: command not found: rubocop Install missing gem executables with `bundle install`

イメージ説明
イメージ説明

##設定ファイル下記致します。

.circleci/config.yml

version: 2 jobs: test: docker: - image: circleci/ruby:2.4.5-node-browsers environment: RAILS_ENV: test #BUNDLER_VERSION で任意のバージョンを指定 - image: circleci/mysql:5.6 environment: MYSQL_ALLOW_EMPTY_PASSWORD: true MYSQL_ROOT_PASSWORD: '' MYSQL_DATABASE: circleruby_test_test working_directory: ~/repo steps: - checkout - run: name: bundle install command: bundle --path vendor/bundle - run: name: データベースの起動を待機 command: dockerize -wait tcp://127.0.0.1:3306 -timeout 1m - run: name: データベースのセットアップ command: bundle exec rake db:schema:load - run: name: rubocopを実行 command: bundle exec rubocop - run: name: テストの実行 command: bundle exec rspec workflows: version: 2 workflows: jobs: - test

-RUN
command bundle show すると下記のように表示されrubocop等あるので、
エラーの対処方法が検討着きません

#!/bin/bash -eo pipefail bundle show Gems included by the bundle: * actioncable (5.2.3) * actionmailer (5.2.3) * actionpack (5.2.3) * actionview (5.2.3) * activejob (5.2.3) * activemodel (5.2.3) * activerecord (5.2.3) * activestorage (5.2.3) * activesupport (5.2.3) * arel (9.0.0) * ast (2.4.0) * bindex (0.8.1) * bootsnap (1.4.4) * builder (3.2.3) * bundler (1.17.3) * byebug (11.0.1) * coffee-rails (4.2.2) * coffee-script (2.4.1) * coffee-script-source (1.12.2) * concurrent-ruby (1.1.5) * crass (1.0.4) * diff-lcs (1.3) * duktape (2.3.0.0) * erubi (1.8.0) * execjs (2.7.0) * ffi (1.11.1) * globalid (0.4.2) * i18n (1.6.0) * jaro_winkler (1.5.3) * jbuilder (2.9.1) * loofah (2.2.3) * mail (2.7.1) * marcel (0.3.3) * method_source (0.9.2) * mimemagic (0.3.3) * mini_mime (1.0.2) * mini_portile2 (2.4.0) * minitest (5.11.3) * msgpack (1.3.0) * mysql2 (0.5.2) * nio4r (2.4.0) * nokogiri (1.10.3) * parallel (1.17.0) * parser (2.6.3.0) * puma (3.12.1) * rack (2.0.7) * rack-test (1.1.0) * rails (5.2.3) * rails-dom-testing (2.0.3) * rails-html-sanitizer (1.0.4) * railties (5.2.3) * rainbow (3.0.0) * rake (12.3.3) * rb-fsevent (0.10.3) * rb-inotify (0.10.0) * rspec-core (3.8.2) * rspec-expectations (3.8.4) * rspec-mocks (3.8.1) * rspec-rails (3.8.2) * rspec-support (3.8.2) * rubocop (0.73.0) * ruby-progressbar (1.10.1) * sass (3.7.4) * sass-listen (4.0.0) * sass-rails (5.0.7) * sprockets (3.7.2) * sprockets-rails (3.2.1) * thor (0.20.3) * thread_safe (0.3.6) * tilt (2.0.9) * turbolinks (5.2.0) * turbolinks-source (5.2.0) * tzinfo (1.2.5) * uglifier (4.1.20) * unicode-display_width (1.6.0) * web-console (3.7.0) * websocket-driver (0.7.1) * websocket-extensions (0.1.4)

補足情報(FW/ツールのバージョンなど)

Windows10
gemのインストールは下記のように実施しています。
bundle install --path vendor/bundle

試したこと

version: 2 jobs: test: docker: - image: circleci/ruby:2.4.5-node-browsers environment: RAILS_ENV: test BUNDLE_PATH: "vendor/bundle" BUNDLER_VERSION: 2.0.2 - image: circleci/mysql:5.6 environment: MYSQL_ALLOW_EMPTY_PASSWORD: true MYSQL_ROOT_PASSWORD: '' MYSQL_DATABASE: circleruby_test_test working_directory: ~/repo steps: - checkout - run: name: bundle のセットアップ command: | sudo gem update --system sudo gem uninstall bundler sudo rm /usr/local/bin/bundle #sudo rm /usr/local/bin/bundler sudo gem install bundler - restore_cache: keys: - v1-dependencies-{{ checksum "Gemfile.lock" }} # fallback to using the latest cache if no exact match is found - v1-dependencies- - run: name: install bundle command: | bundle install --jobs=4 --retry=3 --path vendor/bundle - save_cache: paths: - ./vendor/bundle key: v1-dependencies-{{ checksum "Gemfile.lock" }} - run: name: データベースの起動を待機 command: dockerize -wait tcp://127.0.0.1:3306 -timeout 1m - run: name: データベースのセットアップ command: bundle exec rake db:schema:load - run: name: gem install bundler command: gem install bundler - run: name: rspecを実行 command: bundle exec rspec code-check: docker: - image: circleci/ruby:2.4.5-node-browsers working_directory: ~/repo steps: - checkout - run: name: bundle install command: bundle install - run: name: rubocopを実行 command: bundle exec rubocop workflows: version: 2 workflows: jobs: - test - code-check

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/25 23:40

CirclCIではなくCircleCIです。
naoki10

2019/07/25 23:53

CircleCIにしました!!
guest

回答3

0

ベストアンサー

gem install bundlerをしないと...
bundlerは元々インストールされてません。

必要なとこだけ参考にしてください。

yml

1version: 2 2jobs: 3 build: 4 docker: 5 # specify the version you desire here 6 - image: circleci/ruby:2.6.3-stretch-node-browsers 7 8 # bundler 2+ 対応 9 environment: 10 RAILS_ENV: test 11 BUNDLER_VERSION: 2.0.2 12 POSTGRES_USER: postgres 13 POSTGRES_DB: app_test 14 15 # Specify service dependencies here if necessary 16 # CircleCI maintains a library of pre-built images 17 # documented at https://circleci.com/docs/2.0/circleci-images/ 18 - image: circleci/postgres:11.3-alpine 19 20 working_directory: ~/app_name 21 22 steps: 23 - checkout 24 25 # bundler 2+ 対応 26 - run: 27 name: setup bundler 28 command: | 29 sudo gem update --system 30 sudo gem uninstall bundler 31 sudo rm /usr/local/bin/bundle 32 sudo rm /usr/local/bin/bundler 33 sudo gem install bundler 34 35 # Download and cache dependencies 36 - restore_cache: 37 keys: 38 - v1-dependencies-{{ checksum "Gemfile.lock" }} 39 # fallback to using the latest cache if no exact match is found 40 - v1-dependencies- 41 42 - run: 43 name: install dependencies 44 command: | 45 bundle install --jobs=4 --retry=3 --path vendor/bundle 46 - save_cache: 47 paths: 48 - ./vendor/bundle 49 key: v1-dependencies-{{ checksum "Gemfile.lock" }} 50 51 # Database setup 52 - run: bundle exec rake db:create 53 - run: bundle exec rake db:schema:load 54 55 # run tests! 56 - run: 57 name: run tests 58 command: | 59 mkdir /tmp/test-results 60 TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \ 61 circleci tests split --split-by=timings)" 62 bundle exec rspec \ 63 --format progress \ 64 --format RspecJunitFormatter \ 65 --out /tmp/test-results/rspec.xml \ 66 --format progress \ 67 $TEST_FILES 68 # collect reports 69 - store_test_results: 70 path: /tmp/test-results 71 - store_artifacts: 72 path: /tmp/test-results 73 destination: test-results 74 75 # run rubocop 76 - run: 77 name: run rubocop 78 command: bundle exec rubocop

投稿2019/07/26 06:06

編集2019/07/26 07:57
Mugheart

総合スコア2344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naoki10

2019/07/26 07:46

jobs: test: docker: - image: circleci/ruby:2.4.5-node-browsers environment: RAILS_ENV: test #BUNDLER_VERSION で任意のバージョンを指定 - image: circleci/mysql:5.6 environment: MYSQL_ALLOW_EMPTY_PASSWORD: true MYSQL_ROOT_PASSWORD: '20186Hinsitu' MYSQL_DATABASE: circleruby_test_test working_directory: ~/repo steps: - checkout - run: name: bundle install command: bundle --path vendor/bundle - run: name: データベースの起動を待機 command: dockerize -wait tcp://127.0.0.1:3306 -timeout 1m - run: name: データベースのセットアップ command: bundle exec rake db:schema:load - run: name: gem install bundler command: gem install bundler - run: name: rspecを実行 command: bundle exec rspec としましたが同じエラーが発生します、、、
Mugheart

2019/07/26 07:48

ちょっとサンプルで僕のよく使うymlファイル貼りますね。 参考にしてください。
Mugheart

2019/07/26 07:53

ほとんどデフォルトのままですが # bundler 2+ 対応 とあるところがBundler2系を使うために追加した部分です。 環境変数のところは BUNDLER_VERSION: 2.0.2 ってやつだけですね。
Mugheart

2019/07/26 07:54

あと環境変数の指定は1回にまとめてやると良いです。 確か複数回に分けてやってしまうと反映されないものがあったような気がします。
naoki10

2019/07/26 08:41

丁寧にありがとうございます。 環境変数1つにまとめると、 bundle exec rake db:schema:loadした際に ActiveRecord::NoDatabaseError: Unknown database 'circleruby_test_development' となり、データ読み込めませんでした(環境変数反映されていない?) 展開頂いた内容をyml書き換えました(試したことに載せました) がやはり、 bundler: command not found: rubocop Install missing gem executables with `bundle install` と出ます。 自分の勉強不足で理解出来ていないことが多いのが原因かと思いますので 勉強しなおしてきます。 すみません。
naoki10

2019/07/26 08:43

sudo rm /usr/local/bin/bundlerをコメントアウトしたのは RubyGems system software updated rm: cannot remove '/usr/local/bin/bundler': No such file or directory となったためです
naoki10

2019/07/26 08:46

bundlerは2系で実行できるようになりました
Mugheart

2019/07/26 08:49 編集

おそらく使っているイメージのRubyのバージョンが古いからかな?と思いますが。 間違えました。 Railsのバージョンも古いとBundlerは1系しか使えないかもしれません。
Mugheart

2019/07/26 08:47

使えるようになってよかったです。
guest

0

普段RubyとBundlerを使わないので違うかもしれませんが

command: bundle --path vendor/bundle

install が抜けていませんか?
(それとも省略できる?)

投稿2019/07/25 23:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naoki10

2019/07/26 05:43

回答頂きありがとうございます! install は省略できる認識です install 追記して実行しましたが同じエラー発生しました
退会済みユーザー

退会済みユーザー

2019/07/26 05:45

うーん、一旦ローカルでデバッグしたほうがいいと思います。 circleci/ruby:2.4.5-node-browsers をpullしてきてローカルで検証しては如何でしょうか。
guest

0

command: bundle --path vendor/bundleを
command: bundleとしたら通りました。

原理は理解していないです。
分かるかた見えたらご教授下さい

下記サイトが解決に関係しそうです
docker で Run bundle install to install missing gems になっちゃう件
https://totem3.hatenablog.jp/entry/2017/08/13/133954

投稿2019/07/26 06:02

naoki10

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mugheart

2019/07/26 06:14

--path vendor/bundle を指定しない場合 その通りgemを参照、インストールする場所が指定されないので イメージに元々入っている(?)bundlerを見ているんだと思います。 最新のbundler2系を使う場合などはそうもいかないので 事前にインストールコマンドを打つんですが。
naoki10

2019/07/26 07:41

bundler2系を使おうとしたら、 circleciで You must use Bundler 2 or greater with this lockfile. と出て、bundler (1.17.3)使ってます、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問