2011-03-09 90 views
0

我基本上试图在我的Rails 3应用中缓存tweets,所以我不必在每次刷新页面时都获取它们。我有两个类变量:如何在视图中访问控制器的类变量

@@tweet_time = Time.now 
@@tweets = Twitter.user_timeline(TWEET_ACCOUNT)[0,NUMBER_OF_TWEETS] 

那些在我的控制器。

在控制器中,我查看是否

@@tweet_time < 1.hour.ago 

,如果让我重新@@鸣叫和@@ tweet_time。

但是,当我尝试在视图中通过@@ tweets循环时,它表示@@ tweets是一个未初始化的类变量。我想这是因为从技术上讲,它是从ActionView而不是ActionController调用的。

如何在视图中访问@@ tweets?

PS如果我正在完全倒退,请随时批评,并希望为我提供更好的方法。我真的很感激你可以提供的任何反馈。

+0

rails是无状态的,你如何缓存类变量? – fl00r

+1

这是memcache的用途。 –

+0

Jakub,你是对的。你能帮我解答吗?为了使用Memcache,我*是否将它设置为Rails缓存机制,还是可以在该结构之外使用它? – AKWF

回答

0

我正在使用“dalli”宝石来做到这一点。从我所知道的情况来看,它是一种使用MemCache的快速方法。

3

我不认为在控制器中的类变量将持续跨请求。这不是控制器的责任。

如果您不想使用像Redis这样的内存数据库来缓存您的tweets,可以尝试将您的类变量移动到可以从控制器中查询的模型。

+0

你说得对。请求中都不存在类变量或任何其他变量。绝对需要像Redis或Memcached这样的东西.... –

相关问题