Search code examples
ruby-on-rails-3rakerake-task

accessing rails models from rake task


How can I access model objects from rails rake task?

If I initialize my rufus scheduler $scheduler = Rufus::Scheduler.start_new in my rake would that scheduler stay alive since it's from a rake task?


Solution

  • To access a rails model in your rake task you need to load the :environment.

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

    You would not call the scheduler within a task but the other way around. You need to start a Rufus scheduler and then call your rake tasks from them.

    You need to first

    # other require statements ...
    require 'rake'
    
    # ...
    
    scheduler = Rufus::Scheduler.start_new
    scheduler.cron "00 6 * * *" do
      Rake::Task["sometask"].invoke
    end