views:

458

answers:

1

Hi :)

I'm having problems trying to use Memcached in a Rails 3 Application ...

My question is quite simple : How I'm supposed to configure Memcached to make it works with Rails 3 ?

Thanks for your help !

Edit:

It looks like the object isn't correctly deserialized by the Rails.cache.read no matter :raw => true or :raw => false but the deserialization is working if it's done just after the Rails.cache.write

A: 

Ok so,

Complete context :

The serialized object had his Class into a Lib files. The lib files are auto loaded by rails using using the standard naming convention. The Rails.cache.read was the first step of any actions in my application (except the init action which creates the object for the first time). So, i had an error on any other action : undefined method for String. This was because the Rails.cache.read was returning me a String (serialized object) instead of my object instance.

Explanation :

It looks like Marshal doesn't use the Rails system to find Undeclared constants. So, when i was calling Rails.cache.read the Marshal.load was falling and read was returning the String without throwing any error.

The Solution :

I simply added a load of my lib in my application controller. That way, all the constants are already loaded when Rails.cache.read calls Marshal.load Note that i used load instead of require in development mode to avoid to have to restart my server after each modification.

Hopefully this will help someone.

Niklaos