Forum: Ruby on Rails Cannot use "Application" as a model?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
5f19a61c59692713f86abf93c5cfe9c1?d=identicon&s=25 Ray Krueger (Guest)
on 2008-11-25 13:32
(Received via mailing list)
I tried creating an application that has an "Application" model. This
seems to collide with the "ApplicationController" defined in
application.rb.

For example...
rails appgoboom
cd appgoboom
script/generate scaffold Application name:string
script/console
Loading development environment (Rails 2.2.2)
>> Application.find(:all)
LoadError: Expected /home/rkrueger/source/rails/appgoboom/app/
controllers/application.rb to define Application
  from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/
active_support/dependencies.rb:428:in `load_missing_constant'
  from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/
active_support/dependencies.rb:77:in `const_missing'
  from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/
active_support/dependencies.rb:89:in `const_missing'
  from (irb):1

I get the same error when running the application using script/server:
"Expected /home/rkrueger/source/rails/appgoboom/app/controllers/
application.rb to define Application"

I've been trying to go through the thesaurus in my head to find other
names to use than "Application", but honestly Application is what I
want. Everything else sounds lame...
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-11-25 13:35
(Received via mailing list)
On Nov 25, 12:14 pm, Ray Krueger <raykrue...@gmail.com> wrote:
> I tried creating an application that has an "Application" model. This
> seems to collide with the "ApplicationController" defined in
> application.rb.
>
That's about right. Because there is an application.rb in an
appropriate place in the search path Rails may find that file and try
to load it first. While you might be able to fiddle with those so that
rails found your model class first that would then probably screw
things up when Rails is actually looking for ApplicationController.
You might be able to get round this by just explicitly loading your
model rather than relying on the magical loading

Wait for Rails 2.3 where ApplicationController will live in
application_controller.rb :-)

Fred
5f19a61c59692713f86abf93c5cfe9c1?d=identicon&s=25 Ray Krueger (Guest)
on 2008-11-25 15:38
(Received via mailing list)
> That's about right. Because there is an application.rb in an
> appropriate place in the search path Rails may find that file and try
> to load it first. While you might be able to fiddle with those so that
> rails found your model class first that would then probably screw
> things up when Rails is actually looking for ApplicationController.
> You might be able to get round this by just explicitly loading your
> model rather than relying on the magical loading

Lame! :P

Thanks for the tip Frederick, would you be able to clue me into where
I can read about doing that?
I'm too new at this to know how to do anything other than "magical
loading" heh.

>
> Wait for Rails 2.3 where ApplicationController will live in
> application_controller.rb :-)

Yeah thought about that, I wasn't sure if Edge was too shaky right now
to try and jump on that though.
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-11-25 15:41
(Received via mailing list)
On 25 Nov 2008, at 14:37, Ray Krueger wrote:

> Lame! :P
>
> Thanks for the tip Frederick, would you be able to clue me into where
> I can read about doing that?
> I'm too new at this to know how to do anything other than "magical
> loading" heh.

Put your model class in something called not application.rb.
Then use require_dependency to require that file. Where exactly you do
that is up for some debate but you could start with the bottom of
application.rb (as in where ApplicationController sits)

Fred
This topic is locked and can not be replied to.