gemspec中的条件ruby gem依赖项

我正在构建一个在迁移中使用外键的rails引擎.
add_foreign_key "theblog_content_nodes","theblog_content_statuses",column: :content_status_id

从版本4.2开始,rails支持外键,但在我们使用foreigner gem之前.如果我们尝试使用带有rails 4.2和更新版本的外国人,我们会收到错误.

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

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

# sidekiq-spy.gemspec

if RUBY_VERSION >= '2.1'
  spec.add_development_dependency "curses","~> 1.0"
end

注意:

我有一个临时解决方案:我只是检查迁移中的Foreigner可用性.如果它不可用我只是不创建外键:

if defined?(Foreigner)
  add_foreign_key "theblog_content_nodes",column: :content_status_id
end

但我想为旧的rails版本添加外国人依赖.

解决方法

要访问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"

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...