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"']
Другие вопросы по тегам