La risposta di Mike funziona senza problemi se nel file è presente una sola istruzione, ma se sono presenti più istruzioni (più inserimenti e aggiornamenti, ad esempio), ActiveRecord avrà esito negativo poiché non supporta più istruzioni con una chiamata per impostazione predefinita.
Una soluzione potrebbe essere quella di modificare ActiveRecord per supportare più istruzioni, come indicato here.
Altro soluzione sarebbe quella di assicurarsi che il file SQL contiene una sola istruzione per riga e utilizzare un ciclo come
source = File.open "db/foo.sql", "r"
source.readlines.each do |line|
line.strip!
next if line.empty? # ensure that rows that contains newlines and nothing else does not get processed
execute line
end
source.close
ActiveRecord :: Base .establish_connection ActiveRecord :: Base.connection.execute (sql) – drhenner