プロジェクト

全般

プロフィール

バグ #1238

mikutter account コマンドが使えなくなっている

Hiyowa Kyobashi7ヶ月前に追加. 21日前に更新.

ステータス:
実装待ち
優先度:
通常
担当者:
-
対象バージョン:
プラグイン名:
core/boot/shell/account.rb
ブランチ:
クラッシュする:
はい

説明

表題の通り。


再現手順

・ mikutter 3.7をcloneして bundle install --path vendor/bundle する。
・ bundle exec ruby mikutter.rb account を実行する。

次のエラーを出力してクラッシュする。
.../mikutter/core/miquire.rb:98:in `require': cannot load such file -- mikutwitter (LoadError)

履歴

#1 Hiyowa Kyobashi7ヶ月前に更新

3.6でも現象を確認。3.5では発生しない。

#2 Izumi Tsutsui6ヶ月前に更新

以下のパッチ

--- core/boot/shell/account.rb.orig    2018-01-02 11:34:04.902005885 +0900
+++ core/boot/shell/account.rb    2018-05-10 22:21:51.666406250 +0900
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-

 miquire :boot, 'delayer'
-miquire :lib, 'mikutwitter'
 miquire :core, 'plugin'
+miquire :lib, 'twitter'
+miquire :plugin, 'twitter/mikutwitter'

 puts "Register new account." 


を当てると
Register new account.

までは出ますね。

~/.mikutter/plugin/twitter_api_keys の plugin は見に行ってくれないのか、
core/config.rb の CK/CS を書き換えていない状態だと

401 Authorization Required (OAuth::Unauthorized)

になってしまいますが。

#3 Hiyowa Kyobashi6ヶ月前に更新

ありがとうございます。
ご指摘のパッチを当ててみたのですが、

/mikutter/core/miquire.rb:98:in `require': cannot load such file -- twitter (LoadError)

となってしまいました。ディレクトリ構造を確認しても、lib以下にtwitter.rbといったファイルは存在しないようです。
パス指定等は合っていますでしょうか。

#4 Izumi Tsutsui6ヶ月前に更新

あれ? と思って調べたところ mikutter とは関係なく gem で入れた twitter gem を見に行っていたのかもしれません。

試したところ 3.6.8, 3.7.0 いずれも以下だけで
Register new account.
まで出ましたがどうでしょう。

--- a/core/boot/shell/account.rb
+++ b/core/boot/shell/account.rb
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-

 miquire :boot, 'delayer'
-miquire :lib, 'mikutwitter'
+miquire :plugin, 'twitter/mikutwitter'
 miquire :core, 'plugin'

 puts "Register new account." 

#5 Hiyowa Kyobashi6ヶ月前に更新

ありがとうございます。無事、pinの入力までは出るようになりました。
が、CS/CKを書き換えた状態でpinを入力すると、以下のエラーが発生し、登録が完了しませんでした。

/home/User/mikutter/core/boot/shell/account.rb:24:in `<top (required)>': uninitialized constant Service (NameError)
from /home/User/mikutter/core/boot/option.rb:73:in `require' from /home/User/mikutter/core/boot/option.rb:73:in `block in parse'
from /home/User/.rbenv/versions/2.4.1/lib/ruby/2.4.0/optparse.rb:1062:in `initialize'
from /home/User/mikutter/core/boot/option.rb:24:in `new'
from /home/User/mikutter/core/boot/option.rb:24:in `parse'
from mikutter.rb:17:in `<main>'

別チケットを切った方がよければそうします。

#6 Izumi Tsutsui6ヶ月前に更新

適当にいじってみると

--- a/core/boot/shell/account.rb
+++ b/core/boot/shell/account.rb
@@ -1,8 +1,10 @@
 # -*- coding: utf-8 -*-

 miquire :boot, 'delayer'
-miquire :lib, 'mikutwitter'
 miquire :core, 'plugin'
+miquire :lib, 'diva'
+miquire :plugin, 'world/world'
+miquire :plugin, 'twitter/mikutwitter'

 puts "Register new account." 

2) Login twitter.
3) Input PIN code.
PIN code>4849064
Account register failed.
uninitialized constant Plugin::Twitter
% 

