プロジェクト

全般

プロフィール

致命的 #1055

完了

設定を開くと落ちる

あひる 家鴨 さんがほぼ7年前に追加. 6年以上前に更新.

ステータス:
終了
優先度:
通常
対象バージョン:
開始日:
2017-07-09
期日:
進捗率:

0%

プラグイン名:
core/plugin/settings/setting_dsl.rb

説明

develop ブランチで設定を開くと落ちます。
cobodo 氏が発見しました。
@core/plugin/settings/setting_dsl.rb
の35行目の super() の引数に plugin を渡していないため落ちているようです。
落ちた際のログは https://gist.github.com/cobodo/32b5a9594d95f122db8c146460db82e5 の cobodo 氏が上げたものを参照してください。
後ほど修正したコミットを上げます。


バックトレース

/Users/ahiru/mikutter/source/core/mui/gtk_form_dsl.rb:10:in `initialize': wrong number of arguments (given 0, expected 1)
from /Users/ahiru/mikutter/source/core/plugin/settings/setting_dsl.rb:35:in `initialize'
from /Users/ahiru/mikutter/source/core/plugin/settings/settings.rb:37:in `new'
from /Users/ahiru/mikutter/source/core/plugin/settings/settings.rb:37:in `block in setting_window'
from /Users/ahiru/mikutter/source/core/plugin/settings/settings.rb:32:in `each'
from /Users/ahiru/mikutter/source/core/plugin/settings/settings.rb:32:in `setting_window'
from /Users/ahiru/mikutter/source/core/plugin/settings/settings.rb:20:in `block (2 levels) in <top (required)>'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/pluggaloid-1.1.1/lib/pluggaloid/listener.rb:25:in `call'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:97:in `block (2 levels) in call_all_listeners'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:96:in `each'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:96:in `block in call_all_listeners'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:95:in `catch'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:95:in `call_all_listeners'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/pluggaloid-1.1.1/lib/pluggaloid/event.rb:39:in `block in call'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/delayer-0.0.2/lib/delayer/procedure.rb:24:in `run'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/delayer-0.0.2/lib/delayer/extend.rb:58:in `run_once'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/delayer-0.0.2/lib/delayer/extend.rb:30:in `run'
from /Users/ahiru/mikutter/source/vendor/bundle/ruby/2.4.0/gems/delayer-0.0.2/lib/delayer.rb:43:in `method_missing'
from /Users/ahiru/mikutter/source/core/plugin/gtk/delayer.rb:10:in `block in boot'
from /Users/ahiru/mikutter/source/core/plugin/gtk/mainloop.rb:10:in `main'
from /Users/ahiru/mikutter/source/core/plugin/gtk/mainloop.rb:10:in `mainloop'
from mikutter.rb:68:in `boot!'
from mikutter.rb:97:in `<main>'

あひる 家鴨 さんがほぼ7年前に更新

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

ブランチ topic/1055-fix-dsl-initialize に修正をプッシュしました。
確認をお願いします。

あひる 家鴨 さんがほぼ7年前に更新

他のパターンでも落ちることを確認したので、もう少し追って見ます。

あひる 家鴨 さんがほぼ7年前に更新

setting_dsl の引数の問題を潰したら新たな問題が出てきました。
core/plugin/extract/option_widget.rb@extract のハッシュ?が nil なのにキーでアクセスしようとしてるため落ちてるようです。
雑に nil チェックいれて落ちなくはしましたが、気合が足りずなぜ @extract が nil なのかとかこれでいいのかまで確認できてないです。
とりあえずメモとしてチケットに残します。
あと、場当たり的対処したのをブランチにプッシュしときました。

Osamu Koga さんがほぼ7年前に更新

setting_dsl.rbとgtk_form_dsl.rbでコードの重複があり、そもそも元から正しくリファクタリングされてなかったように見えます。moduleのコンストラクタが独自に引数を取ると、複数のそういうmoduleをincludeしたときに必ず壊れたりして面倒なので、setting_dsl.rbではDSL関連のことは

def initialize(plugin)
  @plugin = plugin
  super()
end

だけやっておいて、ブロックの処理とかmethod_missingとかを全部gtk_form_dsl.rbに巻き取らせるのが良いように思います。

あひる 家鴨 さんが6年以上前に更新

動作確認しました。
topic/1055-fix-dsl-initialize-osak の方が適切に修正されてるので、osak ブランチをマージしたいと思ってますが toshi_a 初音 さんどうでしょうか。

toshi_a 初音 さんが6年以上前に更新

  • ステータスパッチ適用待ち から レビュー待ち に変更

俺もosa_kさんの方法が良いと思うので、developにmergeしました。

Osamu Koga さんが6年以上前に更新

  • ステータスレビュー待ち から 終了 に変更

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