タグ

ブックマーク / melborne.github.io (3)

  • SinatraはDSLなんかじゃない、Ruby偽装を使ったマインドコントロールだ!

    Sinatraのサイトを開くとSinatraはDSLだと書いてある。 Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort: (SinatraはRubyで手早くWebアプリケーションをつくるためのDSLです) DSLというのはDomain-Specific Language、つまり特定の目的に特化した言語のことだ。確かにSinatraはWebアプリケーションという特定の目的のために作られたものだけれども、それは言語じゃない。 それが言語といえるためにはオブジェクトのように独立していて閉じてなきゃいけない1。でもSinatraは独立も閉じてもなくて、Rubyに寄生することで存在している。 いやSinatraは言語どころか、Rubyの上の専門用語ですらない。 それが用語といえるために

  • Rackをminifyした僅か100行のLackで学ぶRackの中身

    「エラーメッセージから学ぶRack最初の一歩」および「エラーメッセージから学ぶRack - Middlewareの魔法」の続きです。 前2の記事で、Rackはrackupコマンドを起動すると、defaultでconfig.ruを読み込みWebサーバを起動するということが分かりました。また、config.ruの中でuseを使ってmiddlewareを指定すると、Webアプリをラップして内側から外側に向けてそれらの#callを順次呼び出すということも分かりました。ちなみに僕はこの呼び出しスタイルを今後「マトリョーシカ呼び出し」と呼ぶことにしました。 ここで2点気になることがあります。config.ruはRubyスクリプトです。rackupコマンドの実行からRackはどうやってこのファイルを実行しているのでしょうか。まあ簡単に想像はつきますが(エバるほどではない)、これが1点目です。もう1点は

  • チルダがRubyのヒアドキュメントをもっと良くする

    Rubyのヒアドキュメントは便利です。複数行に渡る整形文章を出力するときに、これを使わない手はありません。 class ATool def self.help lines = <<EOS Instruction of `#{self}` `#{self}` is one of a great tool in the world. This helps you a lot on your daily work. Your life will be changed with `#{self}`!! Everyone knows about `#{self}`. So, You can ask them to learn `#{self}` Just Use `#{self}` from Today! EOS lines end end puts ATool.help # >> Instruct

    Cherenkov
    Cherenkov 2012/04/27
    ヒアドキュメント
  • 1