0

大規模な Rails プロジェクトで素晴らしい cache-money gem を使用しています。これらの例外が頻繁に発生します

MemCache::MemCacheError: 実行期限が切れました"

韻も理由もないようです。これは正確には何を意味し、どのように修正するのですか?

編集:

代表的なスタック トレースを次に示します。

lib/authenticated_system.rb:100:in `login_from_session'
lib/authenticated_system.rb:12:in `current_user'
lib/authenticated_system.rb:6:in `logged_in?'
lib/authenticated_system.rb:35:in `authorized?'
lib/authenticated_system.rb:53:in `login_required'

問題の行は RESTful_Authentication からのものです。

self.current_user = User.find(session[:user_id]) if session[:user_id]
4

2 に答える 2

1

マイケル・サイモンズが彼のブログ投稿で私の質問に答えたと思います。本質的に、これはPassenger と Memcached の間に存在する既知の問題です。

マイケルの修正は次のとおりです。

# environment.rb
begin
   PhusionPassenger.on_event(:starting_worker_process) do |forked|
     if forked
       # We're in smart spawning mode, so...
       # Close duplicated memcached connections - they will open themselves
       CACHE.reset
     end
   end
# In case you're not running under Passenger (i.e. devmode with mongrel)
rescue NameError => error
end
于 2009-03-25T17:33:56.890 に答える
0

Rails のデフォルトの memcache クライアントは、何らかの理由で停止して再起動した場合、自動的に memcache デーモンに再接続しようとしないとチームメイトから聞いたことがありますが、私自身は確認していません。Fiveruns memcache-clientライブラリは、この問題を修正します。

于 2009-03-14T18:59:48.103 に答える