Я пытался выполнить простую задачу добавления штатов в страну в моем новом проекте.
Я добавил задачу rake, чтобы остальная часть моей команды могла просто запустить ее, и они готовы к работе, и то же самое для производства.
task :add_canada_states => :environment do
puts "Finding Canada"
canada = Country.find_by_name("Canada")
if canada.present?
puts "Found canada"
canada_states_hash = [
{name: "Ontario", code: "ON"},
{name: "Quebec", code: "QC"},
{name: "Nunavut", code: "NU"},
{name: "Northwest Territories", code: "NWT"},
{name: "Nova Scotia", code: "NS"},
{name: "New Brunswick", code: "NB"},
{name: "Manitoba", code: "MB"},
{name: "British Columbia", code: "BC"},
{name: "Prince Edward Island", code: "PE"},
{name: "Saskatchewan", code: "SK"},
{name: "Yukon", code: "YT"},
{name: "Alberta", code: "AB"},
{name: "Newfoundland and Labrador", code: "NL"}
]
canada.states.create(canada_states_hash)
else
puts "Countries are not there"
end
end
После локального запуска задачи вывод был
Finding Canada
Found canada
Как и ожидалось, я дважды проверил базу данных и нашел записи.
Я сделал то же самое на рабочем сервере (heroku)
Он напечатал тот же результат
Finding Canada
Found canada
Проверив базу данных на наличие записей, я обнаружил, что они не были добавлены!
Я скопировал код и вставил его в консоль heroku rails.
И он добавил данные.
Это очень странное поведение. Что мне не хватает?