我有两个版本的ruby gem。
json (default: 2.0.2, 1.8.6)
此处,最新版本设置为默认值;但是我需要将json 1.8.6
设置为默认值。反正有没有将旧版本的宝石作为默认版本?我无法卸载默认的json版本。需要在可用的gem版本之间切换。
答案 0 :(得分:5)
检查您拥有的物品:
gem list json
设置您想要的一个:
gem install --default -v1.8.6 json
这对于诸如“捆绑器”之类的东西最有用!!! 在其他方面,使用捆绑程序和Gemfile可能是更好的选择。
答案 1 :(得分:2)
添加
gem 'json', '1.8.6'
到您的Gemfile
或执行
gem install 'json' -v 1.8.6 # may require sudo if you use system ruby
终端
答案 2 :(得分:2)
Gemfile
是必须的,但还不够。您还应该更改行
require 'json'
到
require 'bundler/setup'
Bundler.require :default
这将要求Gemfile
中指定的所有宝石没有group
。
答案 3 :(得分:0)
添加你的Gemfile
gem 'json', '1.8.6'
现在在命令行中运行
bundle update
这应该设置您需要的版本
答案 4 :(得分:0)
由于您正在使用RVM来管理Ruby版本,正如您在评论中所述,有一个简单的解决方案:为此应用程序创建一个私有捆绑包,并仅安装此捆绑包中所需的gem版本。
您可以这样做:
1)输入申请目录;
2)输入以下命令
rvm use ruby-2.4.0@your_app_name --ruby-version --create
(我假设您使用的是Ruby 2.4.0。如果这不是您的版本,请在上面的命令中相应地替换它。)
3)安装bundler gem
gem install bundler
4)确保您的Gemfile声明您需要的gem版本。在这种情况下,它必须有一行:
gem "json", "1.8.6"
5)现在运行
bundle install
你完成了!
警告:此过程将确保json gem
为1.8.6版。但是如果安装了其他某个gem需要较新版本的bundle install
,则json gem
可能会出现问题。在这种情况下,你必须以其他方式解决这个冲突。
要了解有关不同应用程序的不同软件包的更多信息,请阅读this。
我希望这会有所帮助。
答案 5 :(得分:-2)
上下文:
从 CLI 运行一个简单的 ruby 测试
ruby -I test test/controllers/api_controller_test.rb
错误:
您已经激活了 json 2.0.2,但是您的 Gemfile 需要 json 1.8.6。由于 json 是默认 gem,您可以删除对它的依赖,也可以尝试更新到支持 json 作为默认 gem 的较新版本的 bundler。 (Gem::LoadError)
解决方法是简单地使用 bundle exec 运行测试,如下所示:
bundle exec ruby -I test test/controllers/api_controller_test.rb