代码之家  ›  专栏  ›  技术社区  ›  Demi

ruby dsl(领域特定语言)存储库,示例

  •  16
  • Demi  · 技术社区  · 16 年前

    我正在寻找ruby dsl(领域特定语言)的优秀例子。你知道哪些知识库和项目值得一读?为什么这是个很好的例子?

    我对那些经过深思熟虑和设计的更复杂的例子特别感兴趣。

    6 回复  |  直到 12 年前
        1
  •  12
  •   Justin Poliey    16 年前

    Rake和Rack是DSL的一些很好的例子。如果您想要更多的例子,请查看:

    • Sinatra 是一种非常流行的用于构建web应用程序的dsl,它是github上的开源。
    • Twibot 是一个新的DSL灵感来自Sinatra,它允许你创建自动响应消息和回复的Twitter机器人。

    如果你想开始自己制作,这里有一个很好的教程叫做 Building a DSL in Ruby .

        2
  •  3
  •   Xiong Chiamiov    14 年前

    在行为驱动开发领域,您可以查看:

    尽管我不得不承认rspec代码有时会让我挠头,因为我还是个新手。

        3
  •  2
  •   Zef Hemel    16 年前

    当然,另一个例子是 Rake ,ruby构建系统。我认为DSL“好”的原因是什么:

    1. 符号符合意义,也就是说,如果你读了dsl中的一个句子(语句),你对它的作用有一个清晰、明确的概念。
    2. 领域特定的,即dsl并不能解决宇宙中的所有问题,而是专注于一个小领域(例如构建软件、查询数据或构建ui)
    3. 高度抽象。dsl使用程序员可以使用的高级概念,并将这些概念转换为低级实现(内部)。在rake的情况下,语言所基于的主要概念是任务和它们之间的依赖关系。
        4
  •  2
  •   ms-tg    12 年前

    你检查过 Docile gem ,这可能是满足您需求的最简单、最干净的方法?

        5
  •  1
  •   Craig    16 年前

    我能想到的一些好的ruby dsl是 hpricot sinatra

        6
  •  0
  •   Rimian    12 年前

    RubyonRails的活动记录是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的例子。