Rubygems:指定对gem最新版本的依赖

Rubygems: specify dependency on the latest version of a gem

我正在开发一个 gem A,它依赖于另一个 gem B。我需要我的 gem 的用户拥有最新版本的 B,无论它是什么。所以我想在我的 gemspec 中说

spec.add_dependency "B", :latest

原因是 B 包含一个需要最新版本的数据库驱动程序,否则数据库将拒绝连接。

所以换句话说,我需要在使用 gem 之前强制执行 gem update。在 gemspec 中有没有办法做到这一点?

我知道我可以将版本指定为大于或小于某个固定版本,但这不是我想要的。

我也可以从 git 获取 gem 代码 - 但从 master 分支获取它通常与将最新的 "stable" 版本推送到 [=31] 不同=]gems.

这样的事情怎么样:

require 'json'
require 'uri'
require 'open-uri'

nokogiri_uri = URI('https://rubygems.org/api/v1/gems/nokogiri.json')

version = nil

open(nokogiri_uri) do |f|
  json_str = f.read
  puts json_str

  hash = JSON.parse json_str
  version = hash['version']
  puts version
end

if version
  spec.add_dependency "nokogiri", version
else
  puts "My gem won't work because its dependencies are buggered."

--output:--
{"name":"nokogiri","downloads":33177312,"version":"1.6.6.2", ... }
1.6.6.2

由于文章 How to Cure Net::HTTP’s Risky Default HTTPS Behavior,我使用 open-uri 而不是 net/http 库。我不知道 ruby.

的最新版本是否解决了这个问题