PAGES
← all tools
◆ General Utilities & Libraries

rake

v13.4.0 open-source

Rake is a Ruby-based build automation tool that manages tasks and dependencies using a domain-specific language written in Ruby.

Summary

rake is an open-source, free build automation tool for Ruby projects, run from the command line to resolve tasks and their dependencies through a Ruby DSL. Beyond basic task definitions, it lets rule prerequisites take Pathname objects for richer file-dependency expressions, accepts Ruby pattern matching syntax for task arguments, and can target a subset of test files via the TEST environment variable without editing the Rakefile — handy for CI runs limited to changed specs. It is built for Ruby developers and maintainers who need dependency-aware task automation rather than a general-purpose build system, and it sits in the same category as Make or Rails' own task framework, which it largely superseded within Ruby projects. With 226 contributors and a history back to 2003, it remains active, with 87 commits in the past year and a release 127 days ago.

Rake is a Ruby-based build automation tool that manages tasks and dependencies using a domain-specific language written in Ruby.

How rake helps

Which of my tasks actually need to rerun when I change one file?

resolves each task's declared prerequisites into a dependency graph and only re-executes the tasks whose file or task dependencies are newer, skipping the rest

How do I express a prerequisite that's a file path rather than a task name?

accepts Pathname objects directly in rule prerequisites, so file-dependency rules can be written against real path objects instead of plain strings

Why did a task fail with no useful trace?

falls back to a detailed failure message when the raised exception carries a nil backtrace, instead of surfacing a blank trace

all 26 features, with the evidence for each →

Languages

Not documented

Features

26 capabilities

Built from rake's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What rake offers you

  • Command-line interface4
  • Scripting API1
  • Scripting language support1
All capabilities 26 capabilities
Task dependency management shipped Enables defining order-only dependencies and reusing task libraries programmatically. 4 releases · 1 other source · first seen Nov 2022

Also counts toward: Scripting API

release

  • Adds Rake.add_rakelib('dir') API in Rakefiles to programmatically add rake task libraries 0.9.3 · Nov 2022 · source · release history
  • Tasks no longer run when their prerequisites fail v12.0.0.beta1 · Nov 2022 · source · release history
  • Add support for order only dependency in task definitions 13.0.0 · Nov 2022 · source · release history
  • Supports order-only dependencies in task definitions v13.0.0.pre.1 · Nov 2022 · source · release history

example

  • Define a task that runs after another but doesn't force a dependency on the file itself (order-only). task :deploy => ['db:migrate'] # 'db:migrate' runs first, but ':deploy' does not depend on its output files. v13.0.0.pre.1 · Nov 2022 · source
Ruby version support policy shipped Defines the supported Ruby versions, including dropping support for older releases like 2.2. 4 releases · first seen Nov 2022

release

Symbol prerequisite rules shipped Enables defining task rules using Symbol prerequisites for cleaner dependency graphs. 2 releases · 2 other sources · first seen Nov 2014

release

  • Allows rule to accept Symbols as prerequisite names v13.0.4 · Nov 2022 · source · release history
  • Enables programmatic task creation by ignoring falsy dependencies 10.4.0 · Nov 2014 · source · release history

example

  • Define rules using Symbol prerequisites for cleaner task graphs rule .o => [:src] do |t| \n sh "gcc -c #{t.source} -o #{t.name}" \nend v13.0.4 · Nov 2022 · source
  • Dynamically define tasks where the dependency list might be empty or false without causing errors. desc "Dynamic task"; task(:dynamic_task => falsy_value) { sh 'do_something' } 10.4.0 · Nov 2014 · source
Task execution control shipped Provides mechanisms to re-run specific tasks, clear task states/prerequisites/actions, and explicitly control process exit status. 2 releases · 2 other sources · first seen Nov 2022

release

  • Enables explicit control of the process exit status using exit(n) calls within tasks 0.8.0 · Nov 2022 · source · release history
  • Adds task.clear, task.clear_prerequisites, task.clear_actions, and task.reenable public methods to task objects. 0.8.2 · Nov 2022 · source · release history

example

  • Re-run a task that has already executed in the current invocation without restarting Rake. rake 'task_name[re-run]' # where the Rakefile defines `task :task_name do |t| ... end` and code calls `t.reenable` 0.8.2 · Nov 2022 · source
  • Clear all prerequisites from a task to reset its dependency graph before execution. rake 'reset_task[force]' # where the Rakefile defines `task :reset_task do |t| t.clear_prerequisites; ... end` 0.8.2 · Nov 2022 · source
