2009-05-22 15 views
16

Estoy buscando ejemplos excelentes de Ruby DSL (idiomas específicos del dominio). ¿Qué repositorios, proyectos conoces que valen la pena leer? ¿Por qué es (o son ellos) grandes ejemplos?Ruby DSL (lenguaje específico del dominio) repositorios, ejemplos

Estoy particularmente interesado en ejemplos más complejos que están bien pensados ​​y diseñados.

Respuesta

1

Algunas buenas DSL rubí que se me ocurren son hpricot y sinatra

+0

La estructura del sinatra es realmente agradable. Había oído hablar de eso pero no lo había mirado. Gracias por el recordatorio. – Demi

12

rastrillo y rack son algunos buenos ejemplos de DSL. Si quieres más ejemplos, consulta los siguientes:

  • Sinatra DSL es un muy popular para la construcción de aplicaciones web, y es de código abierto en GitHub.
  • Twibot es una nueva DSL inspirada en Sinatra que te permite crear bots de Twitter que responden automáticamente a mensajes y respuestas.

Si desea comenzar a hacer su propio, aquí hay un excelente tutorial llamado Building a DSL in Ruby.

+0

Twibot es un hallazgo interesante que voy a ver. ¡Gracias! – Demi

2

Otro ejemplo, por supuesto, es Rake, el sistema de compilación Ruby. Lo que hace que una conexión DSL "bueno" en mi opinión:

  1. notación se ajusta al significado, es decir, si se lee una frase (declaración) en el DSL, usted tiene una idea clara, no ambigua de lo que hace.
  2. Dominio específico, es decir, el DSL no resuelve todos los problemas del universo sino que se centra en un pequeño dominio (como crear software, consultar datos o construir UI)
  3. Alto nivel de abstracción. Un DSL usa conceptos de alto nivel que el programador puede usar y los traduce a una implementación de nivel inferior (internamente). En el caso de Rake, el concepto principal en el que se basa el lenguaje son las tareas y las dependencias entre ellos.
3

En el área de desarrollo guiado por comportamiento se puede extraer:

  • Cucumber - Describir BDD utilizando escenarios
  • RSpec - Reemplazar código de prueba con los comportamientos que especifican.

Aunque tengo que admitir que el código RSpec me deja rascándome la cabeza a veces porque todavía soy un novato.

2

¿Ha comprobado Docile gem, puede ser la forma más fácil y limpia de satisfacer sus necesidades?

0

¡El registro activo de Ruby on Rails es un DSL!

http://apidock.com/rails/ActiveRecord/Base

También este episodio de la escuela código podría ser interesante, ya que conduce a la construcción de una DSL (donde aprendí Active Record fue un DSL)

http://www.codeschool.com/courses/ruby-bits-part-2

El curso anterior también habla sobre DSL externas e internas. Cucumber es un ejemplo de una DSL externa en la que necesitas construir un analizador y un analizador, etc. Active Record es un ejemplo de una DSL interna que se ejecuta dentro de un código existente.

Cuestiones relacionadas