うーん。
としぁさんに聞いてみたほうが速そうですが、
twitter plugin はもはや mikutter 本体とは分離されているとすると
結構めんどくさいのかも?

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

  • 題名mikutter account コマンドを実行するとLoadErrorで落ちる から mikutter account コマンドが使えなくなっている に変更
  • ステータス分類待ち から 実装待ち に変更

3.6で忘れられていて使えなくなってるようですね。

サブコマンドは今の所、一切プラグインがロードされない状態で実行されます。
3.5まではTwitterが組み込みだったので、Twitterを担当するコードだけ読み込んでいたのですが、3.6からはTwitterがプラグインとなり、アカウント機能自体もWorldプラグインになったため、新たなアカウントを登録するにはこれらのプラグインをどうしても読み込む必要があります。

幸い、World系プラグインはGUIには依存していないので、一応なんとかなるかなぁ…とは思っています。できるだけ3.7の範囲(バグ修正)で済ませたいですが、Twitter以外のWorldにも対応するのは3.8以降になってしまう可能性もあります。

#8 あひる 家鴨22日前に更新

  • プラグイン名core/boot/shell/account.rb にセット

3.8ですが、とりあえずこんな感じに読み込ませたらもう少し進みました。

--- a/core/boot/shell/account.rb
+++ b/core/boot/shell/account.rb
@@ -1,8 +1,13 @@
 # -*- coding: utf-8 -*-

 miquire :boot, 'delayer'
-miquire :lib, 'mikutwitter'
 miquire :core, 'plugin'
+miquire :lib, 'diva'
+miquire :plugin, 'world/world'
+miquire :plugin, 'twitter/mikutwitter'
+miquire :plugin, 'uitranslator/uitranslator'
+miquire :plugin, 'spell/spell'
+miquire :plugin, 'twitter/twitter'

ただし、(関係あるかはわかりませんが)すでに登録済みのアカウントで試したところ、下記のエラーで落ちました。

Account register failed.
account twitter606860144 already exists.
#<Thread:0x0000557887ce0900@/home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:41 aborting> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
    24: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:43:in `block in api'
    23: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:79:in `query!'
    22: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:94:in `_query!'
    21: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:30:in `api_lock'
    20: from /usr/local/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
    19: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:95:in `block in _query!'
    18: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/cache.rb:17:in `cache'
    17: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:96:in `block (2 levels) in _query!'
    16: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:131:in `retry_if_fail'
    15: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:131:in `times'
    14: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:133:in `block in retry_if_fail'
    13: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:97:in `block (3 levels) in _query!'
    12: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:117:in `fire_request_event'
    11: from /home/mikutter/mikutter/core/plugin/twitter/mikutwitter/query.rb:117:in `ensure in fire_request_event'
    10: from /usr/local/bundle/gems/pluggaloid-1.1.1/lib/pluggaloid/plugin.rb:55:in `call'
     9: from /usr/local/bundle/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:47:in `call'
     8: from /usr/local/bundle/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:47:in `new'
     7: from /usr/local/bundle/gems/delayer-0.0.2/lib/delayer.rb:49:in `initialize'
     6: from /usr/local/bundle/gems/delayer-0.0.2/lib/delayer.rb:49:in `new'
     5: from /usr/local/bundle/gems/delayer-0.0.2/lib/delayer/procedure.rb:11:in `initialize'
     4: from /usr/local/bundle/gems/delayer-0.0.2/lib/delayer/priority.rb:34:in `register'
     3: from /usr/local/bundle/gems/delayer-0.0.2/lib/delayer/priority.rb:34:in `synchronize'
     2: from /usr/local/bundle/gems/delayer-0.0.2/lib/delayer/priority.rb:47:in `block in register'
     1: from /home/mikutter/mikutter/core/boot/delayer.rb:57:in `block in <top (required)>'
/home/mikutter/mikutter/core/boot/delayer.rb:57:in `wakeup': killed thread (ThreadError)

未登録アカウントでは試していません。

#9 toshi_a 初音21日前に更新

よく考えたら抽象化してもWorldに依存してしまうので(mikutter本体にはそもそもアカウントという概念はない)、根本的にはCLIをつけないと解決しませんね。
この機能は一度削除してしまって、拡張可能なCLIを考えたほうが良さそうです。

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