Dependencies implement autoloading as const_missing override. Sometimes, this creates interesting (to debug) problems. For example:
1. I define module Accounting, in app/models/accounting.rb, which contains Accounting::Transaction class in app/models/accounting/transactions.rb 2. I write a spec for Accounting::Transaction, which with "module Accounting". 3. Somewhere in that (or another) spec I call Accounting.foo Result: if the stars are positioned just so, "module Accounting" may be already defined by executing the spec for Accounting::Transaction, therefore app/models/accounting.rb is never loaded. And them I am staring at some weird error message that talks of Accounting.foo being not defined (what?! it is defined - I can see that in app/models/accounting.rb!). Depending on the circumstances, the actual error can be even more cryptic. I think, many have gone down this road often enough to feel irritated :) On the other hand, calling Kernel.autoload 'Accounting', 'accounting.rb' would load accounting.rb on first mention of Accounting, whether as a constant reference or opened by "module Accounting" statement. I would like to experiment with calling Kernel.autoload on every .rb file in Dependencies.load_paths during init (either instead of, or on top of const_missing override). Has anybody tried that already? Is there are any reason why this wouldn't work? -- Alexey Verkhovsky CruiseControl.rb [http://cruisecontrolrb.thoughtworks.com] RubyWorks [http://rubyworks.thoughtworks.com] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
