I'm building a rails engine which uses foreign keys in migrations.
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
From the version 4.2
rails supports foreign keys by itself but before we used foreigner
gem for this. If we try to use foreigner
with rails 4.2
and newer we get an error.
So since I'm going to support rails starting from 4.0.1 I have to use conditional dependency in my gemspec.
I found possible solution here but I have no idea how to check rails version in the gemspec.
# sidekiq-spy.gemspec
if RUBY_VERSION >= '2.1'
spec.add_development_dependency "curses", "~> 1.0"
end
NOTE:
I have another temporary solution: I just check Foreigner
availability in my migrations. If it is unavailable I just don't create foreign keys:
if defined?(Foreigner)
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
end
But I'd like to add foreigner
dependency for old rails versions.
To access rails version, we can use something like below (based on 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"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With