我开始与Backburner在我的应用程序的后台运行一些工作。我已经尝试遵循文档下的"工作工作",但我显然在做一些非常明显和非常不正确的事情。
Gemfile:
gem 'backburner'
Rakefile:
require_relative 'config/application'
require 'backburner/tasks'
Rails.application.load_tasks
然后在rails控制台:
rake backburner:work
(我认为这将运行所有挂起的,排队的后台作业。)
但是我得到的是错误:NameError: undefined local variable or method 'work' for main:Object from (pry):1:in '__pry__'
我sorta知道pry做什么(我用它把binding.pry
扔到我的代码中进行调试,但仅此而已),但我不知道它是如何导致这种情况的。更不用说我在整个工作和耙任务方面仍然很弱。
任何帮助将非常感激!
很明显我最近总是问一些愚蠢的问题。我正在传递一个变量给我的Backburner.enqueue
,这是一个ID,所以我希望它是数值的,像这样:@admin.id
。这将是很好的,如果@admin是在我调用我的enqueue的助手的范围内定义的,但我实际上是传递该变量的助手方法…这意味着@admin没有定义,这,猜猜Daniel,意味着@admin.id
是未定义的。这意味着我击中工作无论如何(因为不,Backburner实际上没有打破),但我没有得到工作排队的方式,我认为我是,因为我传递了一个无效的属性给它。
所以结果是我得到的错误看起来与问题完全无关,但它就是这样。总是传递你的方法所期望的变量,否则就会出现错误。
编辑:
而且,我不能否决我自己的帖子。我试过了。这是值得的。
编辑2:
事实证明,在Heroku上获得beanstalkd真的很难/不支持。火线。我也应该检查一下。我只是喜欢beanstalk处理一些事情的方式,并在部署之前使用它,并意识到它是不可用的。
相反,我按照Heroku的建议选择了Resque。他们还支持延迟作业(DJ),但注意到它相当沉重,而Resque更好。
总而言之,我最终到达了我需要使用Resque的地方,并且因为它是这样的一个东西我做了一个小文档来帮助我(可能还有任何其他偶然发现这篇蹩脚文章的悲伤的灵魂)在将来在heroku托管的Rails应用程序上运行后台工作器。需要注意的是:这本书对于像我这样的傻瓜来说确实是一本指南,因为很多现在对我来说相当明显的东西,我都是自己琢磨出来的。我所包含的Resque文档中有一些空白,这些空白实际上只是归结为明确说明某些事物的含义以及它们的去向。