1

试图让 delay_job 工作。我想在不阻止我的 rails 应用程序的情况下向另一台服务器发布 http 帖子。我认为delayed_job 是个好主意。但是我无法让它工作。

主要是在控制器中,如果我遇到一个条件,我想向已知服务器发送一个 http 帖子。到目前为止我还没有理解的是

  1. 我可以延迟控制器本身定义的功能吗?
  2. 我是否需要定义一个单独的类并在那里拥有可以包含在控制器中的功能?

到目前为止的步骤:

  • 添加 gem 'delayed_job_active_record' 到 Gem 文件
  • 还添加了 gem“守护进程”
  • rails 生成延迟作业:升级
  • 耙分贝:迁移
  • 运行 RAILS_ENV=开发脚本/delayed_job 启动

然后执行代码。控制器中的代码:

尝试 1:# 导致 NoMethodError(SimpleObjectForTestController 的未定义方法post_to_server

class SimpleObjectForTestController 
 def create
  ....
  if( some condition )
    SimpleObjectForTestController.delay.post_to_server
  end
  ....
 end
 def post_to_server
     Typhoeus::Request.post( "http://127.0.0.1:4567/hi", :body => $fixed_config )
 end
end

尝试 2:现在使用 SeperatedClass 也给出相同的错误

 class SeperatedClass
    def post_to_server
       Typhoeus::Request.post( "http://127.0.0.1:4567/hi", :body => $fixed_config )
    end
 end
 class SimpleObjectForTestController
  def create
    ....
    if( some condition )
       SeperatedClass.delay.post_to_server
    end
    ....
  end
end

其他一些上下文:这是一个非 UI 应用程序。使用 Rails 3.2.6 Ruby 1.9.2 使用delayed_job (3.0.3) 使用delayed_job_active_record (0.3.2)

有人可以告诉我我做错了什么吗?

4

1 回答 1

3

post_to_server是一个实例方法。这应该有效:

def self.post_to_server
  ...
end
于 2012-11-29T12:18:18.123 回答