ExpertiDict

Ruby · Intermediário · Inglês · Técnico

DSL

/di ɛs ɛl/substantivo

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.

Veja também

Todos os termos de Ruby