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
の読み込み忘れが修正されました