When you use subfolders - you have to use namespaces. And Rails(even 2.3.5), especially ActiveRecord, have a whole bunch of bugs with namespaces. I've fixed a couple, but there was more and more and more. I've jsut got rid of namespaces and subfolders then.
On Thu, May 6, 2010 at 5:58 PM, Andy Joel <[email protected]> wrote: > I have my models and controllers set up in sub-folders, so, for example, > sample.rb is in app/models/sample_log, and samples_controller.rb is in > app/controllers/sample_log. The controllers are defined to be within a > namespace just though the class name, eg like this: > > class SampleLog::SamplesController < SampleLog::SuperController > > However, the models are not. > > class Sample < ActiveRecord::Base > > Instead, I have added the relevant directories to config.load_paths in > environment.rb. Unit testing, functional testing and integration testing > all pass without a problem, and I can use the Rails console normally > too. > > However, trying to access the web pages leads to some problems... > > Putting a print statement in sample.rb, I can see that it is only when I > try to access a page with a sample on it that sample.rb gets loaded, > which makes perfect sense. However, it then throws an error: > > Expected R:/samplelog/app/models/sample_log/sample.rb to define > SampleLog::Sample > > This seems to be thrown after the file has been completely loaded, I am > guessing another model is loaded (as the page also uses a subclass of > Sample), and this references the Sample class, and Rails objects because > it cannot find the class. > > Even though it has just loaded it... > > I have experimented with forcing a load or require for each file without > success. Using load generates a "superclass mismatch for class > BatchSample" (BatchSample being the subclass of Sample). Using require > leads to the original problem, albeit on reloading the page or going to > another page in the section (the first show is good, however). > Curiously, even when using require, Rails still loads the file twice for > each page view. It seems not to realise the file is already loaded. > > I have also tried adding the path to eager_load_paths, in the hope that > the models would get loaded at boot up, but that made no difference (and > the files were not loaded any earlier). > > I wonder if anyone can shed any light, or give any suggestions. > > I appreciate using a SampleLog namespace is one option, however, > experiments in that direction turned up other problems. > > Using Rails 2.2.2 with JRuby 1.5 by the way. > -- > Posted via http://www.ruby-forum.com/. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" 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-talk?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" 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-talk?hl=en.

