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.