初っ端に
# myapp.rb require 'sinatra' get '/' do 'Hello world!' end
って書いてあって、なんでこんなので動くのかなあと思ったら、DelegatorでSinatra::Applicationにdefine_methodしてるからか。
main.rb
sinatra/lib/sinatra/main.rb at master · sinatra/sinatra · GitHub
base.rb
sinatra/lib/sinatra/base.rb at master · sinatra/sinatra · GitHub
rubyの書き方が独特すぎてなれるまでソース読むのと理解するのにすごい時間かかるけどすごい勉強になる。
あと痛感したのが、Rackで動かすからRack知らないと知らないメソッドいきなり出てきすぎてそれを調べるのでまた時間がかかる。
ただ、2年くらいまえにわけわからないままサンプルの真似してsinatraのWebアプリ作って動かしてたけど、そのときの意味不明なことが今回ソース読んだことでだいたい意味わかるようになってる。
過去より進歩したのを感じれてすごくいい。