【发布时间】:2011-07-01 05:43:54
【问题描述】:
我正在使用delayed_job 来延迟将信息从我的应用程序发送到FreeagentCentral(一个会计软件包)。同时它还使用 PostmarkApp 的 gem 发送两封电子邮件。
# POST /kases
# POST /kases.xml
def create
@company = Company.find(params[:kase][:company_id])
@kase = @company.kases.create!(params[:kase])
respond_to do |format|
UserMailer.delay.deliver_makeakase("email@address.com", "Highrise", @kase) if params[:sendtohighrise]
UserMailer.delay.deliver_makeakaseteam("email2@address.com", "Highrise", @kase) if params[:notify_team_of_creation]
@kase.delay.create_freeagent_project(current_user) if params[:send_to_freeagent]
#flash[:notice] = 'Case was successfully created.'
flash[:notice] = fading_flash_message("Case was successfully created.", 5)
format.html { redirect_to(@kase) }
format.xml { render :xml => @kase, :status => :created, :location => @kase }
end
end
上面的代码没有抛出任何错误——但是电子邮件没有被发送。我想知道我是否做错了什么?
应该是这样,还是我遗漏了什么:
UserMailer.delay.deliver_makeakaseteam("email2@address.com", "Highrise", @kase) if params[:notify_team_of_creation]
谢谢,
丹尼
更新
---
- !ruby/object:Delayed::Backend::ActiveRecord::Job
attributes:
created_at: 2011-02-21 13:30:38
locked_by:
failed_at:
updated_at: 2011-02-21 13:30:38
handler: |
--- !ruby/struct:Delayed::PerformableMethod
object: LOAD;UserMailer
method: :deliver_makeakase
args:
- email@email.com
- Highrise
- LOAD;Kase;19
priority: "0"
id: "1"
run_at: 2011-02-21 13:30:38
locked_at:
attempts: "0"
last_error:
attributes_cache: {}
- !ruby/object:Delayed::Backend::ActiveRecord::Job
attributes:
created_at: 2011-02-21 13:30:38
locked_by:
failed_at:
updated_at: 2011-02-21 13:30:38
handler: |
--- !ruby/struct:Delayed::PerformableMethod
object: LOAD;UserMailer
method: :deliver_makeakaseteam
args:
- email@email.com
- Highrise
- LOAD;Kase;19
priority: "0"
id: "2"
run_at: 2011-02-21 13:30:38
locked_at:
attempts: "0"
last_error:
attributes_cache: {}
=> nil
【问题讨论】:
-
他们是否进入了延迟工作表?如果是这样,它们是否被锁定并运行?他们是否在其中存储错误(DJ 将存储运行表中代码的异常)?延迟的作业工人是否正在运行?
-
工作必须运行才能完成 Freeagent 作业,不是吗?如何查看作业表?
-
是的,如果其他工作正在运行,则 DJ 正在运行。您可以随心所欲地检查作业表 - 它只是数据库中的一个表。你可以使用rails控制台..运行
y Delayed::Job.all -
好的,电子邮件显示在控制台中。我会更新我的问题。
标签: ruby-on-rails email queue gem delayed-job