试图让 delay_job 工作。我想在不阻止我的 rails 应用程序的情况下向另一台服务器发布 http 帖子。我认为delayed_job 是个好主意。但是我无法让它工作。
主要是在控制器中,如果我遇到一个条件,我想向已知服务器发送一个 http 帖子。到目前为止我还没有理解的是
- 我可以延迟控制器本身定义的功能吗?
- 我是否需要定义一个单独的类并在那里拥有可以包含在控制器中的功能?
到目前为止的步骤:
- 添加 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)
有人可以告诉我我做错了什么吗?