如何在 ruby 脚本中更新 gem

How to update a gem in a ruby script

我有一个 ruby 脚本,其中指定了必要的 gem,例如

#!/usr/bin/env ruby
require 'bundler/inline'
require 'matrix'
gemfile do
  source 'https://rubygems.org'
  ruby '2.7.3'
  gem 'colorize'
  gem 'pry'
end

puts "warning".colorize(:red)

通常要更新 gem,我会输入类似 bundle update colorize 的内容,但这个 returns 是一个错误

Could not locate Gemfile 

那么如何更新此脚本中的 gem。我可以列出 Gemfile.lock 的等价物吗?

因为在单个文件 ruby 脚本中使用捆绑器使用最新安装的约束 gem,为了更新其中一个 gem,您只需要 运行 这个(根据你的例子)

gem update colorize

现在您的脚本将使用最新的 colorize gem 版本。

According to the docs 运行 该文件将安装依赖项。但是,如果没有生成锁定文件,您可能希望在 gemfile 块中手动指定版本:

gemfile do
  source 'https://rubygems.org'
  ruby '2.7.3'
  gem 'colorize', '~> 0.8.1'
  gem 'pry', '~> 0.14.1'
end

您的脚本可能不会与库的所有版本兼容,因此在没有锁定文件时添加版本限制可能是个好主意。然后当你想升级的时候,你更新号码,Bundler应该安装新版本。