Ruby jest wyjątkowo dobrze przystosowany do budowania wewnętrznych DSL-i (Domain-Specific Languages) — interfejsów API, które czytają się jak specjalizowany mini-język dla określonej domeny. Elastyczna składnia Ruby'ego (opcjonalne nawiasy, bloki), metaprogramowanie i instance_eval umożliwiają tworzenie wyrażonych i czytelnych DSL-i. To jest powód, dla którego Rails, RSpec i wiele narzędzi Ruby mają tak eleganckie, deklaratywne API-i.
Jak wygląda DSL (widziałeś je)
describe
it
expect(user).to be_valid
.application.routes.draw
resources
get ,
gem ,
