gemspec中的条件ruby gem依赖项

时间:2015-12-02 11:31:15

标签: ruby rubygems gemspecs

我正在构建一个在迁移中使用外键的rails引擎。

   using System.Linq;

从版本 add_foreign_key "theblog_content_nodes", "theblog_content_statuses", column: :content_status_id rails支持外键,但在我们使用4.2 gem之前。如果我们尝试将foreignerforeigner及更新一起使用,我们会收到错误。

因为我要从4.0.1开始支持rails,我必须在我的gemspec中使用条件依赖。

我找到了可能的解决方案here,但我不知道如何检查gemspec中的rails版本。

rails 4.2

注意:

我还有另一个临时解决方案:我只是检查迁移中的# sidekiq-spy.gemspec if RUBY_VERSION >= '2.1' spec.add_development_dependency "curses", "~> 1.0" end 可用性。如果它不可用,我只是不创建外键:

Foreigner

但我想为旧的rails版本添加if defined?(Foreigner) add_foreign_key "theblog_content_nodes", "theblog_content_statuses", column: :content_status_id end 依赖项。

1 个答案:

答案 0 :(得分:2)

要访问rails版本,我们可以使用类似下面的内容(基于this answer):

require 'rubygems'

rails_gem = Gem::Specification.select {|z| z.name == "rails"}.max_by {|a| a.version}
p rails_gem.version.version
#=> "4.2.5"