Jobs
Like Bazel targets, but in Ruby. Declare src, srcs, or opt; implement build. One job, one responsibility — compile, render, pack, upload.
Ruby-native · incremental · multi-module
Grably is a build framework on top of Rake with jobs — granular units that know their inputs and outputs, rebuild only when something changed, and stay expressive when your pipeline isn’t “just compile.”
Concepts
Grably keeps the mental model small: tasks orchestrate, jobs do the work, products flow between them, and manifests remember what changed.
Like Bazel targets, but in Ruby. Declare src, srcs, or opt; implement build. One job, one responsibility — compile, render, pack, upload.
Files with a virtual destination. Globs, filters, and task buckets expand into concrete inputs — powerful { srcs: '**/*.java' } without hand-listing every path.
Digests and per-job manifests track what changed. Unchanged jobs stay uptodate; you don’t rebuild the world because one template moved.
Multi-module repos call grab across Rakefiles. Each module keeps isolation; the root graph still composes into one pipeline.
Why grably
A small set of principles for build pipelines that need structure without giving up Ruby’s flexibility.
outs = [...] shopping list.
grab do.