我试图在Jbuilder中使用片段缓存,因为其中一个视图需要相当多的时间来呈现(只有视图呈现可以采用2500ms+ )
请注意,这在其他调用中确实有效,但这一次似乎无法工作,我也不知道为什么。第二:这在我的本地机器上工作,但是在heroku失败了。
以下是heroku中的错误:
2013-09-18T21:05:46.425034+00:00 app[web.1]: Rendered api/shop/products/_product.json.jbuilder (3.2ms)
2013-09-18T21:05:46.606141+00:00 app[web.1]: Marshalling error for key 'shop/products/344-20130914175034924266000/shop/products/346-20130914175035358419000/shop/products/345-20130914175035153905000/en/b5262bbbd44fb696ffdece67a464e218': no _dump_data is defined for class Proc
2013-09-18T21:05:46.606141+00:00 app[web.1]: You are trying to cache a Ruby object which cannot be serialized to memcached.
2013-09-18T21:05:46.606141+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/dalli-2.6.4/lib/dalli/server.rb:397:in `dump'
2013-09-18T21:05:46.606141+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/dalli-2.6.4/lib/dalli/server.rb:397:in `serialize'
2013-09-18T21:05:46.606141+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/dalli-2.6.4/lib/dalli/server.rb:269:in `set'
2013-09-18T21:05:46.606141+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/dalli-2.6.4/lib/dalli/server.rb:60:in `request'
2013-09-18T21:05:46.606141+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/dalli-2.6.4/lib/dalli/options.rb:18:in `block in request'下面是我尝试使用片段缓存的简单部分:
json.cache! [category[:products], I18n.locale] do
json.products category[:products] do |product|
json.partial! product
end
end产品部分:
json.(
product,
:id,
:name,
:picture,
:price,
:subcategory
)
json.product_options product.product_options do |option|
json.(
option,
:id,
:name,
:option_type
)
json.option_items option.product_option_items do |item|
json.(
item,
:id,
:name
)
end
end
json.partial! 'api/app_styles/app_style', app_style: product.app_style发布于 2013-11-11 14:29:36
所以在深入挖掘之后,我终于发现这是一个问题
结合这三件事,+使用回形针对象而不是url (即json.node_name、my_model.paperclip_attached_file而不是json.node_name my_model.paperclip_attached_file.url)使它失败。
现在看来,…工作得很公平
所以马修说这张照片是有问题的,但只有rails_stdout_gem +回形针S3配置是对的。
发布于 2013-11-08 17:18:53
错误:您正在尝试缓存一个不能序列化到memcached的Ruby对象
这就是您应该查看的地方,它试图用proc封送对象,proc只能在运行时进行计算,不能序列化。
如果我不得不猜测它将是您的图片属性,可能是一个动态方法,也许会编写一个不使用proc的新方法picture_url,您可以通过逐个删除来确认哪个属性会导致问题。
https://stackoverflow.com/questions/18882534
复制相似问题