【问题标题】:whenever used to execute a method rails 4每当用于执行方法 rails 4
【发布时间】:2015-01-26 20:36:02
【问题描述】:

我正在尝试每 30 分钟使用一次来执行一个方法。但是我在设置它时遇到了一些问题。

schedule.rb

every 1.minutes do
    runner "Post.winner"
end

post.rb

class Post < ActiveRecord::Base

module Post
    def winner
        #do some stuff that saves a new value in database

我不认为跑步者正在工作,因为我保存值的字段在控制台中仍然显示为 nil。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 whenever


    【解决方案1】:

    您很可能不想运行控制器方法(例如,您没有请求在那里提供服务)。从类或模块创建runner

    # schedule.rb
    every 30.minutes do
      runner "Post.winner"
    end
    
    #lib/post.rb
    module Post
      def self.winner
        ...
      end
    end
    

    lib/tasks/ 中的rake 任务

    # schedule.rb
    every 30.minutes do
      rake post:winner
    end
    
    #lib/tasks/post.rake
    
    namespace :post do    
      desc 'calculate winner'
      task :winner do
        ...
      end
    end
    

    【讨论】:

    • 我正在尝试使用跑步者。但是,我的印象是它永远不会被调用。我更新了问题
    【解决方案2】:

    我几乎可以肯定你有一个模型Post。创建类方法:

    class Post
      ...
      def self.winner
        ...
      end
    end
    

    但如果您仅将 Post.winner 用于日程安排,我更喜欢 @xlembouras 建议的 rake 任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2015-08-31
      相关资源
      最近更新 更多