如何将特定的gem版本设为默认版本?

时间:2017-03-02 06:38:10

标签: ruby-on-rails ruby rubygems

我有两个版本的ruby gem。

json (default: 2.0.2, 1.8.6)

此处,最新版本设置为默认值;但是我需要将json 1.8.6设置为默认值。反正有没有将旧版本的宝石作为默认版本?我无法卸载默认的json版本。需要在可用的gem版本之间切换。

6 个答案:

答案 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