We were unable to load Disqus. If you are a moderator please see our troubleshooting guide.

oliver • 12 years ago

thanks for this nice tutorial. really made my day.

Deeez • 13 years ago

Hi,
I have multiple rake files(like xyz.rake, abc.rake)..i want to execute them in order (like 1.xvz.rake 2.abc.rake)...how do i achieve this??...using shell script???...then how???

Łukasz Wróbel • 13 years ago

**@Deeez**: If you want to execute a rakefile with an unusual name, you can do it using the `-f` parameter:

$ rake -f first.rake

You have either to define the `:default` task in such a rakefile or pass task name explicitly:

$ rake -f first.rake task_name

The easiest way to run multiple rake files is to combine `rake` command invocations:

$ rake -f first.rake && rake -f second.rake

`&&` symbol means that the next file will be executed only if the previous one has finished its job successfully.

sas gho • 13 years ago

Hi all

i have a question about "how can run the n tasks defined into .rake file in sequential order ?"

thanks

Łukasz Wróbel • 13 years ago

**@sas gho**: As far as I'm concerned, there's no straightforward way to achieve this. At least, I'll try to give you a few hints.

If you know the task list in advance, you can chain their execution:

$ rake first && rake second && rake third

Or create a task depending on them:

task :grouping => [:first, :second, :third]

You can also run them inside another task's definition:

['first', 'second', 'third'].each do |task|
Rake::Task[task].invoke
end

Keep in mind that **invoke** runs a task only if it wasn't run before. If you want to force running it, use **execute** instead or combine **invoke** with the **reenable** method. **execute** also has a drawback, it runs the task regardless of dependencies.

If you rather want to build the task list dynamically, then **Rake.application.tasks** may be of use. It's accessible from the Rakefile. Remember to use the **.scope** task's property in case you're interested in tasks belonging to the specific namespace.

John W • 13 years ago

Great tutorial - Explains everything i needed for a novis. Good Job :)

Ian W • 13 years ago

Thanks for the tutorial - the Rake documentation is not so clear for newbies to Rake. Good job.

Tom H • 14 years ago

Thanks for a great intro to Rakefiles, saved me a lot of head scratching!

gezope • 14 years ago

Nice tutorial, excellent to start with!

Many thanks for it, highly appreciated!:)

task :my_first_question
if uptodate?(:your_blog_entry, :rake_version_in_2011)
tell(:me).please!
end
end

Can you give me links how to continue my studies on Rake please?

Thanks again,

gezope

Łukasz Wróbel • 14 years ago

**@gezope**

> uptodate?

Yes, it seems that all examples present in the tutorial still work. Rake is under development and it has changed a little bit ([changelist](https://github.com/jimweiri... since I wrote the article, though most of the concepts remain the same.

> Can you give me links how to continue my studies on Rake please?

* Take a look at Jim Weirich's (Rake's author) [presentation](http://onestepback.org/arti...
* I also learned a lot from Martin Fowler's [article](http://martinfowler.com/art...

Rosario • 14 years ago

How can I join some scripts in the same rakefile, is there some special sintaxis for that_, do you have an example, please.
thanks

Łukasz Wróbel • 14 years ago

**@Rosario**

I guess you want to split your rakefile into many smaller files and include them when necessary?

In general, rakefiles are regular Ruby files, so you can just `require` them:

require 'another_rakefile'

task :default do
puts 'Default task'
end

In simple cases, it will work like a charm. You can even refer to tasks defined in external rakefile:

task :default => :external do
...

However, external file gets loaded exactly when you put the `require` command. Perhaps you would like to refer the `default` task in `another_rakefile`. To achieve this, use the `import` method provided by Rake:

import 'another_rakefile'

task :default do
puts 'Default task'
end

Then you will be able to refer to the `default` task in `another_rakefile`, like this:

# This is another_rakefile

task :another => :default do
puts 'Default first!'
end

I hope this is the answer you were looking for.

crazyDiamond • 14 years ago

This is by far the best rake tutorial I've seen for a beginner to understand the basics.
I do hope you write more. Thank you!

Łukasz Wróbel • 14 years ago

Thanks, I'm really glad that you enjoy this Rake tutorial so much.

I was really surprised when I found out that it was even translated into Russian: http://habrahabr.ru/blogs/h...

Mike Blyth • 14 years ago

Thanks for the nice tutorial! It's a clear and simple way to start understanding this Rake business which has always seemed so mysterious to me.

shoja • 16 years ago

can you send Rake software to me.

Łukasz Wróbel • 16 years ago

Well, you can download Rake from the Internet for free. If you have Ruby gems installed, simply type in following command:

gem install rake

If you don't have a working Internet connection on your machine, you can download the latest version of Rake from http://rubyforge.org/frs/?g... using other machine. Save the file (e.g. rake-0.8.7.gem) in your filesystem, open the terminal and change current directory to the one containing rake-0.8.7.gem file. Then type in:

gem install rake-0.8.7.gem

This one should work. However, if you don't have Ruby gems installed, you can install Rake from source. Download rake-0.8.7.tgz file from http://rubyforge.org/frs/?g..., then save it in your local filesystem. Open the terminal and change current directory to the one containing rake-0.8.7.tgz file. Then type in:

tar xzvf rake-0.8.7.tgz

Then:

cd rake-0.8.7

And then:

ruby install.rb

That's all you should know about Rake installation.