我想在不运行捆绑安装的情况下获得Gem的版本。也就是说,我想弄清楚计划在不实际安装gem的情况下安装哪个版本的软件包。说从合并的Gemfile.lock(和Gemfile)中读取它。
有什么办法可以解决我计划安装的版本捆绑程序?
我需要这样做是因为我想在运行docker build时缓存昂贵的安装。
像rails(nokogiri)之类的宝石需要花费一些时间来安装,我想在运行捆绑安装之前的上一步中完成gem install rails -v ...。
为此,我需要事先获得rails版本
默认情况下,如果在Gemfile中未指定任何版本,运行bundle install
将尝试安装与您项目中其余gem和ruby版本兼容的gem的最新版本。如果不存在,这将创建一个Gemfile.lock文件。如果已经将Gemfile.lock文件提交给git repo,则应安装Gemfile.lock中指定的版本。捆绑程序的要点是处理依赖项,以确保您的堆栈正常工作。
要查看当前使用的宝石捆绑包的版本,可以运行
bundle show rails
例如,您可能需要在Gemfile中指定ruby版本。
ruby '~> 2.5' #
您可以像这样在Gemfile中指定gem的确切版本,只要它与堆栈的其余部分兼容,您应该可以依靠该版本来安装版本捆绑程序。bundle install
如果有不兼容的gem版本,将抛出错误。
gem 'rails', '4.2.11' # this will always install only this version.
您也可以使用悲观运算符(~>)
将其设置为仅进行次要更新
gem 'influxdb', '~> 0.6.1' # could go to 0.6.2 but never 0.7.0
您也可以设置最低版本,尽管这可能不是您所需要的。
gem 'pg_query', '>= 0.9.0'
如果您的存储库中已经有一个Gemfile.lock,则可以通过运行例如以下命令查看要安装的版本:
gem show rails
它将显示您的版本,并对其进行安装或不安装。
有关更多信息,请参见 bundle --help
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句