我正在构建一个Ruby库作为相关宝石的集合。所有的宝石都属于一个metagem。结构如下所示:
mygem/
lib/
mygem-piece1/
lib/
mygem-piece2/
lib/
我希望所有这些宝石共享一个版本。我可以手动保持同步,但这将是乏味和容易出错的。有一个更好的方法吗?
答案 0 :(得分:1)
假设mygem
是元宝石,您需要创建mygem/lib/mygem/version.rb
:
# mygem/lib/mygem/version.rb
module MyGem
VERSION = '1.0.0'
end
然后,在复合宝石的每个子文件夹中,您将拥有gemspec
。例如:
# mygem/mygem-piece1/mygem-piece1.gemspec
require_relative '../../lib/mygem/version'
Gem::Specification.new do |gem|
# ...
gem.version = MyGem::VERSION
end
(注意:此解决方案需要Ruby 1.9 +)。
然后,当您想要更改版本时,只需编辑单个版本文件并释放新的gem。当您推送到Rubygems时,Gemspecs被解释然后写成YAML,因此该值将在运行时“计算”。