【发布时间】:2012-11-17 10:44:58
【问题描述】:
试图让 delay_job 工作。我想在不阻止我的 rails 应用程序的情况下向另一台服务器发布 http 帖子。我认为delayed_job 是个好主意。但是我无法让它工作。
主要是在控制器中,如果我遇到一个条件,我想向已知服务器发送一个 http 帖子。 到目前为止我还没有理解的是
- 我可以延迟控制器本身定义的函数吗?
- 我是否需要定义一个单独的类并在其中拥有可以包含在控制器中的功能?
到目前为止的步骤:
- 在 Gem 文件中添加了 gem 'delayed_job_active_record'
- 还添加了 gem“守护进程”
- rails 生成延迟作业:升级
- rake db:迁移
- 运行 RAILS_ENV=development script/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 红宝石 1.9.2 使用延迟作业(3.0.3) 使用delayed_job_active_record (0.3.2)
谁能告诉我我做错了什么?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3.2 delayed-job