Re: rails memcached dalli Marshalling error for key

325 views
Skip to first unread message

Frederick Cheung

unread,
Dec 25, 2012, 7:19:26 AM12/25/12
to Ruby on Rails: Talk


On Dec 25, 11:09 am, Pavlo Shabat <pavlo.sha...@gmail.com> wrote:
> I have such action in my controller:
>
> def my
>
>       @user = Ads::User.find current_user.id
>
>       @postings = Rails.cache.fetch("@user.postings.includes(:category)") do
>
>         @postings = @user.postings.includes(:category)
>
>       end
>
> end
>
> I'm trying to cache @postings and get such error:
>

This would try and cache the activerecord::relation object rather the
actual query results.
You need to force execution of the query, ie

Rails.cache.fetch("@user.postings.includes(:category)") do
@user.postings.includes(:category).to_a
end

Fred


> Marshalling error for key '...@user.postings.includes(:category)': can't dump
> anonymous class #<Module:0x000000048f9040>
>
> You are trying to cache a Ruby object which cannot be serialized to
> memcached.
>
> If I try to cache @postings without includes there are no errors. Can't
> figure out what is the problem

Jordon Bedwell

unread,
Dec 25, 2012, 11:20:36 AM12/25/12
to rubyonra...@googlegroups.com
On Tue, Dec 25, 2012 at 5:09 AM, Pavlo Shabat <pavlo....@gmail.com> wrote:
> You are trying to cache a Ruby object which cannot be serialized to
> memcached.

What is "includes" and what does it return? It should be a String,
Hash ({}), Array ([]), Fixnum (1), Range (1..2) or Float (1.0) for
Dalli to not bitch about Marshaling. Otherwise you have to build your
own Marshals for the object which might or might not be worth it.

Dheeraj Kumar

unread,
Dec 25, 2012, 11:23:04 AM12/25/12
to rubyonra...@googlegroups.com
includes performs a join, and returns a ActiveRecord::Relation object. Just call .to_a like Frederick Cheung says, and Dalli will be happy :)

-- 
Dheeraj Kumar

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.

Reply all
Reply to author
Forward
0 new messages