Rabl缓存错误的参数错误数

时间:2014-04-13 16:16:47

标签: ruby-on-rails caching ruby-on-rails-4 rabl

我正在尝试在我的Ruby 2.1.1 / Rails4.1.0应用程序上为Rabl json模板启用缓存。它是

在我的config / development.rb

config.action_controller.perform_caching = true

在我的app / controllers / phones_controllers.rb

def show
  @phone = Phone.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    # format.json { render json: @phone }
    format.json
  end
end

最后,app / views / phones / show.json.rabl

object @phone
cache @phone
attributes :area, :number, :country, :id, :created_at, :updated_at, :phoneable_id, :phoneable_type

我得到的错误是

  Rendered phones/show.json.rabl (2.6ms)
Completed 500 Internal Server Error in 18ms

ArgumentError - wrong number of arguments (4 for 1):
  rabl (0.9.3) lib/rabl/digestor.rb:8:in `digest'
  rabl (0.9.3) lib/rabl/engine.rb:294:in `cache_key_with_digest'
  rabl (0.9.3) lib/rabl/engine.rb:279:in `cache_results'
  rabl (0.9.3) lib/rabl/engine.rb:39:in `render'
  app/views/phones/show.json.rabl:2:in `_app_views_phones_show_json_rabl__914081420294741706_70254824188740'

我花了一天时间寻找有关使用Rabl进行缓存的更多信息,但结果很少,有人能指出我在哪里看到或有过这方面经验的正确方向吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

看来此错误是Rails 4.1.0中缓存摘要处理更改的结果。 RABL已更新以修复此问题(https://github.com/nesquena/rabl/pull/540),但此修复程序目前仅作为预发布版提供:

gem install rabl --pre