Last Modified:
Release Slack-v0.9.0 #Perl #Slack
この文書は以前のバージョンv0.8.0とv0.9.0の変更点を記述しています。
このリリースには以前のバージョンと互換性の無い変更が含まれています。
インターフェースの追加
ありません。
インターフェースの変更
action
に空の条件節を指定した場合における補完が変更されました #21
条件節について、以下の両者が区別されるようになりました。
- 条件節を省略した場合
- 条件節が空の場合
(正確には、条件節が存在しPATH_INFO
と/
がどちらも省略された場合です。説明を簡略化するために便宜上、空の条件節とします)
どちらの場合も基本的に'/' => qr/.*/
が補完されます。
これはアクションがコントローラーに属しているためprefixが考慮されるべきだからです。
さらに、条件節を省略した場合は、action
の場合に限りアクション名にマッチするよう補完されます。
package MyApp::Foo;
prep prep => sub { };
action action => sub { };
view view => sub { };
# are equivalent to
prep prep => { '/' => qr/.*/ } => sub { }; # /foo/.*
action action => { '/' => 'action' } => sub { }; # /foo/action
view view => { '/' => qr/.*/ } => sub { }; # /foo/.*
一方action
にて空の条件節が明示された場合は、アクション名にマッチする補完は無効となります。
package MyApp::Foo;
prep prep => {} => sub { };
action action => {} => sub { };
view view => {} => sub { };
# are equivalent to
prep prep => { '/' => qr/.*/ } => sub { }; # /foo/.*
action action => { '/' => qr/.*/ } => sub { }; # /foo/.* # /foo/action in previous version
view view => { '/' => qr/.*/ } => sub { }; # /foo/.*
以前のバージョンでは、{ '/' => 'アクション名' }
が補完されていました。
これは意図した動作ではありませんでした。
インターフェースの削除
アクションコードで発生した例外のキャッチが一時的に廃止されました #22
例外がキャッチされることによってデバッグが難しくなってしまったため、一時的に廃止されました。
本来INTERNAL_SERVER_ERROR
をビューで処理できるようにするために導入されましたが、
実装方法が正しくなかったためPlack::Middleware::StackTrace
が動かなくなっていました。
PLACK_ENVがdevelopmentの場合、アクションコードで発生した例外はビューの処理を終えた後に再び投げられる、という仕様を検討しています。
実装の変更
デバッグ出力のアクションテーブル表示における正規表現が更に簡略化されました
v0.8.0で導入された正規表現の簡略化が進化しました。 極力意味を変えないまま、正規表現が見やすく表示されます。