Ruby · Intermediário · Inglês · Técnico
DSL
Linguagem específica de domínio: uma interface com cara de linguagem própria, construída em Ruby com blocos, métodos e metaprogramação. Rails, RSpec e Rake são exemplos conhecidos.
Onde usar
Aparece em configurações e testes que parecem texto declarativo, como describe e it ou resources :posts. Uma boa DSL costuma usar instance_eval para esconder o objeto construtor.
Em código
itens = []
d = Object.new
d.define_singleton_method(:item) do |n|
itens << n
end
d.instance_eval { item "pizza"; item "suco" }
p itens # => ["pizza", "suco"]Exemplos
RSpec is a DSL built on Ruby blocks.
O RSpec é uma DSL construída sobre blocos do Ruby.
We wrote a small DSL for the deploy config.
Escrevemos uma DSL pequena para a configuração do deploy.
Cuidado
Não crie uma DSL quando um objeto simples com métodos resolve: a magia dificulta depurar e deixa o código opaco para quem não conhece o contexto.
Sinônimos
linguagem específica de domínio
Origem
Sigla de domain-specific language, linguagem específica de domínio.