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.

Reply via email to