class ApiCacheGenerator def generate_tag_cache path = File.expand_path(File.join(Rails.root, "..", "shared")) FileUtils.mkdir_p("#{path}/system/cache") File.open("#{path}/system/cache/tags.json", "w") do |f| f.print("[") Tag.without_timeout do Tag.find_each do |tag| next unless tag.post_count > 0 hash = { "name" => tag.name, "id" => tag.id, "created_at" => tag.created_at, "post_count" => tag.post_count, "category" => tag.category } f.print(hash.to_json) f.print(", ") end end f.seek(-2, IO::SEEK_END) f.print("]\n") end Zlib::GzipWriter.open("#{path}/system/cache/tags.json.gz") do |gz| gz.write(IO.binread("#{path}/system/cache/tags.json")) gz.close end RemoteFileManager.new("#{path}/system/cache/tags.json").distribute RemoteFileManager.new("#{path}/shared/system/cache/tags.json.gz").distribute end end