From b94c7922c55681e2b7cde52c90ecf58e74ea000e Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Tue, 13 Jan 2015 23:52:21 +0530 Subject: [PATCH] :racehorse: gzip csv export files --- app/jobs/regular/export_csv_file.rb | 6 ++++-- spec/controllers/export_csv_controller_spec.rb | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/jobs/regular/export_csv_file.rb b/app/jobs/regular/export_csv_file.rb index b0ae17c36..308d5d377 100644 --- a/app/jobs/regular/export_csv_file.rb +++ b/app/jobs/regular/export_csv_file.rb @@ -288,12 +288,14 @@ module Jobs csv << value end end + # compress CSV file + `gzip --best #{File.expand_path("#{UserExport.base_directory}/#{@file_name}", __FILE__)}` end def notify_user if @current_user - if @file_name != "" && File.exists?("#{UserExport.base_directory}/#{@file_name}") - SystemMessage.create_from_system_user(@current_user, :csv_export_succeeded, download_link: "#{Discourse.base_url}/export_csv/#{@file_name}", file_name: @file_name) + if @file_name != "" && File.exists?("#{UserExport.base_directory}/#{@file_name}.gz") + SystemMessage.create_from_system_user(@current_user, :csv_export_succeeded, download_link: "#{Discourse.base_url}/export_csv/#{@file_name}.gz", file_name: "#{@file_name}.gz") else SystemMessage.create_from_system_user(@current_user, :csv_export_failed) end diff --git a/spec/controllers/export_csv_controller_spec.rb b/spec/controllers/export_csv_controller_spec.rb index 49a9b36b9..16d3f5996 100644 --- a/spec/controllers/export_csv_controller_spec.rb +++ b/spec/controllers/export_csv_controller_spec.rb @@ -1,7 +1,7 @@ require "spec_helper" describe ExportCsvController do - let(:export_filename) { "user-archive-999.csv" } + let(:export_filename) { "user-archive-999.csv.gz" } context "while logged in as normal user" do @@ -30,7 +30,7 @@ describe ExportCsvController do describe ".download" do it "uses send_file to transmit the export file" do file = UserExport.create(export_type: "user", user_id: @user.id) - file_name = "user-archive-#{file.id}.csv" + file_name = "user-archive-#{file.id}.csv.gz" controller.stubs(:render) export = UserExport.new() UserExport.expects(:get_download_path).with(file_name).returns(export) @@ -74,7 +74,7 @@ describe ExportCsvController do describe ".download" do it "uses send_file to transmit the export file" do file = UserExport.create(export_type: "admin", user_id: @admin.id) - file_name = "screened-email-#{file.id}.csv" + file_name = "screened-email-#{file.id}.csv.gz" controller.stubs(:render) export = UserExport.new() UserExport.expects(:get_download_path).with(file_name).returns(export)