必需的delayed_job示例不适用于发送邮件

时间:2012-11-29 11:10:45

标签: ruby-on-rails ruby-on-rails-3.2 delayed-job

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

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

  1. 我可以延迟控制器本身定义的功能吗?
  2. 我是否需要定义一个单独的类并在那里使用我可以包含在控制器中的函数?
  3. 到目前为止的步骤:

    • 将宝石'delayed_job_active_record'添加到Gem文件
    • 还添加了宝石“守护进程”
    • rails generate delayed_job:upgrade
    • rake db:migrate
    • 跑RAILS_ENV =开发脚本/ delayed_job start

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

    尝试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)

    有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:3)

您的post_to_server是一种实例方法。 这应该有效:

def self.post_to_server
  ...
end