記事

Last Modified:

Release Slack-v0.9.0 #Perl #Slack

この文書は以前のバージョンv0.8.0とv0.9.0の変更点を記述しています。

このリリースには以前のバージョンと互換性の無い変更が含まれています。

インターフェースの追加

ありません。

インターフェースの変更

actionに空の条件節を指定した場合における補完が変更されました #21

条件節について、以下の両者が区別されるようになりました。

どちらの場合も基本的に'/' => 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で導入された正規表現の簡略化が進化しました。 極力意味を変えないまま、正規表現が見やすく表示されます。