Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写Jeweler Rakefile,根据RUBY_引擎(RUBY或jruby)添加依赖项_Ruby_Rubygems_Jruby - Fatal编程技术网

编写Jeweler Rakefile,根据RUBY_引擎(RUBY或jruby)添加依赖项

编写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”时,如何

我有一个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”时,如何有条件地添加对“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中根本不可行。