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.
的最新版本是否解决了这个问题
我正在开发一个 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.