2011-03-09 9 views
0

기본적으로 Rails 3 앱에서 트윗을 캐시하려고하므로 모든 페이지를 새로 고칠 필요가 없습니다. 두 개의 클래스 변수가 있습니다 :보기에서 컨트롤러의 클래스 변수에 액세스하는 방법

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

이들은 제 컨트롤러에 있습니다.

컨트롤러의

제가

확인
@@tweet_time < 1.hour.ago 

경우 등은 트위터와 I @@ @@ tweet_time를 재설정하면.

그러나 뷰에서 @@ 트윗을 반복하려고하면 @@ 트윗은 초기화되지 않은 클래스 변수입니다. 나는 그것이 기술적으로 ActionController 대신에 ActionView로부터 호출되고 있기 때문이라고 생각한다.

뷰에서 @@ 트윗에 액세스하려면 어떻게해야합니까?

추신 : 내가 완전히 뒤에서 이것을하고 있다면, 비평하고 자유롭게 나에게 더 나은 방법을 제공하십시오. 나는 당신이 제안 할 수있는 어떤 의견이라도 정말로 바르게 평가한다.

+0

rails는 stateless입니다. 어떻게 클래스 변수를 캐시합니까? – fl00r

+1

이것은 memcache가 사용하는 것입니다. –

+0

Jakub, 당신 말이 맞아요. 그걸 내게 해줄 수 있니? Memcache를 사용하려면 레일스 캐싱 메커니즘으로 설정해야합니까? 아니면 구조 외부에서 사용할 수 있습니까? – AKWF

답변

0

"dalli"보석을 사용하고 있습니다. 내가 말할 수있는 것에서 MemCache를 사용하는 것이 빠른 방법입니다.

3

컨트롤러의 클래스 변수가 요청간에 지속될 것이라고 생각하지 않습니다. 그것은 컨트롤러의 의무가 아닙니다.

Redis와 같은 메모리 내장 데이터베이스를 사용하여 트윗을 캐시하지 않으려는 경우 클래스 변수를 모델로 옮겨 컨트롤러에서 쿼리 할 수 ​​있습니다.

+0

당신이 옳습니다. 클래스 변수 또는 다른 변수는 요청간에 지속되지 않습니다. 확실히 Redis 또는 Memcached와 같은 것을 필요로합니다 .... –

관련 문제