機能 #1125
完了Slackアカウントを作成したあとSlackプラグインを抜くと起動しなくなる
0%
説明
Slackアカウントを作成したあとの環境で、Slackプラグインを抜くと起動しなくなります。
/Users/akkie/mikutter/core/plugin/world/world.rb:137:in `block in load_world_ifn': unknown model :slack (RuntimeError) from /Users/akkie/mikutter/core/plugin/world/world.rb:127:in `each' from /Users/akkie/mikutter/core/plugin/world/world.rb:127:in `map' from /Users/akkie/mikutter/core/plugin/world/world.rb:127:in `load_world_ifn' from /Users/akkie/mikutter/core/plugin/world/world.rb:74:in `block in worlds' from /Users/akkie/mikutter/core/utils.rb:278:in `block in atomic' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' from /Users/akkie/mikutter/core/utils.rb:278:in `atomic' from /Users/akkie/mikutter/core/plugin/world/world.rb:73:in `worlds' from /Users/akkie/mikutter/core/plugin/world/world.rb:85:in `current_world' from /Users/akkie/mikutter/core/plugin/world/world.rb:33:in `block (2 levels) in <top (required)>' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pluggaloid-1.1.1/lib/pluggaloid/filter.rb:28:in `filtering' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:59:in `block (2 levels) in filtering' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:58:in `each' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:58:in `reduce' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:58:in `block in filtering' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:57:in `catch' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:57:in `filtering' from /Users/akkie/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pluggaloid-1.1.1/lib/pluggaloid/plugin.rb:63:in `filtering' from /Users/akkie/mikutter/core/plugin/world/service.rb:39:in `primary' from mikutter.rb:45:in `<main>'
バグというよりは、現状はこうなるのかなと言う認識でいます。
たぶん、アクティビティかどこかで警告を出しつつ、これ以外の起動可能なWorldが起動を続けるのが良いように感じました。
ファイル
toshi_a 初音 さんがほぼ7年前に更新
- 担当者 を toshi_a 初音 にセット
確かに、意図せずWorld系プラグインが読み込まれなくなって起動できなくなるとしんどいですね。また、今の所プラグインは何も考えずに外していいので、World系プラグインだけ、事前にWorldを消しておく必要があるというのも良くないですね。
プラグインが無い時点で、そのWorldは利用できないはずなのでWorld情報を削除するのが妥当な気がします。Slackプラグインを消して起動すると、Slackアカウントの情報が消えるというのは自然です。その上で、そのような理由で削除されたということをユーザに伝えると尚良いでしょう。
上記方針だと今試用している我々にとっては若干不便なこともあるかもしれないですね。しかしWorldの設定は(面倒だが)復元できるということ、通常の用途ではそのほうが好ましそうということから、上記の仕様で進めます。
toshi_a 初音 さんがほぼ7年前に更新
- ステータス を 新規 から レビュー待ち に変更
- 担当者 を toshi_a 初音 から Akira Ouchi に変更
そのような状態の時は、Slack Worldを除去してActivityに通知を出すようにしました。起動するようになっているか確認してみてください。
Akira Ouchi さんがほぼ7年前に更新
確認しました。
Slack Worldを除去
除去されることを確認しました。
ただ、Worldを戻したときに再認証が必要になるのはちょっと面倒だったような気もします。
誤って抜いてしまった時(ありえそうなのはconfroot指定ミスったとか)にちょっと悲惨かも。
ぱっと思いついたアイデアとしては以下の2つです。後者はカワイイ。
- プラグインを抜いたときはsettings.ymlにUserConfigが残るので、それに合わせる
- みくったーちゃんがtutorialっぽいかんじでWorldのアカウントも消すかどうか聞いてくれる
Activityに通知を出すようにしました。
Activityの出力を確認できませんでした。ただ、activityを実行する箇所は通っていることをputsデバッグで確認できたので
Activityタブが動く前に呼び出してるとかでしょうかね(適当な感想)。
toshi_a 初音 さんがほぼ7年前に更新
Worldを戻したときに再認証が必要になるのはちょっと面倒
これはいちいち書きませんでしたが実装方針に迷って、プラグインを誤って一時的に抜いてしまうことなども懸念していました。
プラグインを抜いたときはsettings.ymlにUserConfigが残るので、それに合わせる
ショートカットキーのように、提供しているプラグインが消えても設定だけ残しておくことは最初考えましたが、World Modelが失われている以上、World設定画面に表示できないため消すことができません。
と思っていましたが、結局Worldを削除するためにZombie Worldを作成して使っているので、これを設定画面でも使うのはアリですね。
みくったーちゃんがtutorialっぽいかんじでWorldのアカウントも消すかどうか聞いてくれる
Modalにはやりたくないので聞くのはやりたくなかったんですが、これは折衷案としては面白いですね。考えてみますが、実装難易度と天秤にかけると↑だけを実装する方向になりそうです
toshi_a 初音 さんがほぼ7年前に更新
Activityの出力を確認できませんでした
大量にプラグインを入れている場合、あるいは大量のフォロイーがいるTwitterアカウントを使っている場合(アカウントが凍ってはらへん人は大変どすなぁ)、起動時に大量に発生するアクティビティに流されてしまって見つけるのが困難なのはちょっと気になってます。無いのではなく、探せないくらい多く発生しているため、見つけられてないという話じゃないですかね。
出て来るタイミングはかなり最初のタイミングなので、古いプラグインを入れていると複数出てくる「specファイルは廃止されました」みたいなアクティビティメッセージの中に一つだけ「アカウント…」から始まるやつが紛れてませんか。
出現順じゃなくて、アクティビティのタイムスタンプで並べようかなぁ
Akira Ouchi さんがほぼ7年前に更新
大量のフォロイーがいるTwitterアカウントを使っている場合(アカウントが凍ってはらへん人は大変どすなぁ)、起動時に大量に発生するアクティビティに流されてしまって見つけるのが困難なのはちょっと気になってます。無いのではなく、探せないくらい多く発生しているため、見つけられてないという話じゃないですかね。
フォロイーが少ないアカウントで検証しましたがやはり見えていないっぽいです。
デバッグメッセージを噛まして改めて見てみると、ウィンドウが出る直前に出力されているっぽかったので、そのへんってどうでしょうね。
toshi_a 初音 さんがほぼ7年前に更新
詳しく調べたところ、発生させるActivityのroleが :error
になっていました。このroleはユーザに伝えても仕方がないような例外などを出力するのに使っているroleで、デフォルトだと表示されないようになっています。
この用途には :system
が適切なので、変更しました。
Akira Ouchi さんがほぼ7年前に更新
ありがとうございます。確認できました。