ruby-on-rails 如何将特定的gem版本设置为默认版本?

gg0vcinb  于 2023-04-13  发布在  Ruby
关注(0)|答案(7)|浏览(262)

我有两个版本的ruby gem。

json (default: 2.0.2, 1.8.6)

这里,最新版本被设置为默认;但是我需要将json 1.8.6设置为默认值。是否有任何方法将旧版本的gem设置为默认值?因为我无法卸载默认的json版本。需要在可用的gem版本之间切换。

jfewjypa

jfewjypa1#

检查您拥有的内容:

gem list json

设置你想要的:

gem install --default -v1.8.6 json

这对于像“bundler”这样的东西最有用!!!对于其他东西,使用bundler和一个Gemfile可能是一个更好的选择。

djmepvbi

djmepvbi2#

gem 'json', '1.8.6'

到您的Gemfile或执行

gem install 'json' -v 1.8.6 # may require sudo if you use system ruby

从终端。

56lgkhnf

56lgkhnf3#

Gemfile是必须的,但还不够。您还应该更改行

require 'json'

require 'bundler/setup'
Bundler.require :default

这将需要您的Gemfile中指定的所有gem,而不需要group

2cmtqfgy

2cmtqfgy4#

将此添加到您的Gemfile

gem 'json', '1.8.6'

现在在命令行中运行这个命令

bundle update

这应该设置您需要的版本

busg9geu

busg9geu5#

因为你使用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需要更新版本的json gem,则您的bundle install可能会出现问题。在这种情况下,您必须通过其他方式解决此冲突。

要了解有关不同应用程序的不同捆绑包的更多信息,请阅读this
希望这能帮上忙。

pkln4tw6

pkln4tw66#

您可以手动将相关.gemspec文件从
lib\ruby\gems\3.2.0\specifications\default\

lib\ruby\gems\3.2.0\specifications\
取消将gem标记为默认值。

ryevplcw

ryevplcw7#

背景:
从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

相关问题