diff --git a/lib/paperclip/storage/s3.rb b/lib/paperclip/storage/s3.rb index c34d025..12105af 100644 --- a/lib/paperclip/storage/s3.rb +++ b/lib/paperclip/storage/s3.rb @@ -121,7 +121,7 @@ module Paperclip # documentation for the aws-sdk-s3 gem for the full list. module S3 - def self.extended base + def self.included(*) begin require "aws-sdk-s3" rescue LoadError => e @@ -129,35 +129,6 @@ module Paperclip raise e end - base.instance_eval do - @s3_options = @options[:s3_options] || {} - @s3_permissions = set_permissions(@options[:s3_permissions]) - @s3_protocol = @options[:s3_protocol] || "".freeze - @s3_metadata = @options[:s3_metadata] || {} - @s3_headers = {} - merge_s3_headers(@options[:s3_headers], @s3_headers, @s3_metadata) - - @s3_storage_class = set_storage_class(@options[:s3_storage_class]) - - @s3_server_side_encryption = "AES256" - if @options[:s3_server_side_encryption].blank? - @s3_server_side_encryption = false - end - if @s3_server_side_encryption - @s3_server_side_encryption = @options[:s3_server_side_encryption] - end - - unless @options[:url].to_s.match(/\A:s3.*url\z/) || @options[:url] == ":asset_host".freeze - @options[:path] = @path.gsub(/:url/, @options[:url]).sub(/\A:rails_root\/public\/system/, "".freeze) - @options[:url] = ":s3_path_url".freeze - end - @options[:url] = @options[:url].inspect if @options[:url].is_a?(Symbol) - - @http_proxy = @options[:http_proxy] || nil - - @use_accelerate_endpoint = @options[:use_accelerate_endpoint] - end - Paperclip.interpolates(:s3_alias_url) do |attachment, style| protocol = attachment.s3_protocol(style, true) host = attachment.s3_host_alias @@ -178,6 +149,37 @@ module Paperclip end unless Paperclip::Interpolations.respond_to? :asset_host end + def initialize(*) + super + + @s3_options = @options[:s3_options] || {} + @s3_permissions = set_permissions(@options[:s3_permissions]) + @s3_protocol = @options[:s3_protocol] || "".freeze + @s3_metadata = @options[:s3_metadata] || {} + @s3_headers = {} + merge_s3_headers(@options[:s3_headers], @s3_headers, @s3_metadata) + + @s3_storage_class = set_storage_class(@options[:s3_storage_class]) + + @s3_server_side_encryption = "AES256" + if @options[:s3_server_side_encryption].blank? + @s3_server_side_encryption = false + end + if @s3_server_side_encryption + @s3_server_side_encryption = @options[:s3_server_side_encryption] + end + + unless @options[:url].to_s.match(/\A:s3.*url\z/) || @options[:url] == ":asset_host".freeze + @options[:path] = @path.gsub(/:url/, @options[:url]).sub(/\A:rails_root\/public\/system/, "".freeze) + @options[:url] = ":s3_path_url".freeze + end + @options[:url] = @options[:url].inspect if @options[:url].is_a?(Symbol) + + @http_proxy = @options[:http_proxy] || nil + + @use_accelerate_endpoint = @options[:use_accelerate_endpoint] + end + def expiring_url(time = 3600, style_name = default_style) if path(style_name) base_options = { expires_in: time }