首页 文章

编写一个Jeweler Rakefile,根据RUBY_ENGINE(ruby或jruby)添加依赖项

提问于
浏览
3

我有一个包含这个的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 回答

  • 2

    经过一番挖掘后,我对珠宝商的限制如此之大,因为 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

相关问题