DSL em Ruby

Os exemplos que tenho encontrado na internet, são meio confusos, por vezes sem muita utilidade, alguém me poderia me dar um bom exemplo de como poderia construir uma DSL em Ruby?

Atenciosamente.

Salve, tudo bom?

O que anda causando confusao para criacao dessas DSL’s?

Uma coisa que eu fiz e me ajudou muito foi o exemplo no livro do The Ruby Programming Language (uma das maiores referencias sobre a linguagem).
Eu me lembro que eles criaram uma DSL para formatacao da saida de XML, muito bacana.

Pense em alguma coisa que seria util para voce e procure referencia em algum livro. Um bom exemplo de DSL que me veio a cabeca agora eh o
Coffee Script: http://jashkenas.github.com/coffee-script/

Como vai Algebra?

Não sei exatamente o que você procura, mas considero o Sinatra (https://github.com/sinatra/sinatra) um ótimo (programa e) exemplo de DSL escrita em Ruby. Nesse caso, a DSL é para construção de aplicações web.

O exemplo da própria documentação mostra bem o quanto fica legível a construção de uma “rota” que aceita um tipo específico de verbo http:

get ‘/’ do
… show something …
end

post ‘/’ do
… create something …
end

put ‘/’ do
… replace something …
end

patch ‘/’ do
… modify something …
end

delete ‘/’ do
… annihilate something …
end

options ‘/’ do
… appease something …
end