(追記:分かった)
mod_rubyでWebアプリ、みたいなことをやってるんだけどApacheにエラーが。
[error] mod_ruby: error in ruby [error] mod_ruby: /home/kuenishi/public_html/hoge/someclass.rb:8: superclass mismatch for class Diary (TypeError) [error] mod_ruby: from /usr/lib/ruby/1.8/auto-reload.rb:77:in `load' [error] mod_ruby: from /usr/lib/ruby/1.8/auto-reload.rb:77:in `require' [error] mod_ruby: from /home/kuenishi/public_html/hoge/hoge.rb:3 [error] mod_ruby: from /usr/lib/ruby/1.8/auto-reload.rb:77:in `load' [error] mod_ruby: from /usr/lib/ruby/1.8/auto-reload.rb:77:in `require' [error] mod_ruby: from /home/kuenishi/public_html/hoge/index.rb:3 [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `load' [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `handler' [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53
superclass mismatchの意味を調べたら、二重継承の防止が目的らしい。何が怪しいんだろ。ディレクトリ構成
hoge/index.rb /hoge.rb /someclass.rb
が怪しくて、someclass.rbが
require 'hoge' module Hoge class Someclass < HogeHoge ... end end
となってて、hoge.rbが
module Hoge class HogeHoge ... end end
みたいな感じ。コードをHogeHogeで共通化しようとしたんだけど、失敗した。なんだこれ。requireのパスの包含関係と二重継承チェックの辺りが混じってバグってる・・・というのが考えやすい問題だけど、どこかに私の知らないRubyの仕様があるのかもしれない(人のせいにしたがる奴)。