Hi, I am getting a method_missing error when I run my application in the production environment unless I set config.cache_classes = false in config/environments/production.rb. This happens in Rails 2.2.2 but not in Rails 2.1.0. The method that is missing is one I used to have before I edited by hand the migration that creates the table associated with the object (I know you are discouraged to do this, but I had started with a very simple model and thought it would be cleaner to have the bulk of the data defined in the first migration). I wonder if this has anything to do with the issue. To be more specific, I changed this def self.up create_table :clients do |t| t.string :name, :null=>false t.text :office_address t.text :home_address t.timestamps end add_index(:clients, :name, :unique=>true) end into def self.up create_table :clients do |t| t.string :last_name, :null=>false t.string :first_name, :null=>false t.text :office_address t.text :home_address <bunch of other fields> t.timestamps end add_index(:clients, :last_name, :unique=>true) end I then ran "rake db:migrate VERSION=0" and then "rake db:migrate" All worked fine in both development and production environments in Rails 2.1.0, but broke in Rails 2.2.2/production with the message "undefined method `name'' for #<Client:0xb72d361c>" From what I can tell, with the object cache enabled, Rails thinks that the Client object still has a method called name (which it used to have). I wonder how persistent is the object cache (I''d imagine not across server restarts) or if the source of this problem is elsewhere. Any help will be appreciated, Luis --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Mar 5, 4:24 am, luis <luistav...-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote:> > All worked fine in both development and production environments in > Rails 2.1.0, but broke in Rails 2.2.2/production with the message > "undefined method `name'' for #<Client:0xb72d361c>"When does this error occur - what''s the stack trace ? Fred> > From what I can tell, with the object cache enabled, Rails thinks that > the Client object still has a method called name (which it used to > have). I wonder how persistent is the object cache (I''d imagine not > across server restarts) or if the source of this problem is elsewhere. > > Any help will be appreciated, > > Luis--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
This happens when trying to save the Client object, here is the stack trace /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/attribute_methods.rb:260:in `method_missing'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/validations.rb:398:in `send'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/validations.rb:398:in `validates_each'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/validations.rb:397:in `each'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/validations.rb:397:in `validates_each'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activesupport-2.2.2/lib/active_support/callbacks.rb:182:in `call'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activesupport-2.2.2/lib/active_support/callbacks.rb:182:in `evaluate_method'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activesupport-2.2.2/lib/active_support/callbacks.rb:166:in `call'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activesupport-2.2.2/lib/active_support/callbacks.rb:90:in `run'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activesupport-2.2.2/lib/active_support/callbacks.rb:90:in `each'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activesupport-2.2.2/lib/active_support/callbacks.rb:90:in `send'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activesupport-2.2.2/lib/active_support/callbacks.rb:90:in `run'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activesupport-2.2.2/lib/active_support/callbacks.rb:277:in `run_callbacks'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/validations.rb:1029:in `valid_without_callbacks?'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/callbacks.rb:286:in `valid?'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/validations.rb:1008:in `save_without_dirty'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/dirty.rb:79:in `save_without_transactions'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/transactions.rb:179:in `send'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/transactions.rb:179:in `with_transaction_returning_status'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/connection_adapters/ postgresql_adapter.rb:550:in `transaction'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/transactions.rb:129:in `transaction'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/transactions.rb:138:in `transaction'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/transactions.rb:178:in `with_transaction_returning_status'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/transactions.rb:146:in `save'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/transactions.rb:158:in `rollback_active_record_state!'' /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ activerecord-2.2.2/lib/active_record/transactions.rb:146:in `save'' app/models/client.rb:12:in `save'' app/controllers/clients_controller.rb:14:in `create'' On Mar 5, 3:33 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On Mar 5, 4:24 am, luis <luistav...-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote: > > > > > All worked fine in both development and production environments in > > Rails 2.1.0, but broke in Rails 2.2.2/production with the message > > "undefined method `name'' for #<Client:0xb72d361c>" > > When does this error occur - what''s the stack trace ? > > Fred > > > > > From what I can tell, with the object cache enabled, Rails thinks that > > the Client object still has a method called name (which it used to > > have). I wonder how persistent is the object cache (I''d imagine not > > across server restarts) or if the source of this problem is elsewhere. > > > Any help will be appreciated, > > > Luis--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 5 Mar 2009, at 14:37, luis wrote:> > This happens when trying to save the Client object, here is the stack > traceLooks like you still have a validation against name. Fred> > > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/attribute_methods.rb:260:in > `method_missing'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/validations.rb:398:in `send'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/validations.rb:398:in > `validates_each'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/validations.rb:397:in `each'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/validations.rb:397:in > `validates_each'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activesupport-2.2.2/lib/active_support/callbacks.rb:182:in `call'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activesupport-2.2.2/lib/active_support/callbacks.rb:182:in > `evaluate_method'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activesupport-2.2.2/lib/active_support/callbacks.rb:166:in `call'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activesupport-2.2.2/lib/active_support/callbacks.rb:90:in `run'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activesupport-2.2.2/lib/active_support/callbacks.rb:90:in `each'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activesupport-2.2.2/lib/active_support/callbacks.rb:90:in `send'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activesupport-2.2.2/lib/active_support/callbacks.rb:90:in `run'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activesupport-2.2.2/lib/active_support/callbacks.rb:277:in > `run_callbacks'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/validations.rb:1029:in > `valid_without_callbacks?'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/callbacks.rb:286:in `valid?'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/validations.rb:1008:in > `save_without_dirty'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/dirty.rb:79:in > `save_without_transactions'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/transactions.rb:179:in `send'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/transactions.rb:179:in > `with_transaction_returning_status'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/connection_adapters/ > postgresql_adapter.rb:550:in `transaction'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/transactions.rb:129:in > `transaction'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/transactions.rb:138:in > `transaction'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/transactions.rb:178:in > `with_transaction_returning_status'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/transactions.rb:146:in `save'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/transactions.rb:158:in > `rollback_active_record_state!'' > /usr/local/encap/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/ > activerecord-2.2.2/lib/active_record/transactions.rb:146:in `save'' > app/models/client.rb:12:in `save'' > app/controllers/clients_controller.rb:14:in `create'' > > On Mar 5, 3:33 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: >> On Mar 5, 4:24 am, luis <luistav...-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote: >> >> >> >>> All worked fine in both development and production environments in >>> Rails 2.1.0, but broke in Rails 2.2.2/production with the message >>> "undefined method `name'' for #<Client:0xb72d361c>" >> >> When does this error occur - what''s the stack trace ? >> >> Fred >> >> >> >>> From what I can tell, with the object cache enabled, Rails thinks >>> that >>> the Client object still has a method called name (which it used to >>> have). I wonder how persistent is the object cache (I''d imagine not >>> across server restarts) or if the source of this problem is >>> elsewhere. >> >>> Any help will be appreciated, >> >>> Luis > >--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Mar 5, 9:00 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 5 Mar 2009, at 14:37, luis wrote: > > > > > This happens when trying to save the Client object, here is the stack > > trace > > Looks like you still have a validation against name. > > Fred >That seems to be the case, but why? Why does it happen only with cache_classes = true? It seems to me that the cache is not being flushed... thanks, Luis --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Thu, Mar 5, 2009 at 9:28 PM, luis <luistavera-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote:> > > > On Mar 5, 9:00 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: > > On 5 Mar 2009, at 14:37, luis wrote: > > > > > > > > > This happens when trying to save the Client object, here is the stack > > > trace > > > > Looks like you still have a validation against name. > > > > Fred > > > > That seems to be the case, but why? Why does it happen only with > cache_classes = true? It seems to me that the cache is not being > flushed... >The problem could be that rails caches the model schema when the server starts. Try to do a Model.reset_column_information where Model is the name of your model. -- Shiv> >-- Dick Cavett - "If your parents never had children, chances are... neither will you." --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 5 Mar 2009, at 15:58, luis wrote:> > > > On Mar 5, 9:00 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > wrote: >> On 5 Mar 2009, at 14:37, luis wrote: >> >> >> >>> This happens when trying to save the Client object, here is the >>> stack >>> trace >> >> Looks like you still have a validation against name. >> >> Fred >> > > That seems to be the case, but why? Why does it happen only with > cache_classes = true? It seems to me that the cache is not being > flushed...Without seeing any code it''s hard to say. One extra thing that happens in 2.2 when cache_classes is true is that models are loaded when the server starts up (previously they were loaded on demand). This can mean that faulty code that was never loaded before is now loaded. Fred> > > thanks, > > Luis > >--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Well, it turns out that I had left in app/models a renamed version of the previous Client model file (client--previous.rb) which was throwing things off. After I removed the file all worked as expected. Thanks all for your help, and sorry for the red herring. Luis On Mar 5, 10:02 am, Shiv N Gautam <s.n.gau...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On Thu, Mar 5, 2009 at 9:28 PM, luis <luistav...-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote: > > > On Mar 5, 9:00 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > wrote: > > > On 5 Mar 2009, at 14:37, luis wrote: > > > > > This happens when trying to save the Client object, here is the stack > > > > trace > > > > Looks like you still have a validation against name. > > > > Fred > > > That seems to be the case, but why? Why does it happen only with > > cache_classes = true? It seems to me that the cache is not being > > flushed... > > The problem could be that rails caches the model schema when the server > starts. > Try to do a Model.reset_column_information where Model is the name of your > model. > > -- > Shiv > > > > -- > > Dick Cavett - "If your parents never had children, chances are... neither > will you."--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---