我一直在研究一些我想分享的实用程序(而不是库)。使用rubygems打包它们的正确方法是什么?有没有最好的做法?
具体来说,我想知道如何处理用户具有多个版本的依赖项的可能性。 Bundler在开发环境中表现出色;最终用户应用程序是否有任何等价物?有没有办法使用gemspec
自动要求所有指定宝石的正确版本?
我知道有几个 package-everything-as-executable 解决方案,但我想避免使用它们。我认为用户应该能够发布gem install my_utility
并获得具有正确依赖关系的最新版本,并且仍然拥有一个理智的环境。
答案 0 :(得分:2)
看起来你最大的问题是如何在使用gemspec文件时获得正确的gem依赖版本,我是对的吗?
嗯,这是典型的gemspec文件的一个例子:
Gem::Specification.new do |spec|
spec.name = "hello_world"
spec.version = "0.1.0"
spec.author = "Bilbo Baggins"
# Here's a gem dependency
spec.add_dependency "json", ">= 0.4.0"
end
如果您想使用仅 json版本1.5.4,请尝试以下方法:
Gem::Specification.new do |spec|
# ...
spec.add_dependency "json", "= 0.4.0"
end
这只会确保已经安装了指定的版本,但实际上确保在实用程序中加载,您可以这样做:
gem "json", "= 0.4.0"
require "json"
答案 1 :(得分:1)
您可以使用bundler来开发宝石。