Jbuilder 部分缓存未添加到输出
Jbuilder Partial Cache not added to output
我 运行 的任务是使用 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 模板获取缓存 json 并将其包含在普通的 jbuilder 名称中。没有摘要的注释。
json.cache! "workspan-#{workspan.id}", skip_digest: true do
json.partial! 'workspan', workspan: workspan
end
我 运行 的任务是使用 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 模板获取缓存 json 并将其包含在普通的 jbuilder 名称中。没有摘要的注释。
json.cache! "workspan-#{workspan.id}", skip_digest: true do
json.partial! 'workspan', workspan: workspan
end