【发布时间】:2015-08-09 20:28:51
【问题描述】:
我正在对我的应用程序进行故障排除,以了解电子邮件无法通过 Rake 的原因。
我的用户模型:
class User < ActiveRecord::Base
def User.test
puts "a string is returned"
UserMailer.email_test
end
end
我的用户邮箱:
class UserMailer < ActionMailer::Base
def email_test
mail to: "test", subject: "test"
end
end
如果我从 rails 控制台 (User.test) 调用该方法,我将获得正确的输出:
a string is returned
Rendered user_mailer/email_test.html.erb within layouts/mailer (0.8ms)
Rendered user_mailer/email_test.text.erb within layouts/mailer (0.2ms)
UserMailer#email_test: processed outbound mail in 106.5ms
=> #<Mail::Message:69873560567220, Multipart: true, <To: test>, <Subject: test>, <Mime-Version: 1.0>, <Content-Type: multipart/alternative; boundary="--==_mimepart_55c7b5db58f18_16fd3f8cb2e279986086"; charset=UTF-8>>
现在我正在尝试将其移动到 lib/tasks/scheduler.rake 文件中的 rake 任务中,如下所示:
task :mytest => :environment do
User.test
end
当我调用任务时使用
rake mytest
我返回的唯一项目是字符串,但与电子邮件无关(见下文)。
bastien@bastien-ThinkPad-T540p:~/rails/app-505/lib/tasks$ rake mytest
(in /home/bastien/rails/app-505)
a string is returned
bastien@bastien-ThinkPad-T540p:~/rails/app-505/lib/tasks$
【问题讨论】:
-
在您的 User.test 类方法中使用
binding.pry之前的UserMailer.email_test。然后在运行 rake 任务时尝试从 pry 控制台调用UserMailer.email_test方法。看看它是否显示任何错误,或者你可以从那里得到任何线索。
标签: ruby-on-rails ruby rake-task