2

memcached を使用すると主張する既存の Rails プロジェクトに参加しました。テストとして、オブジェクトをキャッシュに入れてみました

Rails.cache.write("gateway", @gateway)

次に、それを取得します

 Rails.cache.read("gateway", @gateway)

ただし、これは nil を返しますが、これはなぜですか?

これは開発環境で、memcached がインストールされて実行されており、エントリ config.cache_classes = true および config.action_controller.perform_caching = true によって有効にする必要があります。

4

1 に答える 1

3

Railsプロジェクトはさまざまな方法でmemcachedを使用しますが、Rails 3プロジェクトで作業している場合は、 memcachedセッションストアを使用する「dalli」gemを使用している可能性があります。したがって、キャッシュを使用すると、代わりにこのようなことを行うことができ、その逆は、session[:gateway] = @gateway@gateway = session[:gateway]memcache.set('gateway',@gateway')memcache.get('gateway')

構成コードを確認すると便利です。/config/initializers/session_store.rb次のようなものを確認してくださいRails.application.config.session_store :dalli_store ............

また、コメントで述べたように、開発中の場合はキャッシュがオフになっている可能性があります。config/development.rb次のファイルを 確認してください。config.action_controller.perform_caching = false

もう1つは、Linux用のOSにmemcachedをインストールする必要があることです。これはsudo apt-get install memcached、次の方法で確認できますps aux | grep memcache(これにより、grepとmemcacheの2つのプロセスが表示されます)

アップデート

Railsキャッシングガイドも確認する必要があります

于 2013-01-14T21:26:46.470 に答える