Last Modified:
Release Slack-0.02 #Perl #Slack
この文書は以前のバージョン0.01と0.02の変更点を記述しています。
このリリースには以前のバージョンと互換性の無い変更が含まれています。
インターフェースの追加
コンテキストオブジェクトが追加されました
コンテキストオブジェクトの実体は単にハッシュです。
コンテキストオブジェクト => {
app => アプリケーション,
action => アクション,
controller => コントローラー,
};
コンテキストオブジェクトはアクションコードに渡され、contextキーワードで参照できます。
インターフェースの変更
Slackコンポーネントの読み込み方法が変更されました
Slackコンポーネントに新たにSlack::Appが追加され、コンポーネントの読み込み方法が変更されました。
新しい方法では、use Slackにおいてベースとなるコンポーネントを引数に指定します。
# application class
package MyApp;
use Slack qw(App);
# controller class
package MyApp::Root;
use Slack qw(Controller);
これはArkを参考にしました。
以前のバージョンではアプリケーションクラスはSlackクラスを継承し、コントローラークラスはuse Slack::Controllerしていました。
# application class
package MyApp;
use parent qw(Slack);
# controller class
package MyApp::Root;
use Slack::Controller;
そしてこの記述方法にはいくつかの問題がありました。
use Slack::Controllerしただけで継承ツリーにSlack::Controllerが入ってしまう- アプリケーションクラスとコントローラークラスにおいて、Slackコンポーネントを導入する方法に一貫性が無い
キャプチャされた文字列の格納方法が変更されました
名前付きキャプチャはこれまで通りreq->argsに格納されますが、通常のキャプチャは新しく追加されたreq->argvに格納されるように変更されました。
これまでreq->args->{1}として参照していた変数は、今後req->argv->[0]として参照します。
インデックスがズレていることに注意してください。
以前のバージョンでは通常のキャプチャはreq->args->{1}のように、マッチング変数$nのnをハッシュキーとして格納していました。
しかしハッシュのキーとして数値が現れるのは、やはり見た目が良くありませんでした。
インターフェースの削除
不要になったreq->actionが削除されました
コンテキストオブジェクトの追加によってreq->actionが不要になったため削除されました。
今後はcontext->{action}を使用してください。
また同時にreq->action->controller->app(つまりcontext->{action}->controller->app)も削除されました。
今後はcontext->{app}を使用してください。
実装の変更
Slackは単なるコンポーネントローダーになりました
Slackからアプリケーションクラスの機能がSlack::Appに委譲され、Slack自体は単なるコンポーネントローダーになりました。
以前のバージョンではSlackにアプリケーションクラスとコンポーネントローダーが混在していました。
いくつかの問題が修正されました
- ハッシュキー部分にキーワードが現れたとき、誤って置換してしまう問題が修正されました
Slack::Controllerの読み込み忘れが修正されました