Rake Task работает на локальной машине, а не на герою
Вот мое простое задание по рейку:
desc 'Create objects from csv'
task :add_missing_information_from_url, [:url] => [:environment] do |t, args|
url = args[:url]
puts "STARTED"
CSV.new(open(url), :headers => :first_row).to_enum.with_index(1).each do |line, i|
user = User.find(line['id'])
next if user.nil?
user.flag = true
user.save
puts "#{i} - #{user.firstname}"
end
end
Для начала не делай ничего умного. Но по какой-то причине это не работает на Heroku. Вот как я выполняю задачу (мое пространство имен dbs):
heroku run rake dbs:add_missing_information_from_url['http://lvh.me/file.csv']
Или на машине разработчика:
bundle exec rake dbs:add_missing_information_from_url['http://lvh.me/file.csv']
Это единственный вывод, который я получаю из консоли при запуске задачи heroku:
Running `rake dbs:add_missing_information_from_url[http://lvh.me/file.csv]` attached to terminal... up, run.7246
И возвращается в мою оболочку после того, как она была выполнена, но ничего не напечатано, и пользовательские объекты не были сохранены
Однако, когда я запускаю его на своем компьютере разработчика, все работает нормально, начиная с печати STARTED
и далее.
Что я здесь не так делаю?
1 ответ
Это я или ваш журнал на самом деле выводит это:
Running `rake dbs:add_missing_information_from_url[http://lvh.me/file.csv]` attached to terminal... up, run.7246
Если вы внимательно посмотрите на аргумент в [http://lvh.me/file.csv]
кажется, что это не строка. Вы хотели бы, чтобы ваш журнал вывел ['http://lvh.me/file.csv']
,
Поэтому я предлагаю вам попробовать выполнить свою задачу следующим образом:
heroku run rake dbs:add_missing_information_from_url['"http://lvh.me/file.csv"']