rake for faster caching

This commit is contained in:
Harry Bomrah 2014-11-04 15:48:24 +08:00
parent 2c4351c604
commit d83bd64c06
3 changed files with 82 additions and 75 deletions

View File

@ -1,82 +1,23 @@
require 'json'
class AnnouncementLinkWidgetsController < ApplicationController class AnnouncementLinkWidgetsController < ApplicationController
include PagesHelper
layout false
def widget def widget
{ data = {
"extras" => {} "tags" => [{
} "tag-name" => "",
end "tag-id" => "",
def render_content
announcement_app = ModuleApp.find_by_key("announcement")
link_app = ModuleApp.find_by_key("web_resource")
OrbitHelper.override_widget_module_app("announcement")
link_app_tags = link_app.tags
common_tags = []
an_tags = []
l_tags = []
announcement_app.tags.each do |tag|
if !tag.name.nil?
ct = link_app_tags.where(:name => tag.name).first rescue nil
if !ct.nil?
common_tags << ct
an_tags << tag
l_tags << ct
end
end
end
common_tags_frontend = common_tags.collect do |ct|
{
"tag-name" => ct.name,
"tag-id" => ct.name.downcase.gsub(" ", "_"),
"announcements" => [], "announcements" => [],
"links" => [] "links" => []
} }],
end
if common_tags_frontend.size > 0
Bulletin.all.each do |ann|
intersection = ann.tags & an_tags
if intersection.size > 0
intersection.each do |t|
name = t.name.downcase.gsub(" ", "_")
index = common_tags_frontend.index{|t| t["tag-id"] == name}
ctf = common_tags_frontend[index]
ctf["announcements"] << {"title" => ann.title,"link"=>OrbitHelper.widget_item_url(ann.to_param)}
end
end
end
WebLink.all.each do |wl|
intersection = wl.tags & l_tags
# debugger
if intersection.size > 0
intersection.each do |t|
name = t.name.downcase.gsub(" ", "_")
index = common_tags_frontend.index{|t| t["tag-id"] == name}
ctf = common_tags_frontend[index]
ctf["links"] << {"title" => wl.title,"url" => wl.url}
end
end
end
# debugger
end
{
"tags" => common_tags_frontend,
"extras" => { "extras" => {
"heading-announcements" => "Announcements", "heading-announcements" => "Announcements",
"heading-links" => "Links" "heading-links" => "Links"
} }
} }
f = File.join(Rails.root, "public" , "announcement_link_widget.json")
end if File.exists?(f)
contents = File.read('public/announcement_link_widget.json')
def content data = JSON.parse(contents)
OrbitHelper.set_site_locale I18n.locale end
OrbitHelper.register_subpart(params["sub_part_id"]) data
html = render_widget_for_frontend("announcement_link_widget","render_content","content")
render :html => html.html_safe
end end
end end

View File

@ -0,0 +1,70 @@
namespace :announcement_link_widget do
desc "Combination of widgets"
task :make_cache,[:url] => :environment do |task,args|
announcement_app = ModuleApp.find_by_key("announcement")
link_app = ModuleApp.find_by_key("web_resource")
OrbitHelper.override_widget_module_app("announcement")
link_app_tags = link_app.tags
common_tags = []
an_tags = []
l_tags = []
announcement_app.tags.each do |tag|
if !tag.name.nil?
ct = link_app_tags.where(:name => tag.name).first rescue nil
if !ct.nil?
common_tags << ct
an_tags << tag
l_tags << ct
end
end
end
common_tags_frontend = common_tags.collect do |ct|
{
"tag-name" => ct.name,
"tag-id" => ct.name.downcase.gsub(" ", "_"),
"announcements" => [],
"links" => []
}
end
if common_tags_frontend.size > 0
Bulletin.all.each do |ann|
intersection = ann.tags & an_tags
if intersection.size > 0
intersection.each do |t|
name = t.name.downcase.gsub(" ", "_")
index = common_tags_frontend.index{|t| t["tag-id"] == name}
ctf = common_tags_frontend[index]
ctf["announcements"] << {"title" => ann.title,"link"=>OrbitHelper.widget_item_url(ann.to_param)}
end
end
end
WebLink.all.each do |wl|
intersection = wl.tags & l_tags
# debugger
if intersection.size > 0
intersection.each do |t|
name = t.name.downcase.gsub(" ", "_")
index = common_tags_frontend.index{|t| t["tag-id"] == name}
ctf = common_tags_frontend[index]
ctf["links"] << {"title" => wl.title,"url" => wl.url}
end
end
end
# debugger
end
@data = {
"tags" => common_tags_frontend,
"extras" => {
"heading-announcements" => "Announcements",
"heading-links" => "Links"
}
}
File.open("public/announcement_link_widget.json","w") do |f|
f.write(@data.to_json)
end
end
end

View File

@ -1,4 +0,0 @@
# desc "Explaining what the task does"
# task :announcement_link_widget do
# # Task goes here
# end