On Apr 27, 11:49 pm, Commander Johnson <commanderjohn...@gmail.com>
wrote:
> class PostOfTheDay
>   private
>
>   def self.current_day
>     DateTime.now.utc.to_date
>   end
>
>   @@current_post = nil
>   @@current_day = current_day
>
>   def self.get_random_post
>     posts = Post.all
>
>     posts[rand(posts.size)]
>   end
>
>   public
>
>   def self.fetch
>     if @@current_post.nil? || @@current_day != current_day
>       @@current_post = get_random_post
>       @@current_day = current_day
>     end
>
>     return @@current_post
>   end
> end
>
> I would expect the class variables @@current_post and @@current_day to never
> change when not accessed. However, in development mode, on each request, a
> different Post is returned because either the Klazz has been garbage
> collected (?) or the initializers
>
In development mode classes are cleaned out and loaded from scratch on
each request (this is why you don't need to restart the server to see
changes. In production this isn't true.

Fred

> @@current_post = nil
> @@current_day = current_day
>
> have been re-run. But isn't it required to initialize a class variable
> before usage?
>
> Why is this the default behaviour? Any pointers on a different approach?
--~--~---------~--~----~------------~-------~--~----~
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@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to