Sto costruendo un motore di rotaie che utilizza chiavi esterne nelle migrazioni.dipendenze gemma rubino condizionale all'interno di un gemspec
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
dalla versione 4.2
rotaie supporta le chiavi esterne di per sé, ma prima abbiamo usato foreigner
gioiello per questo. Se proviamo a utilizzare foreigner
con rails 4.2
e più recente si ottiene un errore.
Quindi, dal momento che ho intenzione di supportare i binari a partire dalla 4.0.1, devo utilizzare la dipendenza condizionale nel mio gemspec.
Ho trovato la soluzione possibile here ma non ho idea di come controllare la versione di rails nel gemspec.
# sidekiq-spy.gemspec
if RUBY_VERSION >= '2.1'
spec.add_development_dependency "curses", "~> 1.0"
end
NOTA:
ho un'altra soluzione temporanea: ho solo controllare Foreigner
disponibilità nei miei migrazioni. Se è disponibile solo che non mi creo chiavi esterne:
if defined?(Foreigner)
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
end
Ma vorrei aggiungere foreigner
dipendenza per le vecchie versioni rotaie.
ne pensi fornire due diverse versioni del vostro gioiello per che gli scenari? – iltempo
@iltempo, posso persino usare l'unica versione per entrambi gli scenari. Basta aggiungere la nota che dobbiamo aggiungere 'gem" foreigner "' a 'Gemfile' se la versione di Rails è inferiore a' 4.2' e vogliamo usare chiavi esterne. –