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

@@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