From 81d66ceedd433dc38386798aa143eb089688a22e Mon Sep 17 00:00:00 2001 From: Urban Rotnik Date: Thu, 3 Oct 2019 12:48:37 +0200 Subject: [PATCH] Add CustomDisk Service for ActiveStorage --- app/models/asset.rb | 6 ------ app/models/temp_file.rb | 6 ------ app/models/tiny_mce_asset.rb | 6 ------ app/services/reports/docx/private_methods.rb | 8 ++++---- app/services/spreadsheet_parser.rb | 2 +- config/storage.yml | 4 ++-- lib/active_storage/service/custom_disk_service.rb | 14 ++++++++++++++ 7 files changed, 21 insertions(+), 25 deletions(-) create mode 100644 lib/active_storage/service/custom_disk_service.rb diff --git a/app/models/asset.rb b/app/models/asset.rb index 62487b0ce..1335624fb 100644 --- a/app/models/asset.rb +++ b/app/models/asset.rb @@ -243,12 +243,6 @@ class Asset < ApplicationRecord to_asset.post_process_file(to_asset.team) end - def file_service_url - ActiveStorage::Current.set(host: Rails.application.secrets.mail_server_url) do - file.service_url - end - end - def extract_image_quality return unless ['image/jpeg', 'image/pjpeg'].include? content_type diff --git a/app/models/temp_file.rb b/app/models/temp_file.rb index 0ead177a0..8ed198c35 100644 --- a/app/models/temp_file.rb +++ b/app/models/temp_file.rb @@ -5,12 +5,6 @@ class TempFile < ApplicationRecord has_one_attached :file - def file_service_url - ActiveStorage::Current.set(host: Rails.application.secrets.mail_server_url) do - file.service_url - end - end - class << self def destroy_obsolete(temp_file_id) temp_file = find_by_id(temp_file_id) diff --git a/app/models/tiny_mce_asset.rb b/app/models/tiny_mce_asset.rb index e5470f192..e9ecf058b 100644 --- a/app/models/tiny_mce_asset.rb +++ b/app/models/tiny_mce_asset.rb @@ -102,12 +102,6 @@ class TinyMceAsset < ApplicationRecord image.variant(resize_to_limit: Constants::LARGE_PIC_FORMAT) end - def file_service_url - ActiveStorage::Current.set(host: Rails.application.secrets.mail_server_url) do - image.service_url - end - end - def self.delete_unsaved_image(id) asset = find_by(id: id) asset.destroy if asset && !asset.saved diff --git a/app/services/reports/docx/private_methods.rb b/app/services/reports/docx/private_methods.rb index cbd18dddc..292c6f00f 100644 --- a/app/services/reports/docx/private_methods.rb +++ b/app/services/reports/docx/private_methods.rb @@ -98,7 +98,7 @@ module Reports::Docx::PrivateMethods image = TinyMceAsset.find_by(id: Base62.decode(elem.attributes['data-mce-token'].value)) next unless image - image_path = image_path(image) + image_path = image_path(image.image) dimension = FastImage.size(image_path) style = image_styling(elem, dimension) @@ -204,7 +204,7 @@ module Reports::Docx::PrivateMethods def asset_image_preparing(asset) return unless asset - image_path = image_path(asset) + image_path = image_path(asset.file) dimension = FastImage.size(image_path) x = dimension[0] @@ -292,8 +292,8 @@ module Reports::Docx::PrivateMethods } end - def image_path(asset) - asset.file_service_url + def image_path(attachment) + attachment.service_url end def calculate_color_hsp(color) diff --git a/app/services/spreadsheet_parser.rb b/app/services/spreadsheet_parser.rb index 9f7ff7c35..700697169 100644 --- a/app/services/spreadsheet_parser.rb +++ b/app/services/spreadsheet_parser.rb @@ -8,7 +8,7 @@ class SpreadsheetParser file_path = file.path else filename = file.filename.to_s - file_path = file.file_service_url + file_path = file.service_url end case File.extname(filename) diff --git a/config/storage.yml b/config/storage.yml index fa3150876..964c17ebe 100644 --- a/config/storage.yml +++ b/config/storage.yml @@ -1,9 +1,9 @@ test: - service: Disk + service: CustomDisk root: <%= Rails.root.join("tmp/storage") %> local: - service: Disk + service: CustomDisk root: <%= Rails.root.join("storage") %> amazon: diff --git a/lib/active_storage/service/custom_disk_service.rb b/lib/active_storage/service/custom_disk_service.rb new file mode 100644 index 000000000..02119e0b2 --- /dev/null +++ b/lib/active_storage/service/custom_disk_service.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require 'active_storage/service/disk_service' + +module ActiveStorage + class Service::CustomDiskService < Service::DiskService + def current_host + host = ActiveStorage::Current.host + host ||= Rails.application.secrets.mail_server_url + host = "http://#{host}" unless host.match?(/^http/) + host + end + end +end