mruby-mix
|
mikutter における World
プラグインは、マルチサービス・マルチアカウントを管理するための基盤となっているものです。
詳細については下記を参照してください。
一方 mruby-mix における World
プラグインは、ホスト アプリケーションが持つアカウント情報を一方的にmrubyコードに伝達するためのプロキシとしての役割のみを持ちます。
mikutterでは可能だったアカウントの永続化のような操作は、今のところできないようになっています。
ホスト アプリケーションからアカウント情報を通知するためには、最低でも以下の2つを実装する必要があります。
:world_current(world)
使用可能なアカウントのリストを認識させるためには、以下についても実装してください。
Plugin::World::Gate.accounts
メソッド追加で、以下の機能も実装することができます。
:world_create(world)
:world_destroy(world)
:world_change_current(world)
mrubyコードからホスト アプリケーションに対して、すべてのアカウント情報を要求するために呼び出されるメソッドです。
ホスト側ではこのメソッドを定義して、呼び出された際はmruby側に公開したいアカウント情報をDiva Modelに変換した後戻り値とする必要があります。
Diva Modelとしてのインターフェースは、一般的なWorld提供プラグイン相当のものであれば差し支えありません。
Spell等によって処理がホスト側に戻ってきた時に備えて、このModel内にホスト側でアカウントを特定するための識別情報やポインタを持たせておいても構いません。
念の為、ライフサイクルがホストとmrubyで正確に一致するとは限らないので、必要でなければポインタを持ち回るよりは単純な識別用のキー値のほうが良いでしょう。
mrubyコードからポインタを隠蔽するテクニックについては MRB_TT_DATA
でググると情報が得られます。
なお、ここで作成したDiva Modelのポインタは、GC Protectを行った上でホスト側で適切に保持することを推奨します。
参照を失うと :world_destroy
イベントを呼び出すための手段も失います。