Ruby este excepțional de potrivit pentru construirea DSL-urilor interne (Domain-Specific Languages) — API-uri care citesc ca un mini-limbaj specializat pentru un domeniu. Sintaxa flexibilă a Ruby (paranteze opționale, blocuri), metaprogramarea și instance_eval fac posibilă crearea unor DSL-uri expresive și ușor de citit. Acesta este motivul pentru care Rails, RSpec și multe alte tool-uri Ruby au API-uri atât de elegante și declarative.
Cum arată un DSL (ai văzut deja)
describe
it
expect(user).to be_valid
.application.routes.draw
resources
get ,
gem ,
