How do I run rake tasks within my rails application

Viewed 11413

What I want to do:

In a model.rb, in after_commit, I want to run rake task ts:reindex

ts:reindex is normally run with a rake ts:index

5 Answers

This code automagically loads the Rake tasks for your Rails application without you even knowing how your application is named :)

class MySidekiqTask
  include Sidekiq::Worker

  def perform
    application_name = Rails.application.class.parent_name
    application = Object.const_get(application_name)
    application::Application.load_tasks
    Rake::Task['db:migrate'].invoke
  end
end
Related