プロジェクト

全般

プロフィール

バグ #918

特定のリビジョン(mikutter)でslackプラグインが正常に動作しない

あひる 家鴨12ヶ月前に追加. 9ヶ月前に更新.

ステータス:
却下
優先度:
通常
担当者:
-
対象バージョン:
開始日:
2016-10-23
プラグイン名:
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
log.20161023_203824.txt (117 KB) log.20161023_203824.txt mikutterの標準エラー出力 あひる 家鴨, 2016-10-23 20:46
slack.patch (586 Bytes) slack.patch パッチ あひる 家鴨, 2016-11-02 14:08
log.txt (112 KB) log.txt ログ あひる 家鴨, 2016-11-02 14:10

履歴

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

  • トラッカー機能 から バグ に変更

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

経過報告。
上記の bisect の結果より、core/user.rb の変更点が怪しいと思い変更を加えてみた結果ユーザが表示されるようになりました。

core/user.rb の:idfield.int から field.string に変更し,

alias :to_i :id
deprecate :to_i, "id", 2017, 05

をコメントアウトした結果、投稿が表示されるようになりました。

slackプラグインでのUserモデル(model/user.rb)において、:idfiled.stringとしているため起きているように見えます。
slackではidは int でないため、対策が必要ですが、これはプラグイン側による対策になるのでしょうか。

slackプラグインのUserモデル [[https://github.com/Na0ki/mikutter_slack/blob/master/model/user.rb#L10]]

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

なるほど。やっぱりmikutter自体の問題をSlackプラグインが踏んでるっぽいですね。
でもどうして source:core/user.rb にSlackプラグインが影響されるんだろう。

  1. 具体的に、mikutterに行った変更のパッチを貼ってください
  2. (1)のパッチの対象となるリビジョンを教えて下さい(多分 3ab6ffcc353526c713dcb9af16aa3e94f22029e0d5570c1b8a718279bc40b5199c2701d1110ed5e4 のどっちかだよね)
  3. (2)のリビジョンに(1)のパッチを適用しなかった場合に表示されるバックトレース・ログ・スクリーンショットのいずれかを貼ってください

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

適用したパッチ(添付ファイルの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

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

上記パッチは最新のdevelop(b1a1510827342bef26c533f5c85d28ae08f57684)では動かないのを確認しました。
他の方法を模索します。

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

これはプラグイン側の問題でした。

Slackプラグインがユーザーのモデルを呼び出していましたが、その際に

field.has :user, User, true
としていました。
正しくは
field.has :user, Plugin::Slack::User, true
でした。
Plugin::Slack::User とすべきところを User としてしまっていたために、正常に自分で定義したモデルが呼ばれなかったようです。

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

  • ステータス新規 から 却下 に変更

上記コメントの理由により却下します

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