4

Rails rakeタスクからモデルオブジェクトにアクセスするにはどうすればよいですか?

rakeでrufusスケジューラーを初期化した場合、$scheduler = Rufus::Scheduler.start_newそのスケジューラーはrakeタスクからのものであるため、存続しますか?

4

1 に答える 1

10

rakeタスクでrailsモデルにアクセスするには、:environmentをロードする必要があります。

task :my_task => [:environment] do
  User.new #...
end

タスク内でスケジューラーを呼び出すのではなく、その逆を行います。Rufusスケジューラーを開始してから、それらからrakeタスクを呼び出す必要があります。

あなたは最初にする必要があります

# other require statements ...
require 'rake'

# ...

scheduler = Rufus::Scheduler.start_new
scheduler.cron "00 6 * * *" do
  Rake::Task["sometask"].invoke
end
于 2011-06-23T14:40:06.640 に答える