编写Jeweler Rakefile,根据RUBY_引擎(RUBY或jruby)添加依赖项
我有一个Rakefile,其中包括:编写Jeweler Rakefile,根据RUBY_引擎(RUBY或jruby)添加依赖项,ruby,rubygems,jruby,Ruby,Rubygems,Jruby,我有一个Rakefile,其中包括: Jeweler::Tasks.new do |gem| # ... gem.add_dependency('json') end 这生成的gempec构建了一个无法安装在jruby上的gem,因为“json”gem是本机的 对于jruby,这必须是: Jeweler::Tasks.new do |gem| # ... gem.add_dependency('json-jruby') end 当RUBY_ENGINE==“java”时,如何
Jeweler::Tasks.new do |gem|
# ...
gem.add_dependency('json')
end
这生成的gempec构建了一个无法安装在jruby上的gem,因为“json”gem是本机的
对于jruby,这必须是:
Jeweler::Tasks.new do |gem|
# ...
gem.add_dependency('json-jruby')
end
当RUBY_ENGINE==“java”时,如何有条件地添加对“json jruby”的依赖关系
看起来我唯一的选择是手动编辑jeweler生成的gempec文件,以添加RUBY_引擎检查。但我宁愿避免这种情况,因为它有点违背了使用珠宝商的初衷
有什么想法吗?经过进一步挖掘,我得出结论,这里的问题与其说是Jeweler的局限性,不如说是如何命名
json jruby
gem的问题
在一个完美的世界中,jsonjruby
gem应该命名为json
。这样,当gem文件在JRuby下构建时(即jgem build json JRuby.gem
),生成的gem文件将命名为json-1.4.3-universal-java-1.6.gem
(RubyGems根据gempec中的“platform”属性命名该文件)。当以gem的名义安装适当的平台时,一切都是透明的。不需要显式地要求jsonjruby
。RubyGems会自动使用适当的版本
我已经联系了
json
gem的维护人员,看看他是否愿意将json-1.4.3-universal-java-1.6.gem添加到他的gemcutter repo中,但与此同时,您可以在这里下载jruby json gem:相关问题:不幸的是,这些问题都没有解决这个问题,我想这是珠宝商特有的。我感觉这里的答案是,这在当前版本的Jeweler中根本不可行。