読者です 読者をやめる 読者になる 読者になる

Rubyが分からない

(追記:分かった)
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の仕様があるのかもしれない(人のせいにしたがる奴)。