Подтвердить что ты не робот

Репозитории Ruby DSL (Domain Specific Language), примеры

Я ищу отличные примеры Ruby DSL (Domain Specific Languages). Какие репозитории, проекты, которые вы знаете, стоит прочитать? Почему это (или: они) отличные примеры?

Мне особенно интересны более сложные примеры, которые хорошо продуманны и разработаны.

4b9b3361

Ответ 1

Rake and Rack - неплохие примеры DSL. Если вам нужны еще несколько примеров, проверьте их:

  • Sinatra - очень популярный DSL для создания веб-приложений, и он открывает исходный код на GitHub.
  • Twibot - это новый DSL, вдохновленный Sinatra, который позволяет создавать ботов Twitter, которые автоматически отвечают на сообщения и ответы.

Если вы хотите начать свой собственный, вот отличный учебник под названием Построение DSL в Ruby.

Ответ 2

В области Behavior-Driven Development вы можете проверить:

  • Cucumber - Опишите BDD, используя сценарии
  • RSpec - Замените тестовый код указанием поведения.

Хотя я должен признать, что код RSpec оставляет меня иногда царапать мою голову, потому что я все еще очень начинающий.

Ответ 3

Другим примером, конечно, является Rake, система сборки Ruby. Что делает DSL "хорошим" на мой взгляд:

  • Обозначение соответствует значению, т.е. если вы читаете предложение (утверждение) в DSL, у вас есть четкое, однозначное представление о том, что он делает.
  • Домен, т.е. DSL не решает каждую проблему во Вселенной, а фокусируется на одном небольшом домене (таком как создание программного обеспечения, запрос данных или создание пользовательских интерфейсов).
  • Высокий уровень абстракции. DSL использует концепции высокого уровня, которые может использовать программист, и переводит их на более низкую реализацию (внутренне). В случае с Rake основной концепцией, на которой основан язык, являются задачи и зависимости между ними.

Ответ 4

Вы проверили Docile gem, это может быть самый простой и самый чистый способ удовлетворить ваши потребности?

Ответ 5

Некоторые хорошие рубиновые DSL, о которых я могу думать, - это hpricot а также sinatra

Ответ 6

Активная запись Ruby on Rails - это DSL!

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

Также этот эпизод школьной школы может быть интересным, поскольку он ведет к созданию DSL (где я узнал, что Active Record является DSL)

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

Вышеупомянутый курс также говорит о внешних и внутренних DSL. Cucumber является примером внешнего DSL, где вам нужно собрать парсер и компилятор и т.д. Active Record - это пример внутренней DSL, которая работает внутри какого-либо существующего кода.