How do I call another task in Rake

rake, ruby, ruby-on-rails, ruby-on-rails-3.1

Solution

This is more rake-ish :)

 Rake::Task["setup:create"].invoke

Problem

Although this might sound similar to the other questions you find here, there is a slight twist. I have two directories, say /home/rails/Rake and /home/rails/test_app. The rails directory is where I place all my rails projects. Inside Rake, I have a Rakefile and a create.rake file. This is what my rakefile look's like ``` namespace :setup do desc "something" task :init do print "Name of the destination directory: " name = STDIN.gets.strip cp_r '.', "../#{name}/lib/tasks" cd "../#{name}" sh "rake setup:create" end end ``` And create.rake ``` namespace :setup do desc "Install" task :create do sh 'git init' #some other code end end ``` What it does is obvious. I want to copy the contents of the Rake directory to /test_app/lib/tasks. Then change directory to test_app and run setup:create task defined in the install.rake file now placed in test_app/lib/tasks. This works, but is this the rake way of doing it? Can anyone give me a slight hint of how it's done, the Rake way. Here is the error which I get when I used invoke method: ``` $ rake setup:init Name of the destination directory: testapp cp -r . ../testapp/lib/tasks cd ../testapp rake aborted! Don't know how to build task 'setup:create' /home/TradeRaider/rails/Rake/Rakefile:8:in `block (2 levels) in <top (required)>' /home/TradeRaider/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval' /home/TradeRaider/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>' Tasks: TOP => setup:init (See full trace by running task with --trace) ```

Original source