diff --git a/lib/jammit-s3.rb b/lib/jammit-s3.rb index a5ccc0a..796ad87 100644 --- a/lib/jammit-s3.rb +++ b/lib/jammit-s3.rb @@ -7,3 +7,38 @@ def self.upload_to_s3!(options = {}) S3Uploader.new(options).upload end end + +if defined?(Rails) + module Jammit + class JammitRailtie < Rails::Railtie + initializer "set asset host and asset id" do + config.before_initialize do + if Jammit.configuration[:use_cloudfront] && Jammit.configuration[:cloudfront_cname].present? && Jammit.configuration[:cloudfront_domain].present? + asset_hostname = Jammit.configuration[:cloudfront_cname] + asset_hostname_ssl = Jammit.configuration[:cloudfront_domain] + elsif Jammit.configuration[:use_cloudfront] && Jammit.configuration[:cloudfront_domain].present? + asset_hostname = asset_hostname_ssl = Jammit.configuration[:cloudfront_domain] + else + asset_hostname = asset_hostname_ssl = "#{Jammit.configuration[:s3_bucket]}.s3.amazonaws.com" + end + + if Jammit.package_assets and asset_hostname.present? + puts "Initializing Cloudfront" + ActionController::Base.asset_host = Proc.new do |source, request| + if Jammit.configuration.has_key?(:ssl) + protocol = Jammit.configuration[:ssl] ? "https://" : "http://" + else + protocol = request.protocol + end + if request.protocol == "https://" + "#{protocol}#{asset_hostname_ssl}" + else + "#{protocol}#{asset_hostname}" + end + end + end + end + end + end + end +end \ No newline at end of file diff --git a/lib/jammit/s3_uploader.rb b/lib/jammit/s3_uploader.rb index ecb577d..6fd377d 100644 --- a/lib/jammit/s3_uploader.rb +++ b/lib/jammit/s3_uploader.rb @@ -17,6 +17,16 @@ def initialize(options = {}) @bucket_location = options[:bucket_location] || Jammit.configuration[:s3_bucket_location] @cache_control = options[:cache_control] || Jammit.configuration[:s3_cache_control] @acl = options[:acl] || Jammit.configuration[:s3_permission] + @use_cloud_front = options[:use_cloudfront] || Jammit.configuration[:use_cloudfront] + if @use_cloud_front + @changed_files = [] + @cloudfront_id = options[:cloudfront_id] || Jammit.configuration[:cloudfront_id] + end + + log "Using following config:" + log " - bucket: #{@bucket_name}" + log " - access_key: #{@access_key_id}" + log " - cloudfront_id: #{@cloudfront_id}" @bucket = find_or_create_bucket if Jammit.configuration[:use_cloudfront] @@ -122,7 +132,7 @@ def find_or_create_bucket def invalidate_cache(files) paths = "" files.each do |key| - log "adding #{key} to list of invalidation requests" + log "adding /#{key} to list of invalidation requests" paths += "/#{key}" end digest = HMAC::SHA1.new(@secret_access_key)