循環require

% grep "" *rb
a.rb:require 'b'
a.rb:class A; include B; end
a.rb:
b.rb:require 'c'
b.rb:module B; end
b.rb:
c.rb:require 'a'
c.rb:A

いつのまにかc.rbでAクラスを参照するようになっててハマった。なんでハマるかっていうとRailsのログが謎い

NameError: uninitialized constant A
        from org/jruby/RubyModule.java:2569:in `const_missing'
        from ./c.rb:2:in `(root)'
        from org/jruby/RubyKernel.java:1038:in `require'
        from ./c.rb:29:in `require'
        from ./b.rb:1:in `(root)'
        from org/jruby/RubyKernel.java:1038:in `require'
        from ./b.rb:29:in `require'
        from ./a.rb:1:in `(root)'
        from org/jruby/RubyKernel.java:1038:in `require'
        from ./a.rb:29:in `require'
        from (irb):1:in `evaluate'
        from org/jruby/RubyKernel.java:1088:in `eval'
        from /usr/share/jruby-1.6.2/lib/ruby/1.8/irb.rb:158:in `eval_input'
        from /usr/share/jruby-1.6.2/lib/ruby/1.8/irb.rb:271:in `signal_status'
        from /usr/share/jruby-1.6.2/lib/ruby/1.8/irb.rb:155:in `eval_input'
        from org/jruby/RubyKernel.java:1419:in `loop'
        from org/jruby/RubyKernel.java:1191:in `catch'
        from /usr/share/jruby-1.6.2/lib/ruby/1.8/irb.rb:154:in `eval_input'
        from /usr/share/jruby-1.6.2/lib/ruby/1.8/irb.rb:71:in `start'
        from org/jruby/RubyKernel.java:1191:in `catch'
        from /usr/share/jruby-1.6.2/lib/ruby/1.8/irb.rb:70:in `start'
        from /usr/share/jruby-1.6.2/bin/irb:13:in `(root)'>> 

一体c.rb:29が何を指してるのかわからん。要するにただrequireが循環してるのが問題っぽい
requireとかRailsの中身とかわかっとかないと