有没有办法在 运行 捆绑包安装之前获得 gem 的版本(来自 Gemfile.lock)
Is there a way to get a gem's version before running bundle install (from Gemfile.lock)
我想获得 Gem 的版本,但没有 运行 捆绑安装。
也就是说我想弄清楚计划安装什么版本的包而不实际安装 gem。
假设从 Gemfile.lock(和 Gem 文件)合并读取它。
有什么方法可以解决捆绑程序计划安装的版本?
我需要这个,因为我想在 运行 docker 构建时缓存昂贵的安装。
Gems like rails(nokogiri) 需要一段时间来安装,我想做 gem install rails -v ... 运行 捆绑包安装之前的步骤。
为此,我需要先获取 rails 版本
如果您将新的 gem 添加到 gem 文件,但没有添加 bundle install
,它还不会安装。相反,您可以 运行 bundle lock
,这会生成一个新的锁定文件。这包括将要安装的新 gem 的 gem 版本。
通过 运行ning bundle show new_gem
,它表明它实际上并没有安装。
为了确保在 运行 执行命令之前可能会备份原始 Gemfile.lock
。
默认情况下,如果 Gemfile 中未指定版本,运行ning bundle install
将尝试安装与其余 gem 兼容的最新版本 gems 和 ruby 版本在您的项目中。这将创建一个 Gemfile.lock 文件(如果尚不存在)。如果 Gemfile.lock 文件已经提交到 git 存储库,则它应该安装 Gemfile.lock 中指定的版本。捆绑器的要点是处理依赖关系以确保您的堆栈正常工作。
要查看当前正在使用的 gem 捆绑器的版本,您可以 运行
bundle show rails
例如,您可能希望在 Gemfile 中指定 ruby 版本
ruby '~> 2.5' #
您可以像这样在 Gemfile 中指定 gem 的确切版本,只要它与堆栈的其余部分兼容,您就应该能够依赖它作为版本捆绑器将安装的版本。如果 gem 版本不兼容,bundle install
将抛出错误。
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,您可以看到 运行ning 将安装哪个版本,例如:
gem show rails
这会告诉你版本和当前安装与否。
有关详细信息,请参阅 bundle --help
我想获得 Gem 的版本,但没有 运行 捆绑安装。 也就是说我想弄清楚计划安装什么版本的包而不实际安装 gem。 假设从 Gemfile.lock(和 Gem 文件)合并读取它。
有什么方法可以解决捆绑程序计划安装的版本?
我需要这个,因为我想在 运行 docker 构建时缓存昂贵的安装。
Gems like rails(nokogiri) 需要一段时间来安装,我想做 gem install rails -v ... 运行 捆绑包安装之前的步骤。
为此,我需要先获取 rails 版本
如果您将新的 gem 添加到 gem 文件,但没有添加 bundle install
,它还不会安装。相反,您可以 运行 bundle lock
,这会生成一个新的锁定文件。这包括将要安装的新 gem 的 gem 版本。
通过 运行ning bundle show new_gem
,它表明它实际上并没有安装。
为了确保在 运行 执行命令之前可能会备份原始 Gemfile.lock
。
默认情况下,如果 Gemfile 中未指定版本,运行ning bundle install
将尝试安装与其余 gem 兼容的最新版本 gems 和 ruby 版本在您的项目中。这将创建一个 Gemfile.lock 文件(如果尚不存在)。如果 Gemfile.lock 文件已经提交到 git 存储库,则它应该安装 Gemfile.lock 中指定的版本。捆绑器的要点是处理依赖关系以确保您的堆栈正常工作。
要查看当前正在使用的 gem 捆绑器的版本,您可以 运行
bundle show rails
例如,您可能希望在 Gemfile 中指定 ruby 版本
ruby '~> 2.5' #
您可以像这样在 Gemfile 中指定 gem 的确切版本,只要它与堆栈的其余部分兼容,您就应该能够依赖它作为版本捆绑器将安装的版本。如果 gem 版本不兼容,bundle install
将抛出错误。
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,您可以看到 运行ning 将安装哪个版本,例如:
gem show rails
这会告诉你版本和当前安装与否。
有关详细信息,请参阅 bundle --help