1

delayd_jobを機能させようとしています。Railsアプリをブロックせずに別のサーバーにhttp投稿をしたい。私はdelayed_jobが良い考えだと思いました。しかし、私はそれを機能させることができません。

主にコントローラーで、既知のサーバーにhttp投稿を実行したいという条件が発生した場合。私が今のところ理解していないのは

  1. コントローラ自体で定義された関数を遅らせることはできますか?
  2. 別のクラスを定義し、そこに関数を含める必要がありますか?それをコントローラーに含めることができますか?

これまでの手順:

  • Gemファイルにgem'delayed_job_active_record'を追加しました
  • 宝石「デーモン」も追加
  • Railsはdelayed_job:upgradeを生成します
  • rake db:migrate
  • RAILS_ENV=開発スクリプト/delayed_jobstartを実行しました

次に、コードを実行します。コントローラのコード:

試行1:#NoMethodError(SimpleObjectForTestControllerpost_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.6Ruby1.9.2 delayd_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 に答える