16

Ruby DSL (ドメイン固有言語) の優れた例を探しています。あなたが知っている、読む価値のあるリポジトリやプロジェクトはどれですか? なぜそれは (または: 彼らは) 素晴らしい例ですか?

私は、よく考え抜かれて設計された、より複雑な例に特に興味があります。

4

6 に答える 6

3

ビヘイビア駆動型開発の分野では、以下を確認できます。

  • Cucumber - シナリオを使用して BDD を説明する
  • RSpec - テスト コードを特定の動作に置き換えます。

私はまだ非常に初心者なので、RSpecコードには時々頭を悩ませていることを認めざるを得ません。

于 2010-10-27T02:29:07.937 に答える
2

従順な宝石をチェックアウトしましたか?それはあなたのニーズを満たすための最も簡単でクリーンな方法かもしれませんか?

于 2012-10-31T18:29:40.677 に答える
2

もちろん、別の例として、Ruby ビルド システムであるRakeがあります。私の意見では、DSL を「良い」ものにするものは次のとおりです。

  1. 表記法は意味に従います。つまり、DSL の文 (ステートメント) を読むと、それが何をするのか明確で明確な考えが得られます。
  2. ドメイン固有、つまり、DSL は宇宙のすべての問題を解決するわけではなく、1 つの小さなドメイン (ソフトウェアの構築、データのクエリ、UI の構築など) に焦点を当てています。
  3. 高レベルの抽象化。DSL は、プログラマーが使用できる高レベルの概念を使用し、それらを (内部的に) 低レベルの実装に変換します。Rake の場合、言語が基づいている主な概念は、タスクとそれらの間の依存関係です。
于 2009-06-09T19:50:24.570 に答える
1

私が考えることができるいくつかの良い Ruby DSL は hpricotsinatraです

于 2009-05-22T19:53:34.813 に答える
0

Ruby on Rails の Active Record は 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 の例です。

于 2013-01-15T11:08:38.883 に答える