只有当用户使用特定版本的ruby时,才有可能添加宝石依赖项吗?
背景:,我正在开发一个使用Test::Unit::Autorunner等的项目的分叉。它们是ruby 1.8标准库的一部分,但在1.9.1中不是标准库的一部分,而是在“测试单元”gem中。我想添加一个依赖项,如果有人使用ruby 1.9.1或更高版本,安装“测试单元”gem,但如果他们使用1.8或更高版本,他们不需要安装任何东西。
发布于 2009-10-26 08:31:29
如果您查看依赖性,没有一个选择的红宝石版本。如果用户使用ruby1.9,也许可以使用post_install_message属性来告诉用户安装gem。
发布于 2012-04-12 22:14:20
我为一个项目做了这件事。诀窍是将脚本添加为扩展名,然后在用户的机器上安装时执行该脚本。
下面是我们的github的代码片段和链接:
首先,在gemspec中(我们实际上使用Rakefile来生成它,但结果是相同的) 来源
# This file *needs* to be named this, there are other files
# for other extension processors
s.extensions << 'ext/mkrf_conf.rb'然后是mkrf_conf.rb 来源中的相关行
require 'rubygems/dependency_installer.rb'
inst = Gem::DependencyInstaller.new
inst.install "test-unit" if RUBY_VERSION > "1.9"发布于 2011-07-03 18:47:29
Gem不支持条件依赖(除了上面提到的创业板构建器环境-as ),而且邦德勒也不是解决这个问题的可行选择--参见https://github.com/carlhuda/bundler/issues/1281
https://stackoverflow.com/questions/1620342
复制相似问题