Working directory override shipped Permits running tasks from a specified directory without modifying the Rakefile. 2 releases · 2 other sources · first seen Nov 2014

Also counts toward: Command-line interface

release

  • Adds the -C and --directory command-line options to change the working directory before running tasks v13.0.4 · Nov 2022 · source · release history
  • Adds Rake::LATE constant to allow rebuilding of files that depend on deleted files 10.4.0 · Nov 2014 · source · release history

example

  • Run rake tasks from a different directory without editing the Rakefile rake -C /path/to/project/asset compile v13.0.4 · Nov 2022 · source
  • Force a rebuild of an output file when its source has been deleted. task(:output => Rake::LATE) { sh 'generate_output.sh' } 10.4.0 · Nov 2014 · source
Command-line argument handling shipped Supports passing positional arguments via task invocation syntax and reading default CLI arguments from environment variables. 3 releases · first seen Nov 2022

Also counts toward: Command-line interface

release

  • Supports reading default command-line arguments via the RAKEOPT environment variable 0.9.0 · Nov 2022 · source · release history
  • Adds Rake::TaskArguments#key? as an alias for has_key? to improve interface consistency v12.0.0 · Nov 2022 · source · release history
  • Adds the ability to pass positional command-line arguments to tasks using syntax like rake task_name[arg1, arg2] 0.8.0 · Nov 2022 · source · release history
Package task enhancements shipped Allows PackageTask to omit parent directories when packing files. 3 releases · first seen Nov 2022

release

  • Enables PackageTask to omit parent directories when packing files, controlled by the new PackageTask#add_parent = false setting. v13.0.0 · Nov 2022 · source · release history
  • PackageTask can now omit parent directories when packing files v13.0.0.pre.1 · Nov 2022 · source · release history
  • PackageTask now supports omitting the parent directory while packing files 13.0.0 · Nov 2022 · source · release history
Task definition syntax extension shipped Allows task definitions to declare expected parameter names via extended declaration syntax and handle variable length argument lists. 3 releases · first seen Nov 2022

release

  • Actions now accept Ruby keyword arguments, enabling named parameter passing in task definitions v12.0.0 · Nov 2022 · source · release history
  • Allows task definitions to declare expected parameter names via extended declaration syntax (e.g., task :name, :first_name) and access them via the args object in the block 0.8.0 · Nov 2022 · source · release history
  • Adds args.extras to handle variable length task argument lists when more actual arguments are supplied than named arguments 10.1.0 · Nov 2022 · source · release history
Pathname prerequisite support shipped Accepts Pathname objects as rule prerequisites to enable richer file dependency expressions. 1 release · 1 other source · first seen Nov 2014

release

  • Accepts Pathname objects as rule prerequisites, allowing richer file-dependency expressions in Rakefiles. v13.4.0 · Apr 2026 · source · release history

example

  • Use Pathname objects in task definitions for better path handling. require 'pathname'; desc "Pathname task"; file(Pathname('output.txt') => ['input.txt']) { touch 'output.txt' } 10.4.0 · Nov 2014 · source
Targeted test runs shipped Enables running specific subsets of test files via environment variables or command arguments. 1 release · 1 other source · first seen Apr 2026

Also counts toward: Command-line interface

release

  • Supports multiple files in the TEST environment variable, enabling targeted test runs across several files at once. v13.4.0 · Apr 2026 · source · release history

example

  • Run a specific subset of test files without editing your Rakefile — useful in CI to target only changed specs. TEST="test/foo_test.rb test/bar_test.rb" rake test v13.4.0 · Apr 2026 · source
Verbose output mode shipped Offers a verbose console output mode for more detailed task execution feedback. 2 releases · first seen Nov 2022

release

  • Adds verbose console output mode for more detailed task execution feedback. v13.4.0 · Apr 2026 · source · release history
  • Extended test output on TestTask failures is now only displayed when the verbose or trace option is enabled v12.0.0 · Nov 2022 · source · release history
Directory task capabilities shipped Enables directory tasks to accept prerequisites and actions, similar to file tasks. 2 releases · first seen Nov 2022

release

Rich error context shipped Provides detailed error messages via #detailed_message when a task fails. 1 release · 1 other source · first seen Nov 2022

release

  • Support #detailed_message when task failed to provide richer error context v13.1.0 · Oct 2023 · source · release history

example

  • Persist common CLI arguments (like verbose mode) across all sessions without typing them each time. export RAKEOPT='-v' rake my_task 0.9.0 · Nov 2022 · source
