タグ

DSLに関するrochefortのブックマーク (4)

  • RubyでDSL

    201805 uc solution update centered cloud mcu, microsoft office365 and proposa...Hiroyuki Yokota

    RubyでDSL
  • ねえRuby、どこまでが君でどこからが内部DSLなの?

    Rubyは内部DSL(Domain Specific Language)に向いている言語と言われます。Rake, RSpec, Rack, Sinatraなどは内部DSL on Rubyの代表的なサンプルです。Rubyの構文のユルさとメタプログラミングが内部DSLを容易にするんですね。 しかし正直僕は、何が内部DSLで、何が内部DSLでないのかがわかっていません。人が何をさして「これは内部DSLである」と言っているのかがよくわかりません。 そんなわけで… 以下では、Userクラスの設計を通して内部DSLらしきものを作ってみます。このイテレーションに対して「ここからが内部DSLだよ」「これは内部DSLとは呼ばないよ」と、誰か僕に優しく教えてくれませんか? Userクラスの作成 Userクラスはユーザ情報を管理するクラスです。ファイル名はuser.rbとします。 まずはユーザの登録機能を作りま

    rochefort
    rochefort 2012/08/18
    手元でやってみた。チュートリアルっぽくて面白い。 // どれが内部DSL?
  • 今度こそinstance_evalとmodule_evalを理解してもらった - akimatter

    ような気がするのでメモ。 「instance_evalとmodule_evalを理解」というのは特異メソッド、インスタンスメソッドの違いを理解して、 必要に応じてinstance_evalとmodule_evalを使い分けられる、ということかと思います。 なので、ゴールとしては、 block = Proc.new do def foo 'foo' end end というブロックがあったときに、これを使って特異メソッド、インスタンスメソッドを追加できるようになる、ってことでいいのかなと思った。 以下、その前提と問題。答えはきっとid:t-tairaが書いてくれます。 (2010/03/01追記) id:t-tairaさん回答ありがとー http://d.hatena.ne.jp/t-taira/20100227/1267232880 特異メソッドとインスタンスメソッド 特異メソッドは「特定の

    今度こそinstance_evalとmodule_evalを理解してもらった - akimatter
    rochefort
    rochefort 2011/04/30
    obj.instance_eval(&block) // A.module_eval(&block) // instance_methods(false)
  • るびま

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直

  • 1