プロジェクト

全般

プロフィール

バグ #959

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

あひる 家鴨6ヶ月前に追加. 5ヶ月前に更新.

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

0%

プラグイン名:
再現手順:

説明

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

- :icon

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

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

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

関係しているリビジョン

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

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

履歴

#1 あひる 家鴨5ヶ月前に更新

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

#2 あひる 家鴨5ヶ月前に更新

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

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

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

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

#4 あひる 家鴨5ヶ月前に更新

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

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

#5 あひる 家鴨5ヶ月前に更新

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

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

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

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