我在OSX和Ubuntu中使用相同的rails应用程序,我想使用Zeus来加速我的rspec.在Ubuntu中,Zeus启动Ok,但在OSX中它总是崩溃.最后我发现问题,https://github.com/burke/zeus/issues/237#issuecomment-18700462 OSX和Ubuntu之间的区别是json gem的版本.我用的是gem list | grep json
Ubuntu节目
json (1.8.1, 1.8.0, 1.5.3) json_pure (1.5.3) json_spec (1.1.1) jsonpath (0.5.3) multi_json (1.8.2, 1.7.8, 1.0.3)
Mac显示
json (1.8.1, 1.7.7) json_spec (1.1.1) jsonpath (0.5.5, 0.5.3) multi_json (1.8.2, 1.7.8)
所以我想卸载1.7.7版本的json gem以使zeus启动,但是
gem uninstall json -v 1.7.7 ERROR: While executing gem ... (Gem::InstallError) gem "json" cannot be uninstalled because it is a default gem
我该怎么办?
所以根据我的判断,没有简单的命令可以将gemspec文件从默认文件夹移动到无默认文件夹.从我所知道的这是一件好事,但这里是如何手动执行此操作的说明.
找到默认规范的位置.Easies方式是进入irb
并运行follow命令
irb(main):001:0> File.join Gem::Specification.default_specifications_dir => "/Users/newdark/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/specifications/default"
这是构建gemspec路径的代码行 https://github.com/rubygems/rubygems/blob/v2.6.13/lib/rubygems/installer.rb#L420
获得文件路径后,只需将gem名称和版本从默认文件夹移动到父文件夹即可.
$ cd /Users/newdark/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/specifications/default $ mv json-1.7.7.gemspec ../
如果你这样做,gem list -d
你就不应再看到Installed at (default)
宝石版json-1.7.7旁边的文字了.然后gem uninstall json -v 1.7.7
,你可以在没有它的情况下与你战斗.如果你想撤消这一切只是运行gem install json -v 1.7.7 --default
我在使用默认版本的gem时遇到问题,接受的答案对我不起作用。对我有用的是安装与默认版本相同的版本,但没有默认标志,然后将其卸载。
gem install json -v '1.7.7'
然后,一旦完成:
gem uninstall json -v '1.7.7'