Multitask configuration shipped Adds the ability to create multitasks via a flag and limit the thread pool size used for execution. 2 releases · first seen Nov 2022

release

  • Adds -m flag to turn regular tasks into multitasks 0.9.3 · Nov 2022 · source · release history
  • Adds -j <threads> flag to limit the thread pool size for Multitask tasks 0.9.3 · Nov 2022 · source · release history
Spawn options for sh tasks shipped Provides control over process spawning via a new :spawn_options option in sh tasks. 1 release · 1 other source · first seen Nov 2022

release

  • sh task gains a new :spawn_options option to control process spawning v11.2.0 · Nov 2022 · source · release history

example

  • Force output width for task listings in scripts or CI environments by setting the environment variable. RAKE_COLUMNS=120 rake -T 0.8.2 · Nov 2022 · source
Task inspection and debugging shipped Allows users to identify the source file defining a task, suppress backtraces, and suggest valid tasks for typos. 2 releases · first seen Nov 2022

release

  • did_you_mean feature added to provide suggestions for invalid rake tasks. 12.1.0 · Nov 2022 · source · release history
  • Allows --suppress-backtrace to suppress backtrace patterns 0.9.3 · Nov 2022 · source · release history
Task output formatting shipped Dynamically adjusts task listing width based on terminal size and displays application-specific names in the help banner. 2 releases · first seen Nov 2022

release

  • The -T option now dynamically senses terminal size, using RAKE_COLUMNS when set, instead of truncating output. 0.8.2 · Nov 2022 · source · release history
  • Allows rake-based applications to display their own application name in the help banner instead of the hardcoded rake 10.1.0 · Nov 2022 · source · release history
Documentation updates shipped Includes updates to help and documentation output, such as listing new options. 1 release · first seen Apr 2026

release

  • Shows chdir option as a recognized command in help/documentation output. v13.4.0 · Apr 2026 · source · release history
Pattern matching for arguments shipped Supports Ruby pattern matching syntax for destructuring and matching Rake task arguments. 1 release · first seen May 2025

Also counts toward: Scripting language support

release

  • Supports Ruby pattern matching syntax for Rake task arguments, enabling destructuring and matching on task inputs. v13.3.0 · May 2025 · source · release history
Comment management shipped Provides a method to clear comments associated with task definitions. 1 release · first seen Nov 2022

release

  • Adds Task#clear_comment method to specifically clear comments 0.9.3 · Nov 2022 · source · release history
File task rule extensions shipped Allows file task rules to match targets with multiple sequential extensions. 1 release · first seen Nov 2022

release

  • Adds support for chained extensions in file task rules (e.g. matching .foo.bar targets) v12.1.0 · Nov 2022 · source · release history
Multitask execution performance shipped Improves the performance of executing multiple tasks simultaneously. 1 release · first seen Nov 2022

release

PackageTask compression formats shipped Allows PackageTask to utilize xz compressed format in addition to existing ones. 1 release · first seen Nov 2022

release

  • PackageTask now supports xz compressed format in addition to existing formats v11.2.0 · Nov 2022 · source · release history
Phony target support shipped Adds support for phony targets to prevent file name collisions with actual files. 1 release · first seen Nov 2022

release

  • Adds support for the optional phony target via require 'rake/phony' 0.9.3 · Nov 2022 · source · release history
Sh command cross-platform compatibility shipped Ensures the sh command has consistent semantics on Windows and Unix platforms. 1 release · first seen Nov 2022

release

  • sh command now has the same semantics on Windows as Unix platforms. 0.8.5 · Nov 2022 · source · release history
Task list scope options shipped Adds an option to force task listings to consider all tasks regardless of namespace restrictions. 1 release · first seen Nov 2022

Also counts toward: Command-line interface

release

  • Adds -all option to force -T and -D to consider all tasks 0.9.3 · Nov 2022 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for rake, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail rake puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

21 entries

  1. April 20261
  2. May 20251
  3. April 20241
  4. October 20231
  5. November 202216
  6. November 20141
    Show

    21 entries

    Project health

    Issue, contributor and maintainer activity in ruby/rake, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 4 −5 vs prior 12 months
    2. Maintainers 1 +0 joined · −1 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 100% of issues opened, last 12 months
    5. Median time to close 697 days first maintainer reply 14 hours
    6. Open backlog 48 of 179 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 48
    3. Contributors / month 0
    4. Commits / month 0
    5. Stars 2,459
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →