rake 任务在本地运行,但不在 Heroku 上运行

rake task runs locally, but not on Heroku

我写了一个 rake 任务,将我程序中提醒的时间更新到第二天。

namespace :add_day do
  desc "add day to reminders"
  task :ad => :environment do
    # grab all reminders
    reminders = Reminder.all
    puts reminders
    # add one day to reminders
    reminders.each do |r|
      puts r.time
      r.time = r.time + 60*60*24
      puts r.time
      r.save!
      puts "saved"
      # reschedule reminders
        r.reminder
        puts "reminder sent"
    end
  end
end

此任务 运行 在本地完成,没有任何错误。但是,当我尝试在 heroku 上 运行 它时,它出错了。 运行 在本地,控制台输出:

#<Reminder:0x007fa17d2ed698>
#<Reminder:0x007fa17d2ed4e0>
#<Reminder:0x007fa17d2ed238>
2015-07-27 01:20:00 UTC
2015-07-28 01:20:00 UTC
saved
reminder sent
2015-07-24 19:53:00 UTC
2015-07-25 19:53:00 UTC
saved
reminder sent
2015-07-24 20:25:00 UTC
2015-07-25 20:25:00 UTC
saved
reminder sent

Heroku 控制台输出:

#<Reminder:0x007f29366a0408>
#<Reminder:0x007f29366a00e8>
#<Reminder:0x007f29366a7d48>
2015-07-20 22:40:00 UTC
2015-07-21 22:40:00 UTC
saved
rake aborted!
Heroku::API::Errors::NotFound: Expected(200) <=> Actual(404 Not Found)

body: "App not found."

heroku 日志是:

2015-07-15T13:48:46.144676+00:00 heroku[api]: Starting process with command `bundle exec rake add_day:ad` by nmaneth@mersoft.com
2015-07-15T13:48:51.262221+00:00 heroku[run.4172]: State changed from starting to up
2015-07-15T13:48:51.585926+00:00 heroku[run.4172]: Awaiting client
2015-07-15T13:48:51.944009+00:00 heroku[run.4172]: Starting process with command `bundle exec rake add_day:ad`
2015-07-15T13:49:06.273951+00:00 heroku[run.4172]: Process exited with status 1
2015-07-15T13:49:06.290969+00:00 heroku[run.4172]: State changed from up to complete

所有其他 rake 任务 (db:migrate...) 工作正常,"app not found" 错误不会出现在任何其他情况下。

你知道为什么会这样吗?似乎没有其他人在堆栈溢出时遇到同样的问题

谢谢

所以它在将延迟的作业添加到队列时卡住了(这就是 r.reminder 所做的)。我正在使用 workless gem 并且 "App not found" 错误意味着 workless 无法在 heroku 上找到具有 APP_NAME env 变量的应用程序。我将它设置为 git 存储库的名称,而不是 heroku 生成的名称。切换后一切正常。