Simen Brekken
2005-Jul-26  08:57 UTC
FCGI production mode association const_missing errors.
I''m having weird association problems with FCGI in production mode,
I''ve
two models:
   class Header < ActiveRecord::Base
     has_one
       :image,
       :class_name => "HeaderImage",
       :foreign_key => "parent_id",
       :dependent => true
   end
   class Banner < ActiveRecord::Base
     has_one
       :image,
       :class_name => "BannerImage",
       :foreign_key => "parent_id",
       :dependent => true
   end
... both the BannerImage and HeaderImage are descendants of Image which 
again is a descendant of Attachment.
However, in development mode calling @header.image from my inside my 
show action template works perfectly. Today I tried deploying the 
application into production on a lighttpd/fcgi server and this started 
showing up (see error message in bottom of mail). Running the 
application in production with Webrick works. Switching dependancy from 
require to load does not fix it, so does disabling caching.
What puzzles me is that the Banner and Header tables and models does not 
differ in any way other than an extra VARCHAR field. The BannerImage and 
HeaderImage models are identical except for an after_save.
This error also happens with another model Article which has_one 
ArticleImage implemented in the same way.
-- ERROR LOG --
   ActionView::TemplateError 
(/usr/lib/ruby/gems/1.8/gems/activesupport-1.1.1/lib/active_support/dependencies.rb:186:in
`const_missing'': uninitialized constant HeaderImage) on line #15 of 
/admin/headers/show.rhtml:
   12:   <div class="form">
   13:     <label>Name:</label> <span
class="static"><%= @header.name
%></span><br/>
   14:     <label>Header:</label> <span
class="static"><%=
@header.category.name %></span><br/>
   15:     <% if @header.image %>
   16:     <label>Image:</label>
   17:     <%= image_tag @header.image.uri %>
   18:     <% end %>
 
/gems/activerecord-1.11.1/lib/active_record/associations/association_proxy.rb:11:in
`initialize''
       (eval):1:in `initialize''
 
/gems/activerecord-1.11.1/lib/active_record/associations/has_one_association.rb:5:in
`eval''
 
/gems/activerecord-1.11.1/lib/active_record/associations/association_proxy.rb:11:in
`initialize''
 
/gems/activerecord-1.11.1/lib/active_record/associations/has_one_association.rb:5:in
`initialize''
 
/gems/activerecord-1.11.1/lib/active_record/associations.rb:607:in
`new''
 
/gems/activerecord-1.11.1/lib/active_record/associations.rb:607:in
`image''
 
/gems/activerecord-1.11.1/lib/active_record/associations.rb:603:in
`image''
       (erb):15:in `evaluate_locals''
       /gems/actionpack-1.9.1/lib/action_view/base.rb:272:in 
`evaluate_locals''
       /gems/actionpack-1.9.1/lib/action_view/base.rb:283:in
`rhtml_render''
       /gems/actionpack-1.9.1/lib/action_view/base.rb:208:in `send''
       /gems/actionpack-1.9.1/lib/action_view/base.rb:208:in 
`render_template''
       /gems/actionpack-1.9.1/lib/action_view/base.rb:173:in
`render_file''
       /gems/actionpack-1.9.1/lib/action_controller/base.rb:588:in 
`render_with_no_layout''
       /gems/actionpack-1.9.1/lib/action_controller/layout.rb:216:in 
`render_without_benchmark''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`render''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`measure''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`render''
       /gems/actionpack-1.9.1/lib/action_controller/base.rb:591:in 
`render_with_no_layout''
       /gems/actionpack-1.9.1/lib/action_controller/layout.rb:216:in 
`render_without_benchmark''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`render''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`measure''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`render''
       /gems/actionpack-1.9.1/lib/action_controller/base.rb:604:in 
`render_with_no_layout''
       /gems/actionpack-1.9.1/lib/action_controller/layout.rb:216:in 
`render_without_benchmark''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`render''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`measure''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`render''
       /gems/actionpack-1.9.1/lib/action_controller/base.rb:627:in 
`render_with_no_layout''
       /gems/actionpack-1.9.1/lib/action_controller/layout.rb:210:in 
`render_without_benchmark''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`render''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`measure''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:25:in
`render''
       /gems/actionpack-1.9.1/lib/action_controller/base.rb:757:in 
`perform_action_without_filters''
       /gems/actionpack-1.9.1/lib/action_controller/filters.rb:295:in 
`perform_action_without_benchmark''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:41:in 
`perform_action_without_rescue''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:41:in
`measure''
 
/gems/actionpack-1.9.1/lib/action_controller/benchmarking.rb:41:in 
`perform_action_without_rescue''
       /gems/actionpack-1.9.1/lib/action_controller/rescue.rb:80:in 
`perform_action''
       /gems/actionpack-1.9.1/lib/action_controller/base.rb:356:in
`send''
       /gems/actionpack-1.9.1/lib/action_controller/base.rb:356:in
`process''
       /gems/rails-0.13.1/lib/dispatcher.rb:32:in `dispatch''
       /gems/rails-0.13.1/lib/fcgi_handler.rb:144:in `process_request''
       /gems/rails-0.13.1/lib/fcgi_handler.rb:64:in `process!''
       /gems/rails-0.13.1/lib/fcgi_handler.rb:55:in `each_cgi''
       /gems/fcgi-0.8.6.1/./fcgi.rb:597:in `each''
       /gems/fcgi-0.8.6.1/./fcgi.rb:597:in `each_cgi''
       /gems/rails-0.13.1/lib/fcgi_handler.rb:55:in `process!''
       /gems/rails-0.13.1/lib/fcgi_handler.rb:21:in `process!''
       /var/www/.../public/dispatch.fcgi:24
-- 
SIMEN BREKKEN / born to synthesize.
Tim Lucas
2005-Jul-26  15:30 UTC
Re: FCGI production mode association const_missing errors.
On 26/07/2005, at 6:57 PM, Simen Brekken wrote:> -- ERROR LOG -- > ActionView::TemplateError > (/usr/lib/ruby/gems/1.8/gems/activesupport-1.1.1/lib/active_support/ > dependencies.rb:186:in `const_missing'': uninitialized constant > HeaderImage) on line #15 of /admin/headers/show.rhtml:Have you added the relevant "model" declarations in the controller class? - tim
Simen Brekken
2005-Jul-26  15:59 UTC
Re: FCGI production mode association const_missing errors.
Yes, both model :banner and model :banner_image with no change in result. As I said it works with Webrick in production mode. SIMEN BREKKEN / born to synthesize. Tim Lucas wrote:> On 26/07/2005, at 6:57 PM, Simen Brekken wrote: > >> -- ERROR LOG -- >> ActionView::TemplateError >> (/usr/lib/ruby/gems/1.8/gems/activesupport-1.1.1/lib/active_support/ >> dependencies.rb:186:in `const_missing'': uninitialized constant >> HeaderImage) on line #15 of /admin/headers/show.rhtml: > > > Have you added the relevant "model" declarations in the controller class? > > - tim
Simen Brekken
2005-Jul-27  08:33 UTC
Re: FCGI production mode association const_missing errors.
Simen Brekken wrote:> I''m having weird association problems with FCGI in production mode, I''ve > two models:I''ve now tracked the problem down to a require statement in the failing models: require ''RMagick'' class BannerImage < Attachment end Even though there is no name-collision this require statement gives me: ActionView::TemplateError (/usr/lib/ruby/gems/1.8/gems/activesupport-1.1.1/lib/active_support/dependencies.rb:186:in `const_missing'': uninitialized constant BannerImage) on line #16 of /admin/banners/show.rhtml: I have yet to solve the problem since I need RMagick for generating thumbnails and some image effects, so if anyone has a solution to this it would be greatly appriciated. -- Simen Brekken