From 29b4c32bdcf1d9fef32f40a9e472be0e19e2306e Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Mon, 8 Nov 2010 13:57:31 -0500 Subject: [PATCH 01/22] fix CSS host regex --- lib/cloudfront_asset_host/css_rewriter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cloudfront_asset_host/css_rewriter.rb b/lib/cloudfront_asset_host/css_rewriter.rb index 62dbd67..b17ed57 100644 --- a/lib/cloudfront_asset_host/css_rewriter.rb +++ b/lib/cloudfront_asset_host/css_rewriter.rb @@ -9,7 +9,7 @@ module CssRewriter class << self # matches optional quoted url() - ReplaceRexeg = /url\(["']?([^\)\?"']+)(\?[^"']*)?["']?\)/i + ReplaceRexeg = /url\(["']?([^\)\?"']+)(\?[^"'\)]*)?["']?\)/i # Returns the path to the temporary file that contains the # rewritten stylesheet From ad4dbb45aa41688efff04ae7f8f7d6dbe53f8108 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Mon, 8 Nov 2010 13:57:57 -0500 Subject: [PATCH 02/22] only perform cloudfront-style rewriting on assets that have not been excluded from the CDN --- lib/cloudfront_asset_host.rb | 2 +- .../asset_tag_helper_ext.rb | 45 +++++++++++++++---- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/lib/cloudfront_asset_host.rb b/lib/cloudfront_asset_host.rb index dd2237d..c964451 100644 --- a/lib/cloudfront_asset_host.rb +++ b/lib/cloudfront_asset_host.rb @@ -114,9 +114,9 @@ def bucket_host def enable! if enabled - ActionController::Base.asset_host = Proc.new { |source, request| CloudfrontAssetHost.asset_host(source, request) } ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :rewrite_asset_path, :cloudfront) ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :rails_asset_id, :cloudfront) + ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :compute_asset_host, :cloudfront) end end diff --git a/lib/cloudfront_asset_host/asset_tag_helper_ext.rb b/lib/cloudfront_asset_host/asset_tag_helper_ext.rb index 4262538..43e329c 100644 --- a/lib/cloudfront_asset_host/asset_tag_helper_ext.rb +++ b/lib/cloudfront_asset_host/asset_tag_helper_ext.rb @@ -1,11 +1,36 @@ module ActionView - module Helpers - module AssetTagHelper + module Helpers + module AssetTagHelper private + def compute_asset_host_with_cloudfront(source) + if CloudfrontAssetHost.disable_cdn_for_source?(source) + compute_asset_host_without_cloudfront(source) + else + request = controller.respond_to?(:request) && controller.request + CloudfrontAssetHost.asset_host(source, request) + end + end + + def rewrite_host_and_protocol_with_cloudfront(source, has_request) + if CloudfrontAssetHost.disable_cdn_for_source?(source) + rewrite_host_and_protocol_without_cloudfront(source, has_request) + else + host = CloudfrontAssetHost.asset_host(source, has_request) + if has_request && host.present? && !is_uri?(host) + host = "#{controller.request.protocol}#{host}" + end + "#{host}#{source}" + end + end + # Override asset_id so it calculates the key by md5 instead of modified-time def rails_asset_id_with_cloudfront(source) + if CloudfrontAssetHost.disable_cdn_for_source?(source) + return rails_asset_id_without_cloudfront(source) + end + if @@cache_asset_timestamps && (asset_id = @@asset_timestamps_cache[source]) asset_id else @@ -25,14 +50,18 @@ def rails_asset_id_with_cloudfront(source) # Override asset_path so it prepends the asset_id def rewrite_asset_path_with_cloudfront(source) - asset_id = rails_asset_id(source) - if asset_id.blank? - source + if CloudfrontAssetHost.disable_cdn_for_source?(source) + rewrite_asset_path_without_cloudfront(source) else - "/#{asset_id}#{source}" + asset_id = rails_asset_id_with_cloudfront(source) + if asset_id.blank? + source + else + "/#{asset_id}#{source}" + end end end - end - end + end + end end From 08f711f67b8a790e164958ad9ef633ef8c818ceb Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Mon, 8 Nov 2010 16:00:00 -0500 Subject: [PATCH 03/22] include base .specification file for braid's sake --- .specification | 192 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 .specification diff --git a/.specification b/.specification new file mode 100644 index 0000000..0dcf031 --- /dev/null +++ b/.specification @@ -0,0 +1,192 @@ +--- !ruby/object:Gem::Specification +name: zeevex-cloudfront_asset_host +version: !ruby/object:Gem::Version + hash: 19 + prerelease: false + segments: + - 1 + - 1 + - 0 + version: 1.1.0 +platform: ruby +authors: +- Menno van der Sman +autorequire: +bindir: bin +cert_chain: [] + +date: 2010-10-01 00:00:00 -04:00 +default_executable: +dependencies: +- !ruby/object:Gem::Dependency + name: right_aws + prerelease: false + requirement: &id001 !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" + type: :runtime + version_requirements: *id001 +- !ruby/object:Gem::Dependency + name: activesupport + prerelease: false + requirement: &id002 !ruby/object:Gem::Requirement + none: false + requirements: + - - "=" + - !ruby/object:Gem::Version + hash: 17 + segments: + - 2 + - 3 + - 9 + version: 2.3.9 + type: :development + version_requirements: *id002 +- !ruby/object:Gem::Dependency + name: actionpack + prerelease: false + requirement: &id003 !ruby/object:Gem::Requirement + none: false + requirements: + - - "=" + - !ruby/object:Gem::Version + hash: 17 + segments: + - 2 + - 3 + - 9 + version: 2.3.9 + type: :development + version_requirements: *id003 +- !ruby/object:Gem::Dependency + name: shoulda + prerelease: false + requirement: &id004 !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" + type: :development + version_requirements: *id004 +- !ruby/object:Gem::Dependency + name: mocha + prerelease: false + requirement: &id005 !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" + type: :development + version_requirements: *id005 +- !ruby/object:Gem::Dependency + name: redgreen + prerelease: false + requirement: &id006 !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" + type: :development + version_requirements: *id006 +- !ruby/object:Gem::Dependency + name: turn + prerelease: false + requirement: &id007 !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" + type: :development + version_requirements: *id007 +description: Easy deployment of your assets on CloudFront or S3 using a simple rake-task. When enabled in production, the application's asset_host and public_paths will point to the correct location. +email: menno@wakoopa.com +executables: [] + +extensions: [] + +extra_rdoc_files: +- README.markdown +files: +- .gitignore +- Gemfile +- Gemfile.lock +- MIT-LICENSE +- README.markdown +- Rakefile +- VERSION +- cloudfront_asset_host.gemspec +- lib/cloudfront_asset_host.rb +- lib/cloudfront_asset_host/asset_tag_helper_ext.rb +- lib/cloudfront_asset_host/css_rewriter.rb +- lib/cloudfront_asset_host/mime_types.yml +- lib/cloudfront_asset_host/uploader.rb +- test/app/config/s3-env.yml +- test/app/config/s3.yml +- test/app/public/images/image.png +- test/app/public/javascripts/application.js +- test/app/public/stylesheets/style.css +- test/cloudfront_asset_host_test.rb +- test/css_rewriter_test.rb +- test/test_helper.rb +- test/uploader_test.rb +has_rdoc: true +homepage: http://github.com/menno/cloudfront_asset_host +licenses: [] + +post_install_message: +rdoc_options: +- --charset=UTF-8 +require_paths: +- lib +required_ruby_version: !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" +required_rubygems_version: !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" +requirements: [] + +rubyforge_project: +rubygems_version: 1.3.7 +signing_key: +specification_version: 3 +summary: Rails plugin to easily and efficiently deploy your assets on Amazon's S3 or CloudFront +test_files: +- test/cloudfront_asset_host_test.rb +- test/css_rewriter_test.rb +- test/test_helper.rb +- test/uploader_test.rb From 8f1c25970836d7e7cdb0e7516f454eef81ccada0 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 08:50:18 -0500 Subject: [PATCH 04/22] update tests to match new extension methods --- test/cloudfront_asset_host_test.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/cloudfront_asset_host_test.rb b/test/cloudfront_asset_host_test.rb index c7c5c8b..8dec63b 100644 --- a/test/cloudfront_asset_host_test.rb +++ b/test/cloudfront_asset_host_test.rb @@ -108,15 +108,17 @@ class CloudfrontAssetHostTest < Test::Unit::TestCase end end - should "set the asset_host" do - assert ActionController::Base.asset_host.is_a?(Proc) + should "not set the asset_host" do + assert !ActionController::Base.asset_host.is_a?(Proc) end should "alias methods in asset-tag-helper" do assert ActionView::Helpers::AssetTagHelper.private_method_defined?('rails_asset_id_without_cloudfront') assert ActionView::Helpers::AssetTagHelper.private_method_defined?('rewrite_asset_path_without_cloudfront') + assert ActionView::Helpers::AssetTagHelper.private_method_defined?('compute_asset_host_without_cloudfront') assert ActionView::Helpers::AssetTagHelper.private_method_defined?('rails_asset_id') assert ActionView::Helpers::AssetTagHelper.private_method_defined?('rewrite_asset_path') + assert ActionView::Helpers::AssetTagHelper.private_method_defined?('compute_asset_host') end end From 5cca223ecb170294d886e30af3c920bd41ea1532 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 09:29:45 -0500 Subject: [PATCH 05/22] test for runaway URL regex bugfix --- test/app/public/stylesheets/style.css | 13 +++++++------ test/css_rewriter_test.rb | 3 +-- test/uploader_test.rb | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/test/app/public/stylesheets/style.css b/test/app/public/stylesheets/style.css index 0762e7b..0f01096 100644 --- a/test/app/public/stylesheets/style.css +++ b/test/app/public/stylesheets/style.css @@ -1,6 +1,7 @@ -body { background-image: url(../images/image.png); } -body { background-image: url(/images/image.png); } -body { background-image: url('/images/image.png'); } -body { background-image: url("/images/image.png"); } -body { background-image: url("/images/image.png?98732857"); } -body { background-image: url("/images/image.png?fo0=bar"); } \ No newline at end of file +body { background: url(../images/image.png) repeat-x; } +body { background: url(/images/image.png) repeat-x; } +body { background: url('/images/image.png') repeat-x; } +body { background: url("/images/image.png") repeat-x; } +body { background: url("/images/image.png?98732857") repeat-x; } +body { background: url("/images/image.png?fo0=bar") repeat-x; } +body { background: url(/images/image.png?1264616492) repeat-x;border-left:0;border-right:0;bottom:0;display:none;left:0;margin-left:0;margin-right:0;padding-left:0;padding-right:0;padding-top:10px;position:fixed;text-align:center;width:100%;z-index:10000;}#catface.catface-ie{bottom:expression((0 - document.documentElement.offsetHeight+(document.documentElement.clientHeight ? document.documentElement.clientHeight:document.body.clientHeight)+(document.documentElement.scrollTop ? document.documentElement.scrollTop:document.body.scrollTop))+'px');left:0;overflow:hidden;position:absolute;right:0;width:expression((document.documentElement.clientWidth ? document.documentElement.clientWidth:document.body.clientWidth)+'px');} \ No newline at end of file diff --git a/test/css_rewriter_test.rb b/test/css_rewriter_test.rb index 4b87bbe..887210a 100644 --- a/test/css_rewriter_test.rb +++ b/test/css_rewriter_test.rb @@ -19,10 +19,9 @@ class CssRewriterTest < Test::Unit::TestCase tmp = CloudfrontAssetHost::CssRewriter.rewrite_stylesheet(@stylesheet_path) contents = File.read(tmp.path) contents.split("\n").each do |line| - assert_equal "body { background-image: url(http://assethost.com/d41d8cd98/images/image.png); }", line + assert_match Regexp.new('body \{ background: url\(http://assethost.com/d41d8cd98/images/image.png\) repeat-x;.*\}$'), line end end - end end diff --git a/test/uploader_test.rb b/test/uploader_test.rb index 80ec883..8f15543 100644 --- a/test/uploader_test.rb +++ b/test/uploader_test.rb @@ -130,7 +130,7 @@ class UploaderTest < Test::Unit::TestCase css_path = CloudfrontAssetHost::Uploader.rewritten_css_path(path) File.read(css_path).split("\n").each do |line| - assert_equal "body { background-image: url(http://assethost.com/d41d8cd98/images/image.png); }", line + assert_match Regexp.new('^body \{ background: url\(http://assethost.com/d41d8cd98/images/image.png\) repeat-x;.*\}'), line end end From b84456b81df6c1b2e67f11f96faa6957a82a139c Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 10:40:34 -0500 Subject: [PATCH 06/22] only use cloudfront tag helper extensions if currently enabled; don't re-alias_method_chain if already done. --- lib/cloudfront_asset_host.rb | 2 +- lib/cloudfront_asset_host/asset_tag_helper_ext.rb | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/cloudfront_asset_host.rb b/lib/cloudfront_asset_host.rb index c964451..cd9b7f3 100644 --- a/lib/cloudfront_asset_host.rb +++ b/lib/cloudfront_asset_host.rb @@ -113,7 +113,7 @@ def bucket_host end def enable! - if enabled + if enabled && !ActionView::Helpers::AssetTagHelper.private_method_defined?(:rewrite_asset_path_without_cloudfront) ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :rewrite_asset_path, :cloudfront) ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :rails_asset_id, :cloudfront) ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :compute_asset_host, :cloudfront) diff --git a/lib/cloudfront_asset_host/asset_tag_helper_ext.rb b/lib/cloudfront_asset_host/asset_tag_helper_ext.rb index 43e329c..c910b0c 100644 --- a/lib/cloudfront_asset_host/asset_tag_helper_ext.rb +++ b/lib/cloudfront_asset_host/asset_tag_helper_ext.rb @@ -5,7 +5,7 @@ module AssetTagHelper private def compute_asset_host_with_cloudfront(source) - if CloudfrontAssetHost.disable_cdn_for_source?(source) + if !CloudfrontAssetHost.enabled || CloudfrontAssetHost.disable_cdn_for_source?(source) compute_asset_host_without_cloudfront(source) else request = controller.respond_to?(:request) && controller.request @@ -14,7 +14,7 @@ def compute_asset_host_with_cloudfront(source) end def rewrite_host_and_protocol_with_cloudfront(source, has_request) - if CloudfrontAssetHost.disable_cdn_for_source?(source) + if !CloudfrontAssetHost.enabled || CloudfrontAssetHost.disable_cdn_for_source?(source) rewrite_host_and_protocol_without_cloudfront(source, has_request) else host = CloudfrontAssetHost.asset_host(source, has_request) @@ -27,7 +27,7 @@ def rewrite_host_and_protocol_with_cloudfront(source, has_request) # Override asset_id so it calculates the key by md5 instead of modified-time def rails_asset_id_with_cloudfront(source) - if CloudfrontAssetHost.disable_cdn_for_source?(source) + if !CloudfrontAssetHost.enabled || CloudfrontAssetHost.disable_cdn_for_source?(source) return rails_asset_id_without_cloudfront(source) end @@ -50,7 +50,7 @@ def rails_asset_id_with_cloudfront(source) # Override asset_path so it prepends the asset_id def rewrite_asset_path_with_cloudfront(source) - if CloudfrontAssetHost.disable_cdn_for_source?(source) + if !CloudfrontAssetHost.enabled || CloudfrontAssetHost.disable_cdn_for_source?(source) rewrite_asset_path_without_cloudfront(source) else asset_id = rails_asset_id_with_cloudfront(source) From d34c8ae45d6afaddbbc13ba35b9e0c8c96497703 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 10:46:46 -0500 Subject: [PATCH 07/22] bring in rails as a dependency for the helper tests (there's probably a better way) --- Gemfile.lock | 22 +++++++++++++++++----- cloudfront_asset_host.gemspec | 6 +++++- test/test_helper.rb | 12 ++++++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 52dc8f3..c6b7d46 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,24 +7,35 @@ PATH GEM remote: http://rubygems.org/ specs: + actionmailer (2.3.9) + actionpack (= 2.3.9) actionpack (2.3.9) activesupport (= 2.3.9) rack (~> 1.1.0) + activerecord (2.3.9) + activesupport (= 2.3.9) + activeresource (2.3.9) + activesupport (= 2.3.9) activesupport (2.3.9) ansi (1.2.2) - facets (2.8.4) - mocha (0.9.8) + mocha (0.9.9) rake rack (1.1.0) + rails (2.3.9) + actionmailer (= 2.3.9) + actionpack (= 2.3.9) + activerecord (= 2.3.9) + activeresource (= 2.3.9) + activesupport (= 2.3.9) + rake (>= 0.8.3) rake (0.8.7) redgreen (1.2.2) right_aws (2.0.0) right_http_connection (>= 1.2.1) right_http_connection (1.2.4) shoulda (2.11.3) - turn (0.7.0) - ansi (>= 1.1.0) - facets (>= 2.8.0) + turn (0.8.1) + ansi (>= 1.2.2) PLATFORMS ruby @@ -34,6 +45,7 @@ DEPENDENCIES activesupport (= 2.3.9) cloudfront_asset_host! mocha + rails (= 2.3.9) redgreen right_aws shoulda diff --git a/cloudfront_asset_host.gemspec b/cloudfront_asset_host.gemspec index 18096c3..1fe8400 100644 --- a/cloudfront_asset_host.gemspec +++ b/cloudfront_asset_host.gemspec @@ -37,7 +37,8 @@ Gem::Specification.new do |s| "test/cloudfront_asset_host_test.rb", "test/css_rewriter_test.rb", "test/test_helper.rb", - "test/uploader_test.rb" + "test/uploader_test.rb", + "test/taghelper_ext_test.rb", ] s.homepage = %q{http://github.com/menno/cloudfront_asset_host} s.rdoc_options = ["--charset=UTF-8"] @@ -57,6 +58,7 @@ Gem::Specification.new do |s| if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then s.add_runtime_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, ["= 2.3.9"]) s.add_development_dependency(%q, ["= 2.3.9"]) s.add_development_dependency(%q, ["= 2.3.9"]) s.add_development_dependency(%q, [">= 0"]) @@ -65,6 +67,7 @@ Gem::Specification.new do |s| s.add_development_dependency(%q, [">= 0"]) else s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["= 2.3.9"]) s.add_dependency(%q, ["= 2.3.9"]) s.add_dependency(%q, ["= 2.3.9"]) s.add_dependency(%q, [">= 0"]) @@ -74,6 +77,7 @@ Gem::Specification.new do |s| end else s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["= 2.3.9"]) s.add_dependency(%q, ["= 2.3.9"]) s.add_dependency(%q, ["= 2.3.9"]) s.add_dependency(%q, [">= 0"]) diff --git a/test/test_helper.rb b/test/test_helper.rb index 9afe681..b354749 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -2,6 +2,8 @@ require 'bundler' Bundler.setup +$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) + require 'active_support' require 'action_controller' @@ -13,6 +15,10 @@ RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), 'app')) +class NullBacktraceCleaner + def clean(x); x; end +end + module Rails class << self def root @@ -26,6 +32,12 @@ def public_path def env "production" end + + def backtrace_cleaner + @@backtrace_cleaner ||= begin + NullBacktraceCleaner.new + end + end end end From fa9d6f4b4a2b35059d633b334858b9f2c5684ca2 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 10:59:37 -0500 Subject: [PATCH 08/22] make it easier to run a test with "ruby " from anywhere in the tree --- test/cloudfront_asset_host_test.rb | 2 +- test/css_rewriter_test.rb | 2 +- test/test_helper.rb | 10 +++++++--- test/uploader_test.rb | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/test/cloudfront_asset_host_test.rb b/test/cloudfront_asset_host_test.rb index 8dec63b..f02b5b7 100644 --- a/test/cloudfront_asset_host_test.rb +++ b/test/cloudfront_asset_host_test.rb @@ -1,4 +1,4 @@ -require 'test_helper' +require File.join(File.dirname(__FILE__), 'test_helper') class CloudfrontAssetHostTest < Test::Unit::TestCase diff --git a/test/css_rewriter_test.rb b/test/css_rewriter_test.rb index 887210a..47d0a11 100644 --- a/test/css_rewriter_test.rb +++ b/test/css_rewriter_test.rb @@ -1,4 +1,4 @@ -require 'test_helper' +require File.join(File.dirname(__FILE__), 'test_helper') class CssRewriterTest < Test::Unit::TestCase diff --git a/test/test_helper.rb b/test/test_helper.rb index b354749..337e357 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -2,7 +2,11 @@ require 'bundler' Bundler.setup -$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) +# get ref to test dir and then move to parent dir +testdir = File.expand_path(File.dirname(__FILE__)) +Dir.chdir File.join(testdir, "..") + +$LOAD_PATH.unshift(File.join(testdir, '..', 'lib')) require 'active_support' require 'action_controller' @@ -13,7 +17,7 @@ begin require 'redgreen'; rescue LoadError; end begin require 'turn'; rescue LoadError; end -RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), 'app')) +RAILS_ROOT = File.expand_path(File.join(testdir, 'app')) class NullBacktraceCleaner def clean(x); x; end @@ -41,4 +45,4 @@ def backtrace_cleaner end end -require File.join(File.dirname(__FILE__), '..', 'lib', 'cloudfront_asset_host') +require File.join(testdir, '..', 'lib', 'cloudfront_asset_host') diff --git a/test/uploader_test.rb b/test/uploader_test.rb index 8f15543..5b3dd45 100644 --- a/test/uploader_test.rb +++ b/test/uploader_test.rb @@ -1,4 +1,4 @@ -require 'test_helper' +require File.join(File.dirname(__FILE__), 'test_helper') class UploaderTest < Test::Unit::TestCase From 9bac459ff478f8f1a3b688e51909cff5cc06c2cb Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 10:59:57 -0500 Subject: [PATCH 09/22] test for asset tag helper behavior for excluded paths --- test/taghelper_ext_test.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 test/taghelper_ext_test.rb diff --git a/test/taghelper_ext_test.rb b/test/taghelper_ext_test.rb new file mode 100644 index 0000000..8d0617d --- /dev/null +++ b/test/taghelper_ext_test.rb @@ -0,0 +1,36 @@ +require File.join(File.dirname(__FILE__), 'test_helper') + +require 'action_view' + +require 'action_view/test_case' +require "action_controller/test_process" +require 'action_view/helpers/asset_tag_helper' + +# ActionView::Helpers is for recent rails version, ActionView::Base for older ones (in which case ActionView::Helpers::AssetTagHelper is also needed for tests...) +ActionView::Helpers.class_eval { include ActionView::Helpers::AssetTagHelper } # For recent rails version... +ActionView::Base.class_eval { include ActionView::Helpers::AssetTagHelper } # ...and for older ones +ActionView::TestCase.class_eval { include ActionView::Helpers::AssetTagHelper } if defined? ActionView::TestCase # ...for tests in older versions + +class TagHelperExtTest < ActionView::TestCase + + context "A configured uploader" do + setup do + CloudfrontAssetHost.configure do |config| + config.cname = "assethost.com" + config.bucket = "bucketname" + config.key_prefix = "" + config.s3_config = "#{RAILS_ROOT}/config/s3.yml" + config.exclude_pattern = /style/ + config.enabled = true + end + end + + should "use assethost for included asset path" do + assert_equal "http://assethost.com/d41d8cd98/images/image.png", image_path("image.png") + end + + should "allow standard Rails path generation for an excluded asset" do + assert_match %r{^/stylesheets/style.css\?\d+$}, stylesheet_path("style.css") + end + end +end \ No newline at end of file From ff1d93819dc89733758dd0949a76099dd37e1ad0 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 11:07:44 -0500 Subject: [PATCH 10/22] rake upload task --- lib/tasks/cloudfront_asset_host.rake | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 lib/tasks/cloudfront_asset_host.rake diff --git a/lib/tasks/cloudfront_asset_host.rake b/lib/tasks/cloudfront_asset_host.rake new file mode 100644 index 0000000..a32bebe --- /dev/null +++ b/lib/tasks/cloudfront_asset_host.rake @@ -0,0 +1,14 @@ +namespace :cloudfront do + desc <<-DESC + Upload assets to Cloudfront CDN. + + Set VERBOSE=true for detailed output + FORCE=true to force upload of unchanged assets + DRYRUN=true to simulate an upload' + DESC + task :upload => :environment do + CloudfrontAssetHost::Uploader.upload!(:verbose => ENV["VERBOSE"] == "true", + :dryrun => ENV["DRYRUN"] == "true", + :force_write => ENV["FORCE"] == "true") + end +end From 2fd669969c987559e6b0adf2a2afb60c8836e418 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 11:26:39 -0500 Subject: [PATCH 11/22] remove spurious .specification file --- .specification | 192 ------------------------------------------------- 1 file changed, 192 deletions(-) delete mode 100644 .specification diff --git a/.specification b/.specification deleted file mode 100644 index 0dcf031..0000000 --- a/.specification +++ /dev/null @@ -1,192 +0,0 @@ ---- !ruby/object:Gem::Specification -name: zeevex-cloudfront_asset_host -version: !ruby/object:Gem::Version - hash: 19 - prerelease: false - segments: - - 1 - - 1 - - 0 - version: 1.1.0 -platform: ruby -authors: -- Menno van der Sman -autorequire: -bindir: bin -cert_chain: [] - -date: 2010-10-01 00:00:00 -04:00 -default_executable: -dependencies: -- !ruby/object:Gem::Dependency - name: right_aws - prerelease: false - requirement: &id001 !ruby/object:Gem::Requirement - none: false - requirements: - - - ">=" - - !ruby/object:Gem::Version - hash: 3 - segments: - - 0 - version: "0" - type: :runtime - version_requirements: *id001 -- !ruby/object:Gem::Dependency - name: activesupport - prerelease: false - requirement: &id002 !ruby/object:Gem::Requirement - none: false - requirements: - - - "=" - - !ruby/object:Gem::Version - hash: 17 - segments: - - 2 - - 3 - - 9 - version: 2.3.9 - type: :development - version_requirements: *id002 -- !ruby/object:Gem::Dependency - name: actionpack - prerelease: false - requirement: &id003 !ruby/object:Gem::Requirement - none: false - requirements: - - - "=" - - !ruby/object:Gem::Version - hash: 17 - segments: - - 2 - - 3 - - 9 - version: 2.3.9 - type: :development - version_requirements: *id003 -- !ruby/object:Gem::Dependency - name: shoulda - prerelease: false - requirement: &id004 !ruby/object:Gem::Requirement - none: false - requirements: - - - ">=" - - !ruby/object:Gem::Version - hash: 3 - segments: - - 0 - version: "0" - type: :development - version_requirements: *id004 -- !ruby/object:Gem::Dependency - name: mocha - prerelease: false - requirement: &id005 !ruby/object:Gem::Requirement - none: false - requirements: - - - ">=" - - !ruby/object:Gem::Version - hash: 3 - segments: - - 0 - version: "0" - type: :development - version_requirements: *id005 -- !ruby/object:Gem::Dependency - name: redgreen - prerelease: false - requirement: &id006 !ruby/object:Gem::Requirement - none: false - requirements: - - - ">=" - - !ruby/object:Gem::Version - hash: 3 - segments: - - 0 - version: "0" - type: :development - version_requirements: *id006 -- !ruby/object:Gem::Dependency - name: turn - prerelease: false - requirement: &id007 !ruby/object:Gem::Requirement - none: false - requirements: - - - ">=" - - !ruby/object:Gem::Version - hash: 3 - segments: - - 0 - version: "0" - type: :development - version_requirements: *id007 -description: Easy deployment of your assets on CloudFront or S3 using a simple rake-task. When enabled in production, the application's asset_host and public_paths will point to the correct location. -email: menno@wakoopa.com -executables: [] - -extensions: [] - -extra_rdoc_files: -- README.markdown -files: -- .gitignore -- Gemfile -- Gemfile.lock -- MIT-LICENSE -- README.markdown -- Rakefile -- VERSION -- cloudfront_asset_host.gemspec -- lib/cloudfront_asset_host.rb -- lib/cloudfront_asset_host/asset_tag_helper_ext.rb -- lib/cloudfront_asset_host/css_rewriter.rb -- lib/cloudfront_asset_host/mime_types.yml -- lib/cloudfront_asset_host/uploader.rb -- test/app/config/s3-env.yml -- test/app/config/s3.yml -- test/app/public/images/image.png -- test/app/public/javascripts/application.js -- test/app/public/stylesheets/style.css -- test/cloudfront_asset_host_test.rb -- test/css_rewriter_test.rb -- test/test_helper.rb -- test/uploader_test.rb -has_rdoc: true -homepage: http://github.com/menno/cloudfront_asset_host -licenses: [] - -post_install_message: -rdoc_options: -- --charset=UTF-8 -require_paths: -- lib -required_ruby_version: !ruby/object:Gem::Requirement - none: false - requirements: - - - ">=" - - !ruby/object:Gem::Version - hash: 3 - segments: - - 0 - version: "0" -required_rubygems_version: !ruby/object:Gem::Requirement - none: false - requirements: - - - ">=" - - !ruby/object:Gem::Version - hash: 3 - segments: - - 0 - version: "0" -requirements: [] - -rubyforge_project: -rubygems_version: 1.3.7 -signing_key: -specification_version: 3 -summary: Rails plugin to easily and efficiently deploy your assets on Amazon's S3 or CloudFront -test_files: -- test/cloudfront_asset_host_test.rb -- test/css_rewriter_test.rb -- test/test_helper.rb -- test/uploader_test.rb From 8be467bfacb7c110bbd32709b9504b372c846179 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 9 Nov 2010 12:01:03 -0500 Subject: [PATCH 12/22] add some speculative font mime types (widespread disagreement on this) --- lib/cloudfront_asset_host/mime_types.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/cloudfront_asset_host/mime_types.yml b/lib/cloudfront_asset_host/mime_types.yml index 60db193..735ee92 100644 --- a/lib/cloudfront_asset_host/mime_types.yml +++ b/lib/cloudfront_asset_host/mime_types.yml @@ -149,3 +149,12 @@ - php - config - txt +"application/vnd.ms-fontobject": + - eot +"font/woff": + - woff +"font/truetype": + - ttf +"font/opentype": + - otf + \ No newline at end of file From 3808e694f754c21f245758d51e375f3a7e1c8b2a Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Wed, 17 Nov 2010 13:04:55 -0500 Subject: [PATCH 13/22] add bugs file --- BUGS-zeevex.txt | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 BUGS-zeevex.txt diff --git a/BUGS-zeevex.txt b/BUGS-zeevex.txt new file mode 100644 index 0000000..c9371ac --- /dev/null +++ b/BUGS-zeevex.txt @@ -0,0 +1,32 @@ +In Zeevex forked version. + +**** Stylesheet link tag :cache does not work - 2010-11-17 + + if a construct like this is used: + + <%= stylesheet_link_tag "foo", "bar", :cache => true %> + + Rails will likely throw an error like this: + + Errno::ENOENT: No such file or directory - /zeevex/sites/testengine/releases/20101117175544/public/testing/805270d93/stylesheets/web_app_theme.css 1 minute ago +test/purchases#index + + Backtrace: + + [GEM_ROOT]/gems/actionpack-2.3.10/lib/action_view/helpers/asset_tag_helper.rb:668:in `read' + +[GEM_ROOT]/gems/actionpack-2.3.10/lib/action_view/helpers/asset_tag_helper.rb:668:in `join_asset_file_contents' + +[GEM_ROOT]/gems/actionpack-2.3.10/lib/action_view/helpers/asset_tag_helper.rb:668:in `collect' + +[GEM_ROOT]/gems/actionpack-2.3.10/lib/action_view/helpers/asset_tag_helper.rb:668:in `join_asset_file_contents' + +[GEM_ROOT]/gems/actionpack-2.3.10/lib/action_view/helpers/asset_tag_helper.rb:673:in `write_asset_file_contents' + +[GEM_ROOT]/gems/actionpack-2.3.10/lib/action_view/helpers/asset_tag_helper.rb:673:in `open' + +[GEM_ROOT]/gems/actionpack-2.3.10/lib/action_view/helpers/asset_tag_helper.rb:673:in `write_asset_file_contents' + +[GEM_ROOT]/gems/actionpack-2.3.10/lib/action_view/helpers/asset_tag_helper.rb:433:in `stylesheet_link_tag' + + From 0f5b89b83480616640acd3da58a0d58d86a8230e Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Wed, 17 Nov 2010 23:35:06 -0500 Subject: [PATCH 14/22] ignore :cache=>true all.{js,css} files --- test/app/public/javascripts/.gitignore | 1 + test/app/public/stylesheets/.gitignore | 1 + 2 files changed, 2 insertions(+) create mode 100644 test/app/public/javascripts/.gitignore create mode 100644 test/app/public/stylesheets/.gitignore diff --git a/test/app/public/javascripts/.gitignore b/test/app/public/javascripts/.gitignore new file mode 100644 index 0000000..24cf3f5 --- /dev/null +++ b/test/app/public/javascripts/.gitignore @@ -0,0 +1 @@ +all.js diff --git a/test/app/public/stylesheets/.gitignore b/test/app/public/stylesheets/.gitignore new file mode 100644 index 0000000..bdf326e --- /dev/null +++ b/test/app/public/stylesheets/.gitignore @@ -0,0 +1 @@ +all.css From 2450fe26a705fd9e2b3c4320b8e0053cff2dfa3f Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Wed, 17 Nov 2010 23:46:29 -0500 Subject: [PATCH 15/22] if stylesheet or javascript include/link tags have recursive or cache => true, don't use CF asset host if any asset source name matches "^//", treat it as a full URL in compute_public_path --- lib/cloudfront_asset_host.rb | 3 + .../asset_tag_helper_ext.rb | 41 +++++++++- test/cloudfront_asset_host_test.rb | 3 + test/taghelper_ext_test.rb | 76 ++++++++++++++++++- 4 files changed, 119 insertions(+), 4 deletions(-) diff --git a/lib/cloudfront_asset_host.rb b/lib/cloudfront_asset_host.rb index cd9b7f3..7e980d9 100644 --- a/lib/cloudfront_asset_host.rb +++ b/lib/cloudfront_asset_host.rb @@ -117,6 +117,9 @@ def enable! ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :rewrite_asset_path, :cloudfront) ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :rails_asset_id, :cloudfront) ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :compute_asset_host, :cloudfront) + ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :compute_public_path, :cloudfront) + ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :stylesheet_link_tag, :cloudfront) + ActionView::Helpers::AssetTagHelper.send(:alias_method_chain, :javascript_include_tag, :cloudfront) end end diff --git a/lib/cloudfront_asset_host/asset_tag_helper_ext.rb b/lib/cloudfront_asset_host/asset_tag_helper_ext.rb index c910b0c..be5b50e 100644 --- a/lib/cloudfront_asset_host/asset_tag_helper_ext.rb +++ b/lib/cloudfront_asset_host/asset_tag_helper_ext.rb @@ -2,6 +2,27 @@ module ActionView module Helpers module AssetTagHelper + + def javascript_include_tag_with_cloudfront(*sources) + if sources.last.is_a?(::Hash) && (sources.last[:cache] || sources.last[:recursive]) + without_cloudfront do + javascript_include_tag_without_cloudfront(*sources) + end + else + javascript_include_tag_without_cloudfront(*sources) + end + end + + def stylesheet_link_tag_with_cloudfront(*sources) + if sources.last.is_a?(::Hash) && (sources.last[:cache] || sources.last[:recursive]) + without_cloudfront do + stylesheet_link_tag_without_cloudfront(*sources) + end + else + stylesheet_link_tag_without_cloudfront(*sources) + end + end + private def compute_asset_host_with_cloudfront(source) @@ -61,7 +82,25 @@ def rewrite_asset_path_with_cloudfront(source) end end end - + + def compute_public_path_with_cloudfront(source, dir, ext = nil, include_host = true) + if source =~ %r{^([-a-z]+:)?//} + return source + else + compute_public_path_without_cloudfront(source, dir, ext, include_host) + end end + + def without_cloudfront + begin + old = CloudfrontAssetHost.enabled + CloudfrontAssetHost.enabled = false + yield + ensure + CloudfrontAssetHost.enabled = old + end + end + + end end end diff --git a/test/cloudfront_asset_host_test.rb b/test/cloudfront_asset_host_test.rb index f02b5b7..9e973b8 100644 --- a/test/cloudfront_asset_host_test.rb +++ b/test/cloudfront_asset_host_test.rb @@ -15,6 +15,9 @@ class CloudfrontAssetHostTest < Test::Unit::TestCase should "add methods to asset-tag-helper" do assert ActionView::Helpers::AssetTagHelper.private_method_defined?('rails_asset_id_with_cloudfront') assert ActionView::Helpers::AssetTagHelper.private_method_defined?('rewrite_asset_path_with_cloudfront') + assert ActionView::Helpers::AssetTagHelper.private_method_defined?('compute_asset_host_with_cloudfront') + assert ActionView::Helpers::AssetTagHelper.public_method_defined?('stylesheet_link_tag_with_cloudfront') + assert ActionView::Helpers::AssetTagHelper.public_method_defined?('javascript_include_tag_with_cloudfront') end should "not enable itself by default" do diff --git a/test/taghelper_ext_test.rb b/test/taghelper_ext_test.rb index 8d0617d..9e60779 100644 --- a/test/taghelper_ext_test.rb +++ b/test/taghelper_ext_test.rb @@ -13,24 +13,94 @@ class TagHelperExtTest < ActionView::TestCase - context "A configured uploader" do + CF_TAG_PATTERN = %r{.*(src|href)="http://assethost.com/[a-fA-F0-9]+/.*} + + def is_cloudfront_tag(tag) + !! tag.match(CF_TAG_PATTERN) + end + + context "A configured uploader with no exclusions" do setup do CloudfrontAssetHost.configure do |config| config.cname = "assethost.com" config.bucket = "bucketname" config.key_prefix = "" config.s3_config = "#{RAILS_ROOT}/config/s3.yml" - config.exclude_pattern = /style/ + config.exclude_pattern = nil config.enabled = true end end - should "use assethost for included asset path" do + + teardown do + ['javascripts/all.js', 'stylesheets/all.css'].each do |name| + file = File.join(Rails.public_path, name) + File.delete(file) if File.exist?(file) + end + end + + should "use assethost for included asset path of image" do assert_equal "http://assethost.com/d41d8cd98/images/image.png", image_path("image.png") end + should "use assethost for included asset path of stylesheet" do + assert_equal "http://assethost.com/1289312826/stylesheets/style.css", stylesheet_path("style.css") + end + + should "use cloudfront javascript paths if :cache is NOT true" do + assert_match CF_TAG_PATTERN, javascript_include_tag("application.js") + end + + should "use cloudfront stylesheet paths if :cache is NOT true" do + assert_match CF_TAG_PATTERN, stylesheet_link_tag("style.css") + end + + should "use non-cloudfront javascript paths if :cache => true" do + assert_no_match CF_TAG_PATTERN, javascript_include_tag("application.js", :cache => true) + end + + should "use non-cloudfront stylesheet paths if :cache => true" do + assert_no_match CF_TAG_PATTERN, stylesheet_link_tag("style.css", :cache => true) + end + end + + context "A configured uploader excluding /style/" do + setup do + CloudfrontAssetHost.configure do |config| + config.cname = "assethost.com" + config.bucket = "bucketname" + config.key_prefix = "" + config.s3_config = "#{RAILS_ROOT}/config/s3.yml" + config.exclude_pattern = /style/ + config.enabled = true + end + end + + teardown do + ['javascripts/all.js', 'stylesheets/all.css'].each do |name| + file = File.join(Rails.public_path, name) + File.delete(file) if File.exist?(file) + end + end + should "allow standard Rails path generation for an excluded asset" do assert_match %r{^/stylesheets/style.css\?\d+$}, stylesheet_path("style.css") end + + should "use cloudfront javascript paths if :cache is NOT true" do + assert_match CF_TAG_PATTERN, javascript_include_tag("application.js") + end + + should "use non-cloudfront javascript paths if :cache => true" do + assert_no_match CF_TAG_PATTERN, javascript_include_tag("application.js", :cache => true) + end + + should "use non-cloudfront asset paths for excluded asset if :cache is NOT true" do + assert_no_match CF_TAG_PATTERN, stylesheet_link_tag("style.css") + end + + should "use non-cloudfront stylesheet paths if :cache => true" do + assert_no_match CF_TAG_PATTERN, stylesheet_link_tag("style.css", :cache => true) + end end end \ No newline at end of file From ad583c19b00c10a65672fa628005c6ce30e7caf4 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Thu, 18 Nov 2010 00:05:55 -0500 Subject: [PATCH 16/22] fix bug in tests related to timestamp/asset_id caching --- test/taghelper_ext_test.rb | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/test/taghelper_ext_test.rb b/test/taghelper_ext_test.rb index 9e60779..7236118 100644 --- a/test/taghelper_ext_test.rb +++ b/test/taghelper_ext_test.rb @@ -19,6 +19,16 @@ def is_cloudfront_tag(tag) !! tag.match(CF_TAG_PATTERN) end + def shared_teardown + ActionView::Helpers::AssetTagHelper.class_eval do + @@asset_timestamps_cache = {} + end + ['javascripts/all.js', 'stylesheets/all.css'].each do |name| + file = File.join(Rails.public_path, name) + File.delete(file) if File.exist?(file) + end + end + context "A configured uploader with no exclusions" do setup do CloudfrontAssetHost.configure do |config| @@ -33,10 +43,7 @@ def is_cloudfront_tag(tag) teardown do - ['javascripts/all.js', 'stylesheets/all.css'].each do |name| - file = File.join(Rails.public_path, name) - File.delete(file) if File.exist?(file) - end + shared_teardown end should "use assethost for included asset path of image" do @@ -44,7 +51,7 @@ def is_cloudfront_tag(tag) end should "use assethost for included asset path of stylesheet" do - assert_equal "http://assethost.com/1289312826/stylesheets/style.css", stylesheet_path("style.css") + assert_equal "http://assethost.com/ad8b295cb/stylesheets/style.css", stylesheet_path("style.css") end should "use cloudfront javascript paths if :cache is NOT true" do @@ -77,10 +84,7 @@ def is_cloudfront_tag(tag) end teardown do - ['javascripts/all.js', 'stylesheets/all.css'].each do |name| - file = File.join(Rails.public_path, name) - File.delete(file) if File.exist?(file) - end + shared_teardown end should "allow standard Rails path generation for an excluded asset" do From 824c6de354fa33f9a62fb33cdf35f8c375513e41 Mon Sep 17 00:00:00 2001 From: Alex Graven Date: Wed, 9 May 2012 11:06:32 -0400 Subject: [PATCH 17/22] Removed expiry header as requested by PT 27722733 --- lib/cloudfront_asset_host/uploader.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/cloudfront_asset_host/uploader.rb b/lib/cloudfront_asset_host/uploader.rb index b7d237a..e26c92e 100644 --- a/lib/cloudfront_asset_host/uploader.rb +++ b/lib/cloudfront_asset_host/uploader.rb @@ -110,7 +110,6 @@ def headers_for_path(extension, gzip = false) headers = { 'Content-Type' => mime, 'Cache-Control' => "max-age=#{10.years.to_i}", - 'Expires' => 1.year.from_now.utc.to_s } headers['Content-Encoding'] = 'gzip' if gzip From b3991b17e2861d716ba7333843862e8cc91c886c Mon Sep 17 00:00:00 2001 From: Sudish Joseph Date: Thu, 5 Jul 2012 17:52:54 -0400 Subject: [PATCH 18/22] Use ERB to process paperclip.yml. --- lib/cloudfront_asset_host/uploader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cloudfront_asset_host/uploader.rb b/lib/cloudfront_asset_host/uploader.rb index b7d237a..3b044d1 100644 --- a/lib/cloudfront_asset_host/uploader.rb +++ b/lib/cloudfront_asset_host/uploader.rb @@ -135,7 +135,7 @@ def s3 def config @config ||= begin - config = YAML::load_file(CloudfrontAssetHost.s3_config) + config = YAML::load(ERB.new(IO.read(CloudfrontAssetHost.s3_config)).result) config.has_key?(Rails.env) ? config[Rails.env] : config end end From 9f61e5979a28f26af8cced940578db5a02e52169 Mon Sep 17 00:00:00 2001 From: Sudish Joseph Date: Fri, 6 Jul 2012 10:23:02 -0400 Subject: [PATCH 19/22] Bumped version to z1.1.0.4 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 9084fa2..f418454 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.0 +z1.1.0.4 From ea3af99bc0adf91c035c620e435032845138c1d3 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Fri, 10 Aug 2012 12:03:44 -0400 Subject: [PATCH 20/22] fix case mismatch with right_aws --- VERSION | 2 +- lib/cloudfront_asset_host/uploader.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index f418454..43d6e42 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -z1.1.0.4 +z1.1.0.5 diff --git a/lib/cloudfront_asset_host/uploader.rb b/lib/cloudfront_asset_host/uploader.rb index cd35889..9c85939 100644 --- a/lib/cloudfront_asset_host/uploader.rb +++ b/lib/cloudfront_asset_host/uploader.rb @@ -108,10 +108,10 @@ def current_paths def headers_for_path(extension, gzip = false) mime = ext_to_mime[extension] || 'application/octet-stream' headers = { - 'Content-Type' => mime, - 'Cache-Control' => "max-age=#{10.years.to_i}", + 'content-type' => mime, + 'cache-control' => "max-age=#{10.years.to_i}", } - headers['Content-Encoding'] = 'gzip' if gzip + headers['content-encoding'] = 'gzip' if gzip headers end From 9713e708600de6535fd5707a141382a534d28322 Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 2 Jul 2013 13:11:01 -0400 Subject: [PATCH 21/22] rails3 fixes --- lib/cloudfront_asset_host.rb | 2 +- lib/cloudfront_asset_host/asset_tag_helper_ext.rb | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/cloudfront_asset_host.rb b/lib/cloudfront_asset_host.rb index 7e980d9..8cff6a5 100644 --- a/lib/cloudfront_asset_host.rb +++ b/lib/cloudfront_asset_host.rb @@ -53,7 +53,7 @@ def configure self.bucket = nil self.cname = nil self.key_prefix = "" - self.s3_config = "#{RAILS_ROOT}/config/s3.yml" + self.s3_config = "#{Rails.root}/config/s3.yml" self.s3_logging = false self.enabled = false diff --git a/lib/cloudfront_asset_host/asset_tag_helper_ext.rb b/lib/cloudfront_asset_host/asset_tag_helper_ext.rb index be5b50e..4d45cd1 100644 --- a/lib/cloudfront_asset_host/asset_tag_helper_ext.rb +++ b/lib/cloudfront_asset_host/asset_tag_helper_ext.rb @@ -47,15 +47,15 @@ def rewrite_host_and_protocol_with_cloudfront(source, has_request) end # Override asset_id so it calculates the key by md5 instead of modified-time - def rails_asset_id_with_cloudfront(source) + def rails_asset_id_with_cloudfront(source, *rails3args) if !CloudfrontAssetHost.enabled || CloudfrontAssetHost.disable_cdn_for_source?(source) - return rails_asset_id_without_cloudfront(source) + return rails_asset_id_without_cloudfront(source, *rails3args) end if @@cache_asset_timestamps && (asset_id = @@asset_timestamps_cache[source]) asset_id else - path = File.join(ASSETS_DIR, source) + path = File.join(Rails.configuration.assets_dir, source) rewrite_path = File.exist?(path) && !CloudfrontAssetHost.disable_cdn_for_source?(source) asset_id = rewrite_path ? CloudfrontAssetHost.key_for_path(path) : '' @@ -70,11 +70,11 @@ def rails_asset_id_with_cloudfront(source) end # Override asset_path so it prepends the asset_id - def rewrite_asset_path_with_cloudfront(source) + def rewrite_asset_path_with_cloudfront(source, *rails3args) if !CloudfrontAssetHost.enabled || CloudfrontAssetHost.disable_cdn_for_source?(source) - rewrite_asset_path_without_cloudfront(source) + rewrite_asset_path_without_cloudfront(source, *rails3args) else - asset_id = rails_asset_id_with_cloudfront(source) + asset_id = rails_asset_id_with_cloudfront(source, *rails3args) if asset_id.blank? source else From 36ac123c33b354c0f80e09f14b3fe10c53ab69ad Mon Sep 17 00:00:00 2001 From: Robert Sanders Date: Tue, 2 Jul 2013 13:21:40 -0400 Subject: [PATCH 22/22] bump version --- cloudfront_asset_host.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudfront_asset_host.gemspec b/cloudfront_asset_host.gemspec index 1fe8400..ec74e7d 100644 --- a/cloudfront_asset_host.gemspec +++ b/cloudfront_asset_host.gemspec @@ -5,7 +5,7 @@ Gem::Specification.new do |s| s.name = %q{cloudfront_asset_host} - s.version = "1.1.0" + s.version = "1.1.1.0" s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Menno van der Sman"]