すがブロ

sugamasaoのhatenablogだよ

sinatra のスケルトンを更新した

更新の主な内容

SubRUI で動かす場合と、メインで……つまり、http://example.com/ で動かす場合でのパスの違いを吸収するようにしました。
自分の場合、サービスのリリースは SubURI で行う場合が多いのですが、ぶっちゃけると、開発中に shotgun 等で sinatra を起動しているときは http://example.com/ 相当になるので、いざサーバに乗っけた時にパスの違い死ぬんですね。
気を付けてても死ぬ。気をつけないと普通に死ぬ。どっちにしても死ぬ。
さらに、末尾が '/' かどうかでブックマーク等が分散するのもイヤだ。や、分散してしまうことよりも、リソースにアクセスしてるつもりが '/' 付きであたかもディレクトリですーみたいなツラをしているのがイヤだ。
なので、そこら辺の正規化も行うようにした*1

具体的な内容

github

興味ある人は下記からどうぞ。

変更点
  • controller 配下のファイルを読み込むのを起動時(configure時)に変更した。これでアクセス毎にファイルを読むようなアホなことはしなくて良くなった
  • helper メソッド追加。上記のURIを正規化するために使う。env['SCRIPT_NAME']で差異を吸収するように。views/index.hamlCSS の読み込みあたりを参照
  • URIを '/' 無しに正規化。 misc/sinatra_skelton/lib/webpage.rb at master · sugamasao/misc · GitHub
  • HTML の escape をデフォルトで on にした

今後

また不便なのがあればちょこちょこ直すつもりですが、とりあえず logger の設定とかもやっておこうかなぁ。
みなさんも、これを付けなきゃ始まらないよ!みたいな設定があれば教えてくれたり fork とかしちゃうと良いと思いましあ!

*1:一部例外あるけど……