Sinatra 1.1.0 がリリースされました。
sinatra/CHANGES at 1.1.0 · sinatra/sinatra · GitHub
手元のコードをSinatra 1.1対応しようと思ってCHANGESを眺めて、簡単に翻訳してみようかなと思った。のでだらだら。いいかげん訳なのであんまり本気で信じないで、みんなちゃんと英語の原文に当たるといいと思います。
あと 1.0 が理解の前提になってるのは言うまでもありません。
- before/after フィルタに、パスのパターンマッチ(パラメータキャプチャつき)が使えるようになった
before('/user/:name') { |name| ... }
- scssテンプレートをレンダリングするために scss というメソッドおよびファイル拡張子 .scss が使えるようになった
- 以下のテンプレート(用のメソッド)が使えるようになった
- `liquid`, `markdown`, `nokogiri`, `textile`, `rdoc`, `radius`, `markaby`
- 静的ファイルに対する HTTP_RANGE ヘッダのサポート
- ただし Multi-range リクエストはまだサポートされていない
- #settings メソッドがクラス内でもトップレベルでも使えるようになった
- set で複数の値を指定する際に #to_hash に依存しなくなった
- Enumerable なものはなんでも使用可能となった
- ネストしたテンプレートについては :layout のデフォルト値が false になった
- partial を描画するときにいちいち :layout => false を指定しなくてよくなった
- レンダリング関数が複数の値(ひとつめが content body でふたつめが content type であるような値)を返して、かつ content-type が明示的にセットされていない場合に 'text/html' でなく渡された値を content-type として使うようにした
- (訳注) こみいった英語で正しく読めているかいまいち自信がない
- 以下の言語の README も含まれた(日本語は古かったのがアップデートされた)
- Chinese (Wu Jiang), French (Mickael Riga), German (Bernhard Essl, Konstantin Haase, burningTyger), Hungarian (Janos Hardi) and Spanish (Gabriel Andretta). Japanese (Kouhei Yanagita)
- Sinatraが保持する template_cache に外からアクセスできるようになった
- last-modified をセットするときに DateTime が使えるようになった(出力はちゃんと文字列で出るよ)
- ステータスコード 599 が正しく出せるようになった
- なにこれ? と思ってぐぐってみたら、返すWebサーバがちらほらあるみたい……まあRFC的に予約された範囲内のコードなのは確かだが
- 1.9.2 に対応しています
- 1.8.6 使用時のメモリリークに対応するコードを入れた
- ただし本質的には 1.8.6 のバグのせいで、対応コードはテンプレートのparseに余計なオーバーヘッドをかけている
- できれば 1.8.7 以降を使いましょう
- Rails3 と同居できるようになった
- 1.9 におけるエンコーディングの扱いがよくなった
- 開発環境におけるエラー画面処理(stack traceとか出してた特殊なフック出力)が、 :after_handlers がセットされている場合、カスタムのエラーハンドラ( error ExceptionName do ... end ) より後に処理されるようになった
- このため、開発環境においてこのエラー出力画面を抑制できるようになった
- 重みづけ HTTP_ACCEPT ヘッダが使えるようになった
- 品質値 とか言われたりすることもあるらしい。(参考)
- send_file はセットされた :type オプションを常に優先するようになった
- これまでは mime-type に見付からなかったら無視されていたが、今後はマッチしなくても指定された内容がそのまま送られるようになった
- redirect メソッドによるリダイレクトは、必ず絶対パスとしてリダイレクトすることになった
- README の Erubis、 Haml および Test::Unit についてダメな感じのサンプルが載っていたのを修正
- SIGTERM が送られてきたらちゃんと処理するようになった
- インラインテンプレートつき modular タイプのアプリケーションが 'run!' でちゃんと起動するように修正した
- インラインテンプレートの末尾にあるスペースが無視されるようになった
- カスタムのrequireが定義されたなんか別のパッケージマネジメントシステムと同居できるようになった
- GitHub の問題があったので Lighthouse を外した
- GitHub の Issues にバグ報告でもされてたのかな、ていうか Lighthouse ってなに
- Lighthouse - Beautifully Simple Issue Tracking これのこと?
Tilt はまだあるけど、次からバンドルされなくなるよ(Tilt is now a dependency and therefore no longer ships bundled with Sinatra.)"dependency" の意味ってそういう解釈でいいのかなあ
- TiltはSinatraの依存パッケージ、ということにして外部に出したので、もうSinatra自体にはバンドルされなくなった
- Rack 1.1 依存で、Rack 1.0 はもうサポート外
思ったより激しく修正されてるなー。自分が嬉しそうな項目がいくつかあるので Sinatra++ という感じ。