操作
バグ #959
完了settings.ymlで特定のキーに対する値が設定を開いた回数分増える
プラグイン名:
ブランチ:
クラッシュする:
説明
settings.yml の UserConfig::reply_present_policy
及び UserConfig::quote_present_policy
の値が設定画面を開いた回数だけ増えていきます。UserConfig::reply_present_policy
の場合は
- :icon
UserConfig::quote_present_policy
の場合は - :header - :icon - :edge
がそれぞれ回数分生成されているのを確認しました。
ファイル
あひる 家鴨 さんがほぼ8年前に更新
- ファイル multiselect.patch multiselect.patch を追加
settingsのmultiselectが原因のようです。
source:core/plugin/settings/multiselect.rb#L72 は設定を開くとチェックが入っている場合毎回呼ばれますが、その度に [value] が追加されています。
これによって、今回報告した問題が引き起こされています。
とりあえず対策としては、value を入れる際に get で得た既存の値と同じものがあるかを判定し、なければ set を実行するというものにしてみましたが、いかがでしょうか。
listener.set((listener.get || []) + [value]) unless (listener.get || []).include?(value)
source:core/plugin/settings/multiselect.rb#L80に関しても同様です。
この修正をしてから既存の環境と新しく作った環境の両方で本チケットの問題が再現しないことを確認しました。
パッチを添付します。( multiselect.patch )
toshi_a 初音 さんがほぼ8年前に更新
- ステータス を パッチ適用待ち から レビュー待ち に変更
- 担当者 を あひる 家鴨 にセット
mergeしました。ちょっとだけ変更していて、値の書き換えが行われる度に重複を排除するようにしています。本来であれば要らない処理ですが、既存のユーザ全員の設定にゴミが入っているはずなので、今後書き換えられた時に重複が排除されるようにしています。
操作