每当ruby调度程序不起作用时,我错过了什么?

时间:2011-09-21 22:14:37

标签: ruby ruby-on-rails-3 mongoid scheduling whenever

无法使其有效......

在我的config / schedule.rb中,我有:

set :output, '../log/development.log'

every 5.minutes do
  runner "UserWatchedRepo.update"
end

请注意日志设置,但没有任何反应。在我的Rails 3.0.10模型文件app / models / user_watched_repo.rb中,我得到:

class UserWatchedRepo
  include Mongoid::Document

  def update
    conn = FaradayStack.build 'https://api.github.com'
    User.all.map do |user| 
      nickname = user.nickname
      resp = conn.get "/users/#{nickname}/watched"

      resp.body.each do |repo|
        user.watchlists.build( html_url: "#{repo['html_url']}",
                               description: "#{repo['description']}",
                               fork_: "#{repo['fork']}",
                               forks: "#{repo['forks']}",
                               watchers: "#{repo['watchers']}",
                               created_at: "#{repo['created_at']}",
                               pushed_at: "#{repo['pushed_at']}",
                               avatar_url: "#{repo['owner']['avatar_url']}" )
      end
      user.save!
    end
  end
end

有什么想法吗?

谢谢 卢卡

1 个答案:

答案 0 :(得分:4)

您是否在控制台中运行了whenever命令?

你的代码实际上并没有创建一个cronjob,它只是为必须转换为实际cronjob的gem提供输入数据。

要完成此操作,您必须cd进入您的应用程序根目录并运行以下命令:

whenever --update-crontab YOUR_APP_NAME

据我所知,YOUR_APP_NAME不一定是您的实际应用名称,它只是一个唯一的标识符。我认为使用您的appname避免混淆是一种很好的做法。