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 生成的名称。切换后一切正常。
我写了一个 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 生成的名称。切换后一切正常。