プロジェクト

全般

プロフィール

バグ #959

完了

settings.ymlで特定のキーに対する値が設定を開いた回数分増える

あひる 家鴨 さんが7年以上前に追加. 約7年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
ブランチ:
クラッシュする:

説明

settings.yml の UserConfig::reply_present_policy 及び UserConfig::quote_present_policy の値が設定画面を開いた回数だけ増えていきます。
UserConfig::reply_present_policy の場合は

- :icon

UserConfig::quote_present_policy の場合は
- :header
- :icon
- :edge

がそれぞれ回数分生成されているのを確認しました。


ファイル

multiselect.patch (1.03 KB) multiselect.patch multiselectのパッチ あひる 家鴨, 2017-01-11 08:21

あひる 家鴨 さんが7年以上前に更新

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

あひる 家鴨 さんが約7年前に更新

  • ステータス新規 から パッチ適用待ち に変更

toshi_a 初音 さんが約7年前に更新

  • ステータスパッチ適用待ち から レビュー待ち に変更
  • 担当者あひる 家鴨 にセット

mergeしました。ちょっとだけ変更していて、値の書き換えが行われる度に重複を排除するようにしています。本来であれば要らない処理ですが、既存のユーザ全員の設定にゴミが入っているはずなので、今後書き換えられた時に重複が排除されるようにしています。

あひる 家鴨 さんが約7年前に更新

  • ステータスレビュー待ち から 解決 に変更

設定を開いても増えないことと、設定更新時に既存の重複が排除されるのを確認しました。
ありがとうございます。

あひる 家鴨 さんが約7年前に更新

  • 担当者あひる 家鴨 から toshi_a 初音 に変更

toshi_a 初音 さんが約7年前に更新

  • ステータス解決 から 終了 に変更

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