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.