循環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の中身とかわかっとかないと