Buduję silnik szyny, który wykorzystuje zagraniczne klucze podczas migracji.Warunkowe zależności ruby gem w gemspec
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
od wersji 4.2
szynach obsługuje kluczy obcych przez siebie, ale zanim użyliśmy foreigner
gem za to. Jeśli spróbujemy użyć foreigner
z rails 4.2
i nowszym, otrzymamy błąd.
Ponieważ zamierzam obsługiwać szyny począwszy od wersji 4.0.1, w moim gemspec muszę używać zależności warunkowej.
Znalazłem możliwe rozwiązanie here, ale nie mam pojęcia, jak sprawdzić wersję rails w gemspec.
# sidekiq-spy.gemspec
if RUBY_VERSION >= '2.1'
spec.add_development_dependency "curses", "~> 1.0"
end
UWAGA:
mam inne tymczasowe rozwiązanie: Właśnie sprawdzić Foreigner
dostępność w moich wędrówek. Jeśli jest niedostępna po prostu nie tworzą klucze obce:
if defined?(Foreigner)
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
end
Ale chciałbym dodać foreigner
zależność dla starych wersjach szynach.
Myślałeś dostarczania dwie różne wersje gem dla tego scenariusza? – iltempo
@iltempo, mogę nawet użyć jednej wersji dla obu scenariuszy. Wystarczy dodać, że musimy dodać "gem" obcokrajowca "' do 'Gemfile', jeśli wersja Rails jest mniejsza niż" 4.2 "i chcemy używać kluczy obcych. –