每5秒运行一次控制器方法

时间:2013-09-10 20:21:43

标签: ruby-on-rails task

我是红宝石的新手...... 我怎么办,我的控制器的方法每5秒自动启动一次?我需要什么?在哪里阅读?怎么办?

现在我的方法是:

 def start_new_solving
    @session = Session.new
    @user = User.find(:first, conditions: {free: true})
    @secret = Secret.find(:first, conditions: {status: "uploaded"})
    if @user.present? && @secret.present?
      @session.status = "start solving"
      @session.user_id = @user.id
    end
    @session.save!
    @secret.update_attributes(status: "start solving")
  end

请举例。谢谢)

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

  Thread.new do
     while true do
       sleep 5
       start_new_solving
     end
   end

这会在你问的时候执行方法

答案 1 :(得分:0)

您可以使用clockwork gem。

答案 2 :(得分:0)

当应用程序收到相应的请求时,Rails会运行您的控制器方法。例如:

http://localhost:3000/solver/start_new_solving

可以调用SolverController的{​​{1}}方法。

要在5秒后再次运行控制器方法,浏览器只需重新​​加载页面,例如通过JavaScript:

start_new_solving