Defining custom rake tasks
So far, we defined only one task named default
. Rake allows you to define your custom tasks with any name. The common form of the custom rake task definition is passing a task name to the task
method and a block as a second argument. The block defines some action and usually contains some Ruby code. The rake task might have an optional description, which is defined with the desc
method. This method accepts a text for the description of the task. The following code snippet is an example of defining a custom rake task:
desc 'Restart web server' task :restart do touch '~/restart.txt' end
This is an example of a possible rake task to restart Passenger (this is a module for the Nginx web server, which works with the Rails applications). We name the task restart
. To run this task, just pass its name as the second argument to the rake
command as shown in the following line of code:
$ rake restart
If you have a lot of tasks, it's handy to enclose them to the named spaces, as shown in the following code snippet:
namespace :server do desc 'Restart web server' task :restart do touch './tmp/restart.txt' end end
You can also run the task in the command line using the following command:
$ rake server:restart
Actually, the task method accepts more arguments. However, they are related to other topics that are explained further along in the book in Chapter 2, Working with Files, and Chapter 3, Working with Rules.