【问题标题】:Required delayed_job example that is not for sending mails不用于发送邮件的必需的延迟作业示例
【发布时间】:2012-11-17 10:44:58
【问题描述】:

试图让 delay_job 工作。我想在不阻止我的 rails 应用程序的情况下向另一台服务器发布 http 帖子。我认为delayed_job 是个好主意。但是我无法让它工作。

主要是在控制器中,如果我遇到一个条件,我想向已知服务器发送一个 http 帖子。 到目前为止我还没有理解的是

  1. 我可以延迟控制器本身定义的函数吗?
  2. 我是否需要定义一个单独的类并在其中拥有可以包含在控制器中的功能?

到目前为止的步骤:

  • 在 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


    【解决方案1】:

    您的post_to_server 是一个实例方法。 这应该有效:

    def self.post_to_server
      ...
    end
    

    【讨论】:

    • 工作。还必须将其放入模型而不是控制器中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多