Backburner rake任务 - NameError:未定义的局部变量或方法

时间:2016-09-22 14:37:09

标签: jobs ruby-on-rails-5 rake-task beanstalkd

我开始使用Backburner在我的应用程序后台运行一些工作。我已经尝试过documentation"工作岗位",但我显然做了一些非常明显且非常不正确的事情。

的Gemfile:

gem 'backburner'

Rake文件:

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扔进我的代码中进行调试,但那是关于它的),但我不知道它是怎么回事可能是造成这种情况。更不用说我在整个工作岗位上仍然相当薄弱,并且总体而言耙前任务。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

最近我显然是在提出愚蠢的问题。我正在将一个变量传递给我的Backburner.enqueue这是一个ID,所以我希望它是数字的,就像这样:@admin.id。如果在我调用入队的助手的范围内定义了@admin,这本来没问题,但我实际上是将该变量传递给该助手方法...这意味着@admin未定义,猜测Daniel ,意味着@admin.id未定义。这意味着我无论如何都要完成这项工作(因为没有,Backburner实际上并没有破坏),但是我没有按照我认为的方式排队,因为我把无效的财产传给了它

所以事实证明我得到的错误看起来与问题完全无关,但确实如此。始终传递方法所期望的变量,否则会出现错误。

修改
另外,我无法发表自己的帖子。我试过了。它配得上它。

编辑2:
事实证明,在Heroku上进行beanstalkd非常困难/不支持。明镜。还应该检查一下。我只是喜欢beanstalkd如何处理一些事情并在部署之前继续使用它并意识到它是不可行的。

相反,我按照Heroku的建议去了Resque。他们也支持延迟工作(DJ),但注意到它很重,Resque更好。

所有这一切,我终于到达了我需要与Resque一起去的地方,因为它是如此一件事我做了一点documentation帮助我(也许是任何其他悲伤的灵魂偶然发现这个蹩脚的帖子)让后台工作者在未来的Heroku托管的Rails应用程序上运行。请注意:它确实是像我这样的假人的指南,因为我不得不解开现在对我很明显的很多东西。我所包含的Resque文档中存在空白,这实际上只是归结为明确某些事物的含义以及事情的发展方向。