プロジェクト

全般

プロフィール

致命的 #1175

Worldonのアカウントしか登録していない状態でWorldonプラグインを抜くと起動時にエラーで落ちる

cob odo7ヶ月前に追加. 7ヶ月前に更新.

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

0%

プラグイン名:
https://github.com/cobodo/mikutter-worldon

説明

題名の通り。 #1125 と似ていますが、他のworldアカウントが全くない状態です。
他のworld系プラグインでも起こるかは確認していません。


バックトレース

Traceback (most recent call last):
53: from ./mikutter.rb:45:in `<main>'
52: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/service.rb:39:in `primary'
51: from /home/cobodo/repos/worldon/mikutter/vendor/gems/ruby/2.5.0/gems/pluggaloid-1.1.1/lib/pluggaloid/plugin.rb:63:in `filtering'
50: from /home/cobodo/repos/worldon/mikutter/vendor/gems/ruby/2.5.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:57:in `filtering'
49: from /home/cobodo/repos/worldon/mikutter/vendor/gems/ruby/2.5.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:57:in `catch'
48: from /home/cobodo/repos/worldon/mikutter/vendor/gems/ruby/2.5.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:58:in `block in filtering'
47: from /home/cobodo/repos/worldon/mikutter/vendor/gems/ruby/2.5.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:58:in `reduce'
46: from /home/cobodo/repos/worldon/mikutter/vendor/gems/ruby/2.5.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:58:in `each'
45: from /home/cobodo/repos/worldon/mikutter/vendor/gems/ruby/2.5.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:59:in `block (2 levels) in filtering'
44: from /home/cobodo/repos/worldon/mikutter/vendor/gems/ruby/2.5.0/gems/pluggaloid-1.1.1/lib/pluggaloid/filter.rb:28:in `filtering'
43: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/world.rb:34:in `block (2 levels) in <top (required)>'
42: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/world.rb:86:in `current_world'
41: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/world.rb:74:in `worlds'
40: from /home/cobodo/repos/worldon/mikutter/core/utils.rb:278:in `atomic'
39: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
38: from /home/cobodo/repos/worldon/mikutter/core/utils.rb:278:in `block in atomic'
37: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/world.rb:75:in `block in worlds'
36: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/world.rb:135:in `load_world_ifn'
35: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/keep.rb:33:in `accounts'
34: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/monitor.rb:226:in `mon_synchronize'
33: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/keep.rb:35:in `block in accounts'
32: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/keep.rb:35:in `open'
31: from /home/cobodo/repos/worldon/mikutter/core/plugin/world/keep.rb:36:in `block (2 levels) in accounts'
30: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych.rb:264:in `load'
29: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/nodes/node.rb:50:in `to_ruby'
28: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:32:in `accept'
27: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:6:in `accept'
26: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:16:in `visit'
25: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:311:in `visit_Psych_Nodes_Document'
24: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:32:in `accept'
23: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:6:in `accept'
22: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:16:in `visit'
21: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
20: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
19: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `each_slice'
18: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `each'
17: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:338:in `block in revive_hash'
16: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:32:in `accept'
15: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:6:in `accept'
14: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:16:in `visit'
13: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:162:in `visit_Psych_Nodes_Mapping'
12: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
11: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `each_slice'
10: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:336:in `each'
9: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:338:in `block in revive_hash'
8: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:32:in `accept'
7: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:6:in `accept'
6: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/visitor.rb:16:in `visit'
5: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:208:in `visit_Psych_Nodes_Mapping'
4: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/visitors/to_ruby.rb:391:in `resolve_class'
3: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/class_loader.rb:28:in `load'
2: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/class_loader.rb:46:in `find'
1: from /home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/class_loader.rb:54:in `resolve'
/home/cobodo/.rbenv/versions/2.5.0/lib/ruby/2.5.0/psych/class_loader.rb:54:in `path2class': undefined class/module Plugin::Worldon:: (ArgumentError)


再現手順

mv $MIKUTTER_CONFROOT/plugin/worldon $MIKUTTER_CONFROOT/
ruby mikutter.rb

関係しているリビジョン

リビジョン b46561c2 (差分)
toshi_a 初音7ヶ月前に追加

world: World Modelをシリアライズするとき、Divaの機能を使うために形式をJSONに変えた refs #1175

履歴

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

Worldが保存される時にJSONに変換していますが、その時にJSONに変換できていないクラスが含まれてしまっているんですかね。

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

  • ステータス新規 から 実装待ち に変更
  • 担当者toshi_a 初音 にセット

原因を完全に理解しました

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

  • ステータス実装待ち から レビュー待ち に変更
  • 担当者toshi_a 初音 から cob odo に変更

origin/topic/1175-world-savedata-format-fix ブランチに修正したものをpushしました。問題なさそうであればステータスを「解決」にしておいてください。

Divaはその内容をJSON形式でダンプすることが出来るためその機能を使っているつもりでしたが、アカウント情報がYAMLで書き出されていたためこの機能が使われず、標準のYAMLライブラリがシリアライズしていました。

今回の修正で想定していた方法で保存されるようになったため、 #1125 で言及しているような挙動になると思います。

#4 cob odo7ヶ月前に更新

  • ステータスレビュー待ち から 解決 に変更
  • 担当者cob odo から toshi_a 初音 に変更

プラグインを抜いても落ちることはなくなり、また読み込めなかったアカウント情報が消えるという #1125 の挙動に準じていることが確認できたので、ステータスを解決にします。ありがとうございます。

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

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

ありがとうございます。masterにmergeしました。

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