プロジェクト

全般

プロフィール

機能 #1125

Slackアカウントを作成したあとSlackプラグインを抜くと起動しなくなる

Akira Ouchi4ヶ月前に追加. 4ヶ月前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
開始日:
2017-12-20
期日:
進捗率:

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が起動を続けるのが良いように感じました。

関係しているリビジョン

リビジョン 5d41a272 (差分)
toshi_a 初音4ヶ月前に追加

起動時にWorldの復元に失敗した場合、それを削除する refs #1125

リビジョン ac0cf910 (差分)
toshi_a 初音4ヶ月前に追加

world: アカウントに対応するWorldプラグインがない場合のActivity roleが不正 refs #1125

履歴

#1 toshi_a 初音4ヶ月前に更新

  • 担当者toshi_a 初音 にセット

確かに、意図せずWorld系プラグインが読み込まれなくなって起動できなくなるとしんどいですね。また、今の所プラグインは何も考えずに外していいので、World系プラグインだけ、事前にWorldを消しておく必要があるというのも良くないですね。

プラグインが無い時点で、そのWorldは利用できないはずなのでWorld情報を削除するのが妥当な気がします。Slackプラグインを消して起動すると、Slackアカウントの情報が消えるというのは自然です。その上で、そのような理由で削除されたということをユーザに伝えると尚良いでしょう。

上記方針だと今試用している我々にとっては若干不便なこともあるかもしれないですね。しかしWorldの設定は(面倒だが)復元できるということ、通常の用途ではそのほうが好ましそうということから、上記の仕様で進めます。

#2 toshi_a 初音4ヶ月前に更新

  • ステータス新規 から レビュー待ち に変更
  • 担当者toshi_a 初音 から Akira Ouchi に変更

そのような状態の時は、Slack Worldを除去してActivityに通知を出すようにしました。起動するようになっているか確認してみてください。

#3 Akira Ouchi4ヶ月前に更新

確認しました。

Slack Worldを除去

除去されることを確認しました。
ただ、Worldを戻したときに再認証が必要になるのはちょっと面倒だったような気もします。
誤って抜いてしまった時(ありえそうなのはconfroot指定ミスったとか)にちょっと悲惨かも。
ぱっと思いついたアイデアとしては以下の2つです。後者はカワイイ。

  • プラグインを抜いたときはsettings.ymlにUserConfigが残るので、それに合わせる
  • みくったーちゃんがtutorialっぽいかんじでWorldのアカウントも消すかどうか聞いてくれる

Activityに通知を出すようにしました。

Activityの出力を確認できませんでした。ただ、activityを実行する箇所は通っていることをputsデバッグで確認できたので
Activityタブが動く前に呼び出してるとかでしょうかね(適当な感想)。

#4 toshi_a 初音4ヶ月前に更新

Worldを戻したときに再認証が必要になるのはちょっと面倒

これはいちいち書きませんでしたが実装方針に迷って、プラグインを誤って一時的に抜いてしまうことなども懸念していました。

プラグインを抜いたときはsettings.ymlにUserConfigが残るので、それに合わせる

ショートカットキーのように、提供しているプラグインが消えても設定だけ残しておくことは最初考えましたが、World Modelが失われている以上、World設定画面に表示できないため消すことができません。

と思っていましたが、結局Worldを削除するためにZombie Worldを作成して使っているので、これを設定画面でも使うのはアリですね。

みくったーちゃんがtutorialっぽいかんじでWorldのアカウントも消すかどうか聞いてくれる

Modalにはやりたくないので聞くのはやりたくなかったんですが、これは折衷案としては面白いですね。考えてみますが、実装難易度と天秤にかけると↑だけを実装する方向になりそうです

#5 toshi_a 初音4ヶ月前に更新

Activityの出力を確認できませんでした

大量にプラグインを入れている場合、あるいは大量のフォロイーがいるTwitterアカウントを使っている場合(アカウントが凍ってはらへん人は大変どすなぁ)、起動時に大量に発生するアクティビティに流されてしまって見つけるのが困難なのはちょっと気になってます。無いのではなく、探せないくらい多く発生しているため、見つけられてないという話じゃないですかね。

出て来るタイミングはかなり最初のタイミングなので、古いプラグインを入れていると複数出てくる「specファイルは廃止されました」みたいなアクティビティメッセージの中に一つだけ「アカウント…」から始まるやつが紛れてませんか。

出現順じゃなくて、アクティビティのタイムスタンプで並べようかなぁ

#6 Akira Ouchi4ヶ月前に更新

大量のフォロイーがいるTwitterアカウントを使っている場合(アカウントが凍ってはらへん人は大変どすなぁ)、起動時に大量に発生するアクティビティに流されてしまって見つけるのが困難なのはちょっと気になってます。無いのではなく、探せないくらい多く発生しているため、見つけられてないという話じゃないですかね。

フォロイーが少ないアカウントで検証しましたがやはり見えていないっぽいです。
デバッグメッセージを噛まして改めて見てみると、ウィンドウが出る直前に出力されているっぽかったので、そのへんってどうでしょうね。

#7 toshi_a 初音4ヶ月前に更新

詳しく調べたところ、発生させるActivityのroleが :error になっていました。このroleはユーザに伝えても仕方がないような例外などを出力するのに使っているroleで、デフォルトだと表示されないようになっています。

この用途には :system が適切なので、変更しました。

#8 Akira Ouchi4ヶ月前に更新

ありがとうございます。確認できました。

#9 Akira Ouchi4ヶ月前に更新

  • ステータスレビュー待ち から 終了 に変更

他の形式にエクスポート: Atom PDF