我有一个包含这个的Rakefile:
Jeweler::Tasks.new do |gem|
# ...
gem.add_dependency('json')
end
这个生成的gemspec构建了一个无法安装在jruby上的gem,因为'json'gem是原生的 .
对于jruby,这必须是:
Jeweler::Tasks.new do |gem|
# ...
gem.add_dependency('json-jruby')
end
当RUBY_ENGINE =='java'时,如何有条件地添加'json-jruby'的依赖项?
似乎我唯一的选择是手动编辑珠宝商生成的gemspec文件以添加RUBY_ENGINE检查 . 但我宁愿避免这种情况,因为它首先打败了使用珠宝商的目的 .
有任何想法吗?
1 回答
经过一番挖掘后,我对珠宝商的限制如此之大,因为
json-jruby
宝石的命名方式存在问题 .在完美的世界中,
json-jruby
gem应仅命名为json
. 这样,当在JRuby(即jgem build json-jruby.gem
)下构建gem文件时,生成的gem文件将被命名为json-1.4.3-universal-java-1.6.gem
(RubyGems根据gemspec中的'platform'属性命名该文件) . 当在gem名称中安装适当的平台时,一切都透明地工作 . 没有必要明确要求json-jruby
. RubyGems自动使用适当的版本 .我已经联系了
json
gem的维护者,看看他是否愿意将json-1.4.3-universal-java-1.6.gem添加到他的gemcutter repo中,但在此期间你可以下载drop-in jruby json gem:http://roughest.net/json-1.4.3-universal-java-1.6.gem