2011-03-09 96 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這樣的東西.... –

相關問題