7

移行で外部キーを使用する Rails エンジンを構築しています。

    add_foreign_key "theblog_content_nodes",
                    "theblog_content_statuses", column: :content_status_id

このバージョンから、4.2Rails は単独で外部キーをサポートしますが、以前はforeignergem を使用していました。foreignerwith以降で使用しようとするとrails 4.2、エラーが発生します。

したがって、4.0.1 からレールをサポートする予定なので、gemspec で条件付き依存関係を使用する必要があります。

ここで可能な解決策を見つけましたが、gemspec でレールのバージョンを確認する方法がわかりません。

# 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",
                  "theblog_content_statuses", column: :content_status_id
end

foreignerしかし、古いレール バージョンの依存関係を追加したいと思います。

4

1 に答える 1

2

Rails バージョンにアクセスするには、以下のようなものを使用できます (この回答に基づく):

require 'rubygems'

rails_gem = Gem::Specification.select {|z| z.name == "rails"}.max_by {|a| a.version}
p rails_gem.version.version
#=> "4.2.5"
于 2015-12-02T12:24:05.090 に答える