2012-11-29 20 views
1

試圖讓delayed_job工作。我想做一個http post到另一臺服務器而不會阻止我的rails應用程序。我認爲delayed_job將是一個好主意。但是我無法使它工作。所需的delayed_job示例不適用於發送郵件

主要在控制器中,如果我遇到了一種情況,我想對已知的服務器做一個http post。 我到目前爲止還沒有理解的是

  1. 我可以推遲控制器本身定義的功能嗎?
  2. 我是否需要定義一個單獨的類並具有可以包含在控制器中的功能?

到此爲止:

  • 新增寶石 'delayed_job_active_record' 創業板上市文件
  • 新增寶石 「守護」 也
  • 軌產生的delayed_job:升級
  • 耙分貝:遷移
  • ran 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)

誰能告訴我什麼,我做錯了什麼?

回答

3

您的post_to_server是一種實例方法。 這應該工作:

def self.post_to_server 
    ... 
end 
+0

工作。也必須把它放在模型中,而不是控制器。 – av501

相關問題