bundle exec rails g ~
が全く機能しなかったので、調査した件。
#####今回の実行環境
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G95
今回起きたエラー内容は以下の通りです。
$ bundle exec rails g controller StaticPages home help about
/Users/iori_jp/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bundler-2.0.2/lib/bundler/runtime.rb:319:in `check_for_activated_spec!': You have already activated bundler 1.17.2, but your Gemfile requires bundler 2.0.2. Since bundler is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports bundler as a default gem. (Gem::LoadError)
適用されているbundler gem
のバージョンが1.17.2
なので、2.0.2
に変更してくださいとのことでした。
上記の参考ページ曰く、bundlerバージョンが1.17.2
だと色々面倒らしく、1.17.3
に変更した方が良いとのこと。
途中、試行錯誤で試したものが影響を持っている可能性があるため、メモ書き程度で参考にすることをオススメします...
まず、Gemfile.lock
のBUNDLED WITH
を確認します。
$ cat Gemfile.lock | tail
RUBY VERSION
ruby 2.6.1p33
BUNDLED WITH
1.17.2
Gemfile.lock
は、bundle install
した時点で作成されます。
(ここでバージョンが1.17.3
であれば、問題は別にありそうです。)
この後の作業として、bundlerのdefaultバージョンを 1.17.3
、
実行バージョン2.0.2
をインストールしてから、bundle install
します。
次にbundlerのバーションを確認します。
$ gem list bundler
*** LOCAL GEMS ***
bundler (2.0.2, default: 1.17.2)
$ bundle -v
Bundler version 1.17.2
gem update --system
を実施して、defaultのbundlerバージョンを1.17.3に変更します。
$ gem update --system
bundlerバージョン 2.0.2 をインストールします。
ここでgem install bundler -v 1.17.3
のように指定することも可能
今回は最新版である2.0.2
を使用するため、指定はしません。
$ gem install bundler
Successfully installed bundler-2.0.2
Parsing documentation for bundler-2.0.2
Done installing documentation for bundler after 1 seconds
1 gem installed
次にGemfile.lock
を削除します。
$ rm Gemfile.lock
やっと、bundle install
。
ここでpathをオプションに入れることで、bundlerのバージョンをglobal
でなく、
local
で持つことができます。
$ bundle install --path=vendor/bundle
最後に、catでBUNDLED WITH
のバージョンを確認して終わりです。
$ cat Gemfile.lock | tail
RUBY VERSION
ruby 2.6.1p33
BUNDLED WITH
2.0.2
これで無事、bundle exec rails g controller ~~
できるようになりました。