バグ #918
完了特定のリビジョン(mikutter)でslackプラグインが正常に動作しない
説明
概要¶
特定のmikutterのリビジョンでslackプラグインが正常に動作しません。
認証は通るが、slackのTLが表示されない状態です。
ログを見る限り、Userの取得時にモデルにうまく落とし込めていないように見えます。
問題のリビジョンでのログは添付します記載します。(※ユーザー名等は適当に書き換えてあります)
git bisect
で探索した結果、最新を含む特定のリビジョンでmikutter_slackが動いていないことを確認しました。bisect で探索中、そもそもmikutterが起動しないリビジョンがありました。
どうすべきか悩んだので、とりあえずそれらをスキップした場合、badにした場合、goodにした場合の3種類で見ました。
前提¶
mikutter: developブランチ
ruby: 2.3.1
OS: OSX El Capitan
good: 34b5b59
bad: d1871d2
起動しないリビジョンをskipした場合¶
候補
b507b5a8b1c5df65e773473a3cb5a2817b9370c6 d787b1d41cc2da20699d3898994b1d337f277178 3ab6ffcc353526c713dcb9af16aa3e94f22029e0 59ce817e847e36ebdc6d5e21393a900b7a66b0eb d5570c1b8a718279bc40b5199c2701d1110ed5e4
起動しないリビジョンをbadにした場合¶
候補
3ab6ffcc353526c713dcb9af16aa3e94f22029e0 is the first bad commit commit 3ab6ffcc353526c713dcb9af16aa3e94f22029e0 Author: Toshiaki Asai <toshi.alternative@gmail.com> Date: Sat Oct 22 17:08:14 2016 +0900 Retriever::Modelの値を書き換える時、必ずキャストした値を格納する :040000 040000 00166859e4c82b2682bc06d779515f3775a039d5 56bb4f68a4a3c026c363b2f60641546e93956241 M core
起動しないリビジョンをgoodにした場合¶
d5570c1b8a718279bc40b5199c2701d1110ed5e4 is the first bad commit commit d5570c1b8a718279bc40b5199c2701d1110ed5e4 Author: Toshiaki Asai <toshi.alternative@gmail.com> Date: Sat Oct 22 16:59:37 2016 +0900 User modelのidのtypeが間違っている string -> int :040000 040000 4e4cca99bf1ff074eb412d299aff791837960cf4 785fab0e9e40b76ed3e9480d7463d20d45f70e92 M core
ファイル
あひる 家鴨 さんが約8年前に更新
経過報告。
上記の bisect の結果より、core/user.rb の変更点が怪しいと思い変更を加えてみた結果ユーザが表示されるようになりました。
core/user.rb の:id
を field.int
から field.string
に変更し,
alias :to_i :id deprecate :to_i, "id", 2017, 05
をコメントアウトした結果、投稿が表示されるようになりました。
slackプラグインでのUserモデル(model/user.rb)において、:id
をfiled.string
としているため起きているように見えます。
slackではid
は int でないため、対策が必要ですが、これはプラグイン側による対策になるのでしょうか。
slackプラグインのUserモデル [[https://github.com/Na0ki/mikutter_slack/blob/master/model/user.rb#L10]]
toshi_a 初音 さんが約8年前に更新
なるほど。やっぱりmikutter自体の問題をSlackプラグインが踏んでるっぽいですね。
でもどうして source:core/user.rb にSlackプラグインが影響されるんだろう。
- 具体的に、mikutterに行った変更のパッチを貼ってください
- (1)のパッチの対象となるリビジョンを教えて下さい(多分 3ab6ffcc353526c713dcb9af16aa3e94f22029e0 か d5570c1b8a718279bc40b5199c2701d1110ed5e4 のどっちかだよね)
- (2)のリビジョンに(1)のパッチを適用しなかった場合に表示されるバックトレース・ログ・スクリーンショットのいずれかを貼ってください
あひる 家鴨 さんが約8年前に更新
- ファイル slack.patch slack.patch を追加
- ファイル log.txt log.txt を追加
適用したパッチ(添付ファイルのslack.patch)
Index: core/user.rb IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- core/user.rb (date 1477123177000) +++ core/user.rb (revision ) @@ -20,7 +20,7 @@ # detail | detail # profile_image_url | icon - field.int :id + field.string :id field.string :idname field.string :name field.string :location @@ -58,9 +58,6 @@ def self.container_class Users end - - alias :to_i :id - deprecate :to_i, "id", 2017, 05 def idname self[:idname] end
パッチを適用したリビジョン: d5570c1b8a718279bc40b5199c2701d1110ed5e4
適用しなかった場合のバックトレース: 添付の log.txt