耙任务在本地机器上工作,而不是在heroku上工作

时间:2014-07-17 10:43:28

标签: ruby-on-rails ruby heroku

这是我简单的佣金任务:

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

在没有打印任何内容的情况下执行后返回我的shell,也不保存用户对象。

然而,当我在我的开发机器上运行它时,一切正常,从打印STARTED开始。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

是我还是你的日志实际输出了这个:

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"']