Forum: Ruby on Rails when to set a class attribute variable during boot

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.
Daniel C. (Guest)
on 2008-12-31 02:31
(Received via mailing list)
I have an ActiveRecord model with a cattr_accessor. The class
attribute is set up like this:

class MyModel < ActiveRecord::Base
  cattr_accessor :my_attribute
end

Because I need to give #my_attribute environment-specific values, I
try to set this attribute in environments/development.rb like so:

MyModel.my_attribute = 3

But this leads to odd and erratic behavior when #my_attribute is
called from a controller. Sometimes MyModel.my_attribute returns 3,
but sometimes it returns nil.

Any suggestions?
Mark Reginald J. (Guest)
on 2008-12-31 03:02
(Received via mailing list)
Daniel C. wrote:
> MyModel.my_attribute = 3
>
> But this leads to odd and erratic behavior when #my_attribute is
> called from a controller. Sometimes MyModel.my_attribute returns 3,
> but sometimes it returns nil.

In development mode, models get reloaded on every request,
so your variable won't persist. You'll have to set it in
in a persistent class or module, in the global context,
or in the database or session.

--
Rails Wheels - Find Plugins, List & Sell Plugins -
http://railswheels.com
This topic is locked and can not be replied to.