[英]How to make a specific gem version as default?
我有两个版本的 ruby gem。
json (default: 2.0.2, 1.8.6)
这里,最新版本设置为默认; 但是我需要将json 1.8.6
设置为默认值。 无论如何,是否可以将旧版本的 gem 设为默认值? 因为我无法卸载默认的 json 版本。 需要在可用的 gem 版本之间切换。
检查你有什么:
gem list json
设置你想要的:
gem install --default -v1.8.6 json
这对诸如“捆绑器”之类的东西最有用!!! 对于其他事情,使用 bundler 和 Gemfile 可能是更好的选择。
添加
gem 'json', '1.8.6'
到您的Gemfile
或执行
gem install 'json' -v 1.8.6 # may require sudo if you use system ruby
从终端。
Gemfile
是必须的,但还不够。 你也应该改变行
require 'json'
到
require 'bundler/setup'
Bundler.require :default
这将需要您的Gemfile
中指定的所有 gems 没有group
。
将此添加到您的 Gemfile
gem 'json', '1.8.6'
现在在你的命令行中运行它
bundle update
这应该设置您需要的版本
由于您使用 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。 但是,如果bundle install
其他一些 gem 需要较新版本的json gem
,则您的bundle install
可能会出现问题。 在这种情况下,您必须以其他方式解决此冲突。
要了解有关不同应用程序的不同捆绑包的更多信息,请阅读此。
我希望这有帮助。
语境:
从 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。 (宝石::加载错误)
解决方法只是使用 bundle exec 运行测试,如下所示:
bundle exec ruby -I test test/controllers/api_controller_test.rb
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.