【发布时间】:2012-03-30 12:39:12
【问题描述】:
我一直试图让 DelayedJob 在后台运行一些用户定义的方法。对于这个测试用例,我在帮助程序中定义了以下方法:
def test_case
u = User.new
u.first_name = "JimBob"
u.last_name = "joe"
u.email = "itworked@eureka.com"
u.password = "sailsJ123"
u.password_confirmation = "sailsJ123"
u.save
end
然后,在控制器动作中,我定义:
def action_name
#whatever it does outside of this
test_case
end
这会导致 test_case 在此处的操作运行时创建一个新用户。如果我试图推迟工作,我将其更改为:
def action_name
#whatever it does outside of this
self.delay.test_case
end
这会导致创建延迟作业,但有某些迹象表明我做错了:具体来说,延迟作业表中的处理程序包含在 action_name 其他地方加载的所有信息(在本例中是一个非常大的文件,大约 50000个字符),而不仅仅是一个指定运行 test_case 之类的简单处理程序。
如果我改变这个来继续测试,我已经尝试过:
def action_name
#whatever it does outside of this
u = User.new
u.first_name = "JimBob"
u.last_name = "joe"
u.email = "itworked@eureka.com"
u.password = "sailsJ123"
u.password_confirmation = "sailsJ123"
u.delay.save
end
这成功创建了一个 DJ,并且正如预期的那样,它加载了一个指定细节的处理程序(例如 u.name => "JimBob"...)。但是当作业运行时,不会创建新用户。我什至尝试切换它只是为了销毁一个用户(尽管考虑到密码字段的处理方式,我可能用 DJ 创建一个用户可能很困难)但这不起作用。
长话短说:
- 如何让 DJ 正确运行后台方法?
- 在创建看似简单的延迟作业的情况下,如何不对数据库进行任何更改?
【问题讨论】:
-
DJ 处理程序对象和方法名称是什么?
-
@AMIT 它只是“Delayed Job”的缩写。
标签: ruby-on-rails ruby-on-rails-3 delayed-job