Ответ Майка работает без проблем, если у вас есть только один оператор в файле, но если есть больше операторов (например, несколько вставок и обновлений), ActiveRecord завершится ошибкой, так как по умолчанию не поддерживает несколько операторов с одним вызовом .
Одним из решений было бы изменение ActiveRecord для поддержки нескольких операторов, как указано здесь .
Другое решение состояло бы в том, чтобы ваш файл SQL содержал только одну инструкцию на строку и использовал цикл, подобный
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