Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要特定版本的RubyGems_Ruby_Rubygems - Fatal编程技术网

需要特定版本的RubyGems

需要特定版本的RubyGems,ruby,rubygems,Ruby,Rubygems,我想为一个项目提供一个特定版本的RubyGems。我的测试在2.5.x中失败,但在2.6.x中通过,所以我想确保用户使用的是2.6.x或更高版本。我知道你可以使用RubyGems,但是你能像普通gems那样“需要”一个特定的版本吗?你可以在你的配置/初始化器中添加一个启动检查,如果Ruby gems版本错误,它将阻止Rails启动应用程序 在config/initializers/gem_version_check.rb中创建一个新文件,并将以下代码添加到其中: required_rubygem

我想为一个项目提供一个特定版本的RubyGems。我的测试在2.5.x中失败,但在2.6.x中通过,所以我想确保用户使用的是2.6.x或更高版本。我知道你可以使用RubyGems,但是你能像普通gems那样“需要”一个特定的版本吗?

你可以在你的配置/初始化器中添加一个启动检查,如果Ruby gems版本错误,它将阻止Rails启动应用程序

在config/initializers/gem_version_check.rb中创建一个新文件,并将以下代码添加到其中:

required_rubygems_version
if Gem.rubygems_version < Gem::Version.new(required_rubygems_version)
  raise RuntimeError,  "Ruby Gems version is #{Gem.rubygems_version}, but this project requires Ruby Gems >= #{required_rubygems_version} to be used."
end
如果Ruby Gems版本在启动时出错,这将引发异常并导致应用程序初始化失败

/Users/spock/devo/games/config/initializers/gems\u version\u check.rb:3:in`:Ruby gems版本为2.4.8,但此项目要求使用Ruby gems>=2.6。运行时错误


请注意,每次启动Rails服务器时,以及在所有环境中,该程序都会运行,因此它还会执行健全性检查,以确保测试和生产环境的配置正确。

我不认为在一次Ruby安装中可以从多个rubygems版本中进行选择。但您可以确保正在使用所需的版本。将以下内容放在应用程序启动初期将运行的位置,例如Gemfile的顶部,它只是一个Ruby文件,或者放在不使用bundler的脚本的开头:

required_rubygems_version = '2.6.0'
if Gem.rubygems_version < Gem::Version.create(required_rubygems_version)
  raise "Please upgrade to rubygems #{required_rubygems_version}"
end

在什么环境下需要?@tadman不知何故提醒试图运行测试和开发代码的开发人员,他们的RubyGems版本本身低于要求的版本。运行bundle安装将安装正确的gems,但不会说明任何关于RubyGems的内容。问题的出现是因为ruby-2.3.1当时安装了rubygems-2.5.x,但我遇到的问题只有使用rubygems-2.6.x才能解决。我想答案可能是“将其添加到文档中”,但由于其他所有内容都可以检查,我希望这也可以。听起来像是添加到文档中的步骤。如果rubygems有两位数的次要版本号,例如2.10.0,这种方法将产生误报。但到目前为止还没有!我已经为未来的红宝石爱好者使版本检查更加健壮。