Ruby on rails 从Rakefile/RubyonRails 3中的模型访问类方法
我有一个模型,我们叫它Foobar。我希望能够运行cron作业来更新作为Foobar实例的所有对象的属性。所以,在伪代码中,可能是这样的:Ruby on rails 从Rakefile/RubyonRails 3中的模型访问类方法,ruby-on-rails,ruby,ruby-on-rails-3,rake,rakefile,Ruby On Rails,Ruby,Ruby On Rails 3,Rake,Rakefile,我有一个模型,我们叫它Foobar。我希望能够运行cron作业来更新作为Foobar实例的所有对象的属性。所以,在伪代码中,可能是这样的: Foobar.all.each do |foobar| foobar.update_attributes({:my_attribute => 'updated'}); end 现在,假设我将其包装在一个名为Foobar.run\u update的类方法中 从控制器甚至从视图调用Foobar.run_update都可以正常工作。但是,我想做的是从R
Foobar.all.each do |foobar|
foobar.update_attributes({:my_attribute => 'updated'});
end
现在,假设我将其包装在一个名为Foobar.run\u update的类方法中
从控制器甚至从视图调用Foobar.run_update都可以正常工作。但是,我想做的是从Rakefile运行run_update,以便将其绑定到cron运行中。但是,当从crontab调用Foobar类时,它不可用于Rake
我如何解决这个问题?当从cron调用Rake时,如何从Rake访问foobar的类方法
非常感谢您的帮助。您可以通过要求config/environment.rb来加载Rails环境:
您可以通过要求config/environment.rb加载Rails环境:
在我的Sinatra应用程序中,我通常有文件models/init.rb,它需要Sequel,设置我的DB连接,然后使用require_relative来require我的所有模型文件。然后,我的主应用程序确实需要_relative models/init
使用此设置,包括IRB在内的任何其他脚本,我所要做的就是自己需要models/init.rb文件,并且我可以完全访问应用程序拥有的相同模型和DB连接。在我的Sinatra应用程序中,我通常拥有需要Sequel的models/init.rb文件,设置我的DB连接,然后使用require_relative来require我的所有模型文件。然后,我的主应用程序确实需要_relative models/init
使用此设置,包括IRB在内的任何其他脚本,我所要做的就是自己需要models/init.rb文件,并且我可以完全访问应用程序拥有的相同模型和DB连接。By rake,如果您指的是一个rake任务,那么adding=>:environment将为该任务加载rails环境,您可以在那里调用Foobar.run\u update方法。像
namespace :foobar do
task :update => :environment do
Foobar.run_update
end
end
您应该能够从控制台调用rake foobar:update,并将其作为cronjob进行调度。如果您指的是rake任务,那么adding=>:environment为该任务加载rails环境,您可以在那里调用foobar.run\u update方法。像
namespace :foobar do
task :update => :environment do
Foobar.run_update
end
end
您应该能够从控制台调用rake foobar:update,并将其作为cronjob进行调度。您所说的rake是指rake任务,对吗?如果您接受投票率最高的答案,您的声誉将提高两倍!:OBy rake你的意思是rake任务,对吗?如果你接受投票率最高的答案,你的声誉将提高三倍O