How do I create a rake task for a Rails engine which is not exposed to the host application?

rake, ruby-on-rails-3, ruby-on-rails-3.1, ruby-on-rails-plugins

Solution

I know that's a bit late, but for others here searching for the correct answer, do the following :

Create your task :

# lib/tasks/your_engine_tasks.rake
desc "Explaining what the task does"
task :your_task do
  # Task goes here
end

Then go to your engine ./Rakefile and add

load 'lib/tasks/your_engine_tasks.rake'

Here we go, now:

$ rake -T

gives you your task.

Hope I helped.

Problem

``` # lib/tasks/test.rake task :hello do puts 'hello' end ``` $ rake app:hello To run the task I need to prefix it with "app:" and it runs in the context of the dummy app. It is also exposed to the host application (i.e when used as a plugin in a parent Rails app) as `rake hello`. I want to run a rake task which does not require a Rails environment and runs some command, but it is run from the engine root, not the dummy app root.

Original source