致命的 #525
完了Debian Squeezeでmikutterが起動しない
0%
説明
おはようございます。
Debian Squeeze(ruby 1.9.2p0)にてmikutterを起動すると、プラグイン周り(openimg、search、activity他多数)で例外(Name Error)が発生してmikutterが起動しません。
Plugin.create内でGtk::で始まるネームスペースを指定した際に、Plugin::Gtk::と解釈されてしまうため、クラスを見つけられないようです。
(Xebuntuの1.9.3p0やSqueeze上で野良コンパイルした1.9.3p183では発生しないので、1.9.3で何かが起きたみたいです。)
回避策は、::Gtk::の様に絶対パス?指定することです。
ひと通り上記の回避策を行ったpatchを添付します。
(単純置換→動作確認の流れを取ったので、コメント部分やPlugin.create外のGtk::も書き変わってます。)
触り切れていない機能もある気がするので、Debian使いの方は一度使って頂きたいです。
ファイル
toshi_a 初音 さんが約12年前に更新
- 担当者 を toshi_a 初音 にセット
まだよく調べていませんが、特定の環境でトップレベルのGtkモジュール以下の定数が見つけられないようです。rubyのバージョンではないかと思いますが、今のところ意味のある報告をもらえた事例はいずれもDebian squeezeでした。こちらでも環境を作って調査してみます。
起動しない環境では、今回から、Plugin::Gtkというモジュールが追加されたので、そちらを参照していると思われます。修正していただいたとおり、トップレベルのGtkモジュールを参照するなら左辺のない::演算子をつけるべきだと思います。これは、通常のプラグインはトップレベルのGtkを基本的に使わないはずだからです。Plugin::GUIにconst_missingを定義する方法も使えそうですが、ちょっと対応は考えます。
toshi_a 初音 さんが約12年前に更新
- ステータス を パッチ適用待ち から レビュー待ち に変更
こちらでもDebian squeezeをVirtualBox上にインストールして再現することが出来ました。
もらったパッチで問題ないことは確認したのですが、スコープがPluginでなければトップレベルから指定する必要はないので、そのまま取り込まずに一つひとつ確認して必要なところだけを書き換えました。いくつかそれに付随してパッチにはない変更もしてますが、基本的には削っただけです。
こちらでも充分確認したつもりですが、念のためそちらでも動作チェックをお願いします。
Satoshi Okuno さんが約12年前に更新
- ステータス を レビュー待ち から 解決 に変更
お疲れ様でした。
思いつく分一通りの機能を動作させて、取り敢えず問題ないようです。
しばらく使い続けてみます。