2010-11-23 2 views
0

레일 컨트롤러가 범위를 잘못 해석하기 때문에 클래스 정의를 찾을 수 없다는 문제가 있습니다.레일 컨트롤러의 클래스 범위 문제 해결

특히, 내와 ApplicationController에 :

require 'memcache' 
$memcache = MemCache.new("localhost:11211") 

이 작동하지 않습니다. 오류가 발생합니다 :

ActionController::RoutingError (uninitialized constant ApplicationController::MemCache): 

레일스는 MemCache 클래스가 어떻게 든 ApplicationController의 범위에 있어야한다고 생각합니다.

누구나 이유가 무엇입니까?

또한이 코드는 상속됩니다. Memcache 연결을 이니셜 라이저에 넣는 것이 더 나은 방법입니까? 그렇다면 컨트롤러에서 어떻게 연결합니까?

답변

2

memcache_client gem을 사용하면 memcache 주위에 레일 친화적 인 래퍼를 넣는 것이 좋습니다. 그런 다음 캐시라는 해시로 memcache 저장소에 액세스 할 수 있으며 모든 연결 항목에 대해 걱정하지 않아도됩니다. 이 '크루즈'라는 무언가로 대체 된 것처럼 보이는이 페이지에서 찾고 있지만

https://github.com/mperham/memcache-client

. 그거 줘. MemCache이 존재하지 않기 때문이다

+0

감사를 사용해야합니다. 나는 그것을 들여다 보았고, 그것은 확실히 옵션처럼 보인다. 하지만 지금은 응용 프로그램에서 모든 Memcache 액세스를 다시하고 싶지 않아, 난 그냥이 일을하고 싶습니다. 잠시 동안 작동하지만 내 컴퓨터에 로컬 설치를 수행 할 때 그렇게하지 않습니다. –

0

, 당신은이 메모에 대한 Memcached

$memcached = Memcached.new 'localhost:11211' 
+0

이 작업은 한동안 진행되었습니다. 게다가'콘솔 '에서 실행할 수 있습니다. –

+0

@Kevin Bedell - 무슨 보석을 쓰고 있니? 무슨 레일 버전? – Sinetris