对于Rails,我是初学者。我试着效仿这个例子:
http://ryanselk.com/2014/09/25/using-background-jobs-in-rails-42-with-active-job/
它说:
"可以从任何地方将作业添加到作业队列中。我们可以通过以下方式将作业添加到队列中:ResizeImage.perform_later' http://example.com/ex.png' "
[更新]对不起,我很蠢。我想出了这个任务:
namespace :simple do
# call from command line:
# rake simple:resize_images
desc "Resize images"
task resize_images: :environment do
Dir.foreach('storage') do |next_image|
puts next_image
next if next_image == '.' or next_image == '..'
ResizeImage.perform_later next_image
end
end
end
但现在我做了:
rake simple:resize_images
我得到了:
zacek2_phpP9JGif.jpg
rake aborted!
NameError: uninitialized constant ResizeImage
我试过了:
require ResizeImage
但这并没有解决问题。
我担心我不了解Rails中的加载方式。如何加载ResizeImage?
答案 0 :(得分:3)
我是否将其设置为cron作业?
没有
Active Job是一个框架,用于声明作业并使它们在各种排队后端上运行。
Active Job是排队后端的界面,例如sidekiq,delayed_job或resque。这只是一种编写后台作业的方法,您无需关心将使用哪个排队后端。
如何启动ActiveJob?
因此,ActiveJob不会自行运行后台作业。你仍然缺少一个后端。假设您已决定使用delayed_job:Get it installed,然后通过以下方式启动它:
script/delayed_job start
我不明白“任何地方”在哪里。
这意味着代码中的任何地方都可以写出类似的内容:
def send_registration_email
UserRegistraionMailJob.perform_later self
end