gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:24 26 4
gpt4 key购买 nike

我有一个包含以下内容的 Rakefile:

Jeweler::Tasks.new do |gem|
# ...
gem.add_dependency('json')
end

此生成的 gemspec 构建了一个无法安装在 jruby 上的 gem,因为“json”gem 是 native 的。

对于 jruby,这必须是:

Jeweler::Tasks.new do |gem|
# ...
gem.add_dependency('json-jruby')
end

当 RUBY_ENGINE == 'java' 时,如何有条件地添加 'json-jruby' 的依赖项?

似乎我唯一的选择是手动编辑珠宝商生成的 gemspec 文件以添加 RUBY_ENGINE 检查。但我宁愿避免这种情况,因为它首先违背了使用珠宝商的目的。

有什么想法吗?

最佳答案

在深入研究之后,我得出的结论是这里的问题与其说是 Jeweler 中的限制,不如说是 json-jruby gem 的命名方式的问题.

在一个完美的世界里,json-jruby gem 应该被命名为 json。这样,当在 JRuby 下构建 gem 文件时(即 jgem build json-jruby.gem),生成的 gem 文件将被命名为 json-1.4.3-universal-java-1.6。 gem(RubyGems 根据 gemspec 中的“平台”属性命名文件)。当在 gem 名称中使用适当的平台安装时,一切都是透明的。无需明确要求 json-jruby。 RubyGems 会自动使用适当的版本。

我已经联系了 json gem 的维护者,看他是否愿意将 json-1.4.3-universal-java-1.6.gem 添加到他的 gemcutter 存储库中,但是同时,您可以在此处下载嵌入式 jruby json gem:http://roughest.net/json-1.4.3-universal-java-1.6.gem

关于ruby - 编写一个 Jeweler Rakefile,根据 RUBY_ENGINE(ruby 或 jruby)添加依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2917754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com