Rake: Ruby’s Built-in Build Utility

We already covered a bit about Rake in the very beginning of this chapter. I am also quite sure that anyone who would buy this book at least knows what a Rakefile is and has probably used one before. This toolkit was initially popular among project maintainers for simplifying package and documentation generation, but was popularized by Rails as a way to wrap pretty much any task into something that could be conveniently triggered on the command line. Although rake technically is little more than a Ruby replacement for make, the flexibility of configuring it via a general-purpose language such as Ruby has really made it a powerful tool.

We already covered some of the built-in features of Rake, including Rake::GemPackageTask, but let’s take a look at another one. The following code is what Haml uses to provide a rake rdoc task:

Rake::RDocTask.new do |rdoc|
  rdoc.title    = 'Haml/Sass'
  rdoc.options << '--line-numbers' << '--inline-source'
  rdoc.rdoc_files.include(*FileList.new('*') do |list|
                            list.exclude(/(^|[^.a-z])[a-z]+/)
                            list.exclude('TODO')
                          end.to_a)
  rdoc.rdoc_files.include('lib/**/*.rb')
  rdoc.rdoc_files.exclude('TODO')
  rdoc.rdoc_files.exclude('lib/haml/buffer.rb')
  rdoc.rdoc_files.exclude('lib/sass/tree/*')
  rdoc.rdoc_dir = 'rdoc'
  rdoc.main = 'README.rdoc'
end

Here we see that the options used are very similar to what we discussed in the previous section about RubyGems. However, once this is set up, you can simply type rake rdoc at any time to generate ...

Get Ruby Best Practices now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.