delayd_jobを機能させようとしています。Railsアプリをブロックせずに別のサーバーにhttp投稿をしたい。私はdelayed_jobが良い考えだと思いました。しかし、私はそれを機能させることができません。
主にコントローラーで、既知のサーバーにhttp投稿を実行したいという条件が発生した場合。私が今のところ理解していないのは
- コントローラ自体で定義された関数を遅らせることはできますか?
- 別のクラスを定義し、そこに関数を含める必要がありますか?それをコントローラーに含めることができますか?
これまでの手順:
- 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)
誰かが私が間違っていることを教えてもらえますか?