从Rakefile/Ruby on Rails 3中的模型访问类方法

Mor*_*ger 1 ruby rake ruby-on-rails rakefile ruby-on-rails-3

我有一个模型,我们称之为Foobar.我希望能够运行一个cron作业来更新作为Foobar实例的所有对象的属性.所以,在伪代码中,它可能是这样的:

Foobar.all.each do |foobar|
  foobar.update_attributes({:my_attribute => 'updated'});
end
Run Code Online (Sandbox Code Playgroud)

现在,假设我将其包装在名为Foobar.run_update()的类方法中.

调用Foobar.run_update()可以从控制器,甚至从视图中正常工作.但是,我想要做的是从Rakefile运行run_update(),以便我可以将它绑定到cron运行.但是,当从Crontab调用Rake时,Foobar类不可用.

我怎么解决这个问题?当从Cron调用Rake时,如何从Rake访问Foobars的类方法?

非常感谢您的帮助.

Chi*_*tan 11

通过rake,如果你的意思是rake任务,那么添加=> :environment加载任务的rails环境,你就可以在Foobar.run_update那里调用方法.喜欢,

namespace :foobar do
  task :update => :environment do
    Foobar.run_update
  end
end 
Run Code Online (Sandbox Code Playgroud)

你应该只能rake foobar:update从控制台打电话,并把它安排为cronjob.