【发布时间】:2023-03-30 23:57:01
【问题描述】:
我无法让 reminder.rake 在生产环境中工作。我收到一个错误。
namespace :challenges do
desc 'Send email to users with challenges who want reminder'
task challenge_reminder: :environment do
self.all.each do |challenge|
UserMailer.challenge_reminder(self).deliver_now # Tried (challenge) instead of (self), same error too
end
end
end
heroku 调度程序
跟踪错误
Anthony-Gallis-MacBook-Pro:livetochallenge galli01anthony$ heroku run rake challenges:challenge_reminder --trace
Running rake challenges:challenge_reminder --trace on livetochallenge... up, run.7666
rake aborted!
NoMethodError: undefined method `all' for main:Object
/app/lib/tasks/reminder.rake:4:in `block (2 levels) in <top (required)>'
Tasks: TOP => challenges:challenge_reminder
(See full trace by running task with --trace)
Anthony-Gallis-MacBook-Pro:livetochallenge galli01anthony$
作为一个示例,我有以下工作,所以我知道设置 whenever gem 或 heroku 调度程序不是问题:
namespace :challenges do
desc 'Clean the challenge freebies and freebie_dates'
task clean: :environment do
Challenge.update_all(freebie: 0, freebie_date: nil)
end
end
【问题讨论】:
-
您在此处粘贴的行是哪一行?
-
那不是来源。该文件的第 4 行是什么?那是最后的sn-p吗?
-
您还没有弄清楚该文件的第 4 行包含什么。那里不应该出现对
rake的引用。 -
这很奇怪,我猜它们之间的联系是多么的紧密。一个文件中的一个错误会影响另一个文件吗?我将删除该文件并更新问题@tadman
-
是的,当您移动代码时,上下文/范围会发生变化。所以你必须把
self.all.each do |challenge|改成Challenge.all.each do |challenge|
标签: ruby-on-rails ruby heroku rake whenever