近日Mac老是频发奇怪问题,在新建项目到bundle install一步时会报如下错误:
/Users/apple/.rvm/gems/ruby-2.2.5/gems/bundler-1.14.5/lib/bundler/rubygems_ext.rb:45:in `full_gem_path': uninitialized constant Bundler::Plugin::API::Source (NameError)
不过正常的bundle install命令却没有问题.
发现只要将bundler版本退回至12.1版本一切都很正常,但是在用bundle install会提示bundle版本太低.有强迫症的本猫自然不能忍受这等问题:(
网上的变通方法(workaround)是修改lib/bundler/plugin/api.rb中的autoload为require命令,但这是在linux中的路径,在Mac没有上述路径。
在Mac中对应的bundler放在如下路径:
/Users/apple/.rvm/gems/ruby-2.2.5/gems/bundler-1.14.5
如果你的ruby或bundler版本是其他的,请自行修正。打开上述路径后进入其相对路径:
lib/bundler/plugin
打开api.rb文件,找到autoload一行,将开头换为require:
autoload :Source, "bundler/plugin/api/source"
#换为
require "bundler/plugin/api/source"
然后再次新建rails项目,一切都很美好了 ;)