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?