Ruby on rails Jbuilder部分缓存未添加到输出

Ruby on rails Jbuilder部分缓存未添加到输出,ruby-on-rails,caching,jbuilder,Ruby On Rails,Caching,Jbuilder,我正在运行一项任务,使用jbuilder为大型json输出构建缓存。缓存正在填充,我可以通过puts将其输出到日志中,但是如何将其添加到主jbuilder模板返回的json文件中 我正在像这样预热我的缓存: task update_cache: :environment do @jobs = Job.where(archived: false).where(assignee_id: 262).each do |job| puts "job: #{job.id}" job.wo

我正在运行一项任务,使用jbuilder为大型json输出构建缓存。缓存正在填充,我可以通过puts将其输出到日志中,但是如何将其添加到主jbuilder模板返回的json文件中

我正在像这样预热我的缓存:

task update_cache: :environment do
  @jobs = Job.where(archived: false).where(assignee_id: 262).each do |job|
    puts "job: #{job.id}"
    job.workspans.each do |workspan|
      json = ApplicationController.new.render_to_string(
        template: 'api/jobs/_workspan',
        locals: { :workspan => workspan }
      )      
      Rails.cache.write("workspan-#{workspan.id}", json)
    end
  end
end
然后像这样取它

json.jobs @jobs do |job|
  json.job  do
    json.(job, *Job.column_names)
    json.circuit { json.(job.circuit, *Circuit.column_names) }
    json.workspans(job.ordered_workspans) do |workspan|                    
      Rails.cache.fetch("workspan-#{workspan.id}") do
        render json.partial! 'workspan', workspan: workspan
      end
    end
  end
end

workspans节点返回错误,因为任务中需要两个更改[]

另存为json,而不是字符串和更改缓存键

Rails.cache.write("jbuilder/views/workspan-#{workspan.id}", JSON.parse(json_string))
这就允许jBuidler模板获取并在正常jbuilder名称中包含缓存的json。没有摘要的注释

json.cache! "workspan-#{workspan.id}",  skip_digest: true do
   json.partial! 'workspan', workspan: workspan
end