2016-09-22 56 views
0

我开始使用Backburner在我的应用程序的后台运行一些作业。我试过在“Working Jobs”下面的documentation,但我明显在做一些非常明显而且非常不正确的事情。Backburner rake任务 - NameError:未定义的本地变量或方法

的Gemfile:

gem 'backburner' 

Rake文件:

require_relative 'config/application' 
require 'backburner/tasks' 

Rails.application.load_tasks 

然后在铁轨控制台:

rake backburner:work 

(我认为只会运行所有未决,排队次要地位的工作。 )

但我得到的是错误:NameError: undefined local variable or method 'work' for main:Object from (pry):1:in '__pry__'

八九不离十知道什么撬呢(我用它扔binding.pry到我的代码调试,但仅此而已),但我不知道它如何可能造成这一点。更不用说我在整个工作和耙子任务方面仍然相当薄弱。

任何帮助将不胜感激!

回答

0

很显然,我最近在做一些愚蠢的问题。我将一个变量传递给我的Backburner.enqueue这是一个ID,所以我期望它是数字的,如下所示:@admin.id。如果@admin被定义在助手的范围内,我会调用我的入队函数,但是我实际上将该变量传递给了这个助手方法......这意味着@admin没有被定义,这将会很好,其中,猜猜丹尼尔,意味着@admin.id是未定义的。这意味着无论如何我都会接触到这个工作(因为不是,Backburner实际上并没有打破),但是我没有像我认为的那样把工作排队,因为我将一个无效属性传递给它。

因此,我得到的错误看起来完全不相关的问题,但它是。总是传递你的方法所期望的变量,否则会期望错误。

编辑:
此外,我不能downvote自己的职位。我试过了。它值得。

编辑2:
原来这真的很难/不支持让beanstalkd打算在Heroku。明镜。也应该检查一下。我只是喜欢beanstalkd是如何处理一些事情,并在部署之前与它一起使用,并意识到这是一个不行。

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

所有这一切说,我终于得地方,我需要去与Resque,因为它是这样的事情我做了一个小documentation帮我(也许其他任何悲伤的灵魂谁越过绊倒这个蹩脚的帖子)将来会让后台工作人员在Heroku托管的Rails应用上运行。被警告:它真的是像我这样的假人的指南,因为我必须解开很多现在对我来说很明显的东西。我列入的Resque文档中存在一些空白,这实际上只是说明了某些事物的含义以及事情的发展方向。

相关问题