ビューの 1 つがレンダリングにかなりの時間を要しているため、Jbuilder でフラグメント キャッシングを使用しようとしています (ビューのレンダリングのみが 2500 ミリ秒以上かかる場合があります)。
これは他の呼び出しでは機能しますが、これは機能していないようで、その理由がわかりません。2番目:これは私のローカルマシンでは機能しますが、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
- app_style パーシャルはどこでも使用され、他のキャッシュされたビューで機能することに注意してください