asset_sync 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5201ed972f382f2871c2a1ac0b9a6815c09d405b
4
- data.tar.gz: 623dd4f586d82eb6603b2b536a322679d16015d4
3
+ metadata.gz: 5ea1bceb8cfa4d10954bac53e96fe5bd2129b47c
4
+ data.tar.gz: d0396ac1587c86f5ab9a192bdd847e95f45e1cdf
5
5
  SHA512:
6
- metadata.gz: 94a34b39843e11ea819de2df23a48b71ee985edd709c77eb28a085e9c0be5d8c4307e4331ca77b2fa03cef8d3ba7136c700498719f06419383cc287c67f774b6
7
- data.tar.gz: 667284efc400775f931a7164d251f087b6b61fdd8dbe2284eb8b50059ce3dd2593cf02c01ef714bd0bb4fb57f05203b25158476cfe49e00b163f6d36844bd459
6
+ metadata.gz: adb609d088e1e7a92105739ebcedd35cb2dd0dabd64bdca483e27ffe5a448fff99135d8cc6af5eae5a3ee0568147eb1927d317c9ef278eccf6dc7e23e33f1624
7
+ data.tar.gz: fa9dea180a9a7394e8a56f31dc646e138070b3d2af40ed17c858d1ef3e48c4ddecac381d17641397576477ee7d37cec26d2076e46963f2013837cb259ee0c6b0
data/Appraisals CHANGED
@@ -1,15 +1,16 @@
1
- appraise "rails-3.1" do
2
- gem "rails", "~> 3.1.0"
1
+
2
+ appraise "rails_4_1" do
3
+ gem "rails", "~> 4.1.0"
3
4
  end
4
5
 
5
- appraise "rails-3.2" do
6
- gem "rails", "~> 3.2.0"
6
+ appraise "rails_4_2" do
7
+ gem "rails", "~> 4.2.0"
7
8
  end
8
9
 
9
- appraise "rails-4.0" do
10
- gem "rails", "~> 4.0.0"
10
+ appraise "rails_5_0" do
11
+ gem "rails", "~> 5.0.0"
11
12
  end
12
13
 
13
- appraise "rails-4.1" do
14
- gem "rails", "~> 4.1.0"
14
+ appraise "rails_5_1" do
15
+ gem "rails", "~> 5.1.0"
15
16
  end
data/CHANGELOG.md CHANGED
@@ -18,6 +18,22 @@ This project adheres to [Semantic Versioning](http://semver.org/).
18
18
  - Nothing
19
19
 
20
20
 
21
+ ## [2.1.0] - 2016-05-19
22
+
23
+ ### Added
24
+
25
+ - Allow customization of regexp of files on target bucket to be marked as 'Cacheable'
26
+ so that browsers when serving the content would cache them.
27
+ The value can be set by `cache_asset_regexps`
28
+
29
+ ### Changed
30
+
31
+ - Only support mime-type >= 2.99,
32
+ which is released at the end of 2015
33
+ - Only support mactivemodel >= 4.1,
34
+ which is released in 2014
35
+
36
+
21
37
  ## [2.0.0] - 2016-12-21
22
38
 
23
39
  ### Changed
@@ -797,7 +813,8 @@ Changes:
797
813
  * Merge branch 'sinatra'
798
814
 
799
815
 
800
- [Unreleased]: https://github.com/AssetSync/asset_sync/compare/v2.0.0...HEAD
816
+ [Unreleased]: https://github.com/AssetSync/asset_sync/compare/v2.1.0...HEAD
817
+ [2.1.0]: https://github.com/AssetSync/asset_sync/compare/v2.0.0...v2.1.0
801
818
  [2.0.0]: https://github.com/AssetSync/asset_sync/compare/v1.3.0...v2.0.0
802
819
  [1.3.0]: https://github.com/AssetSync/asset_sync/compare/v1.2.1...v1.3.0
803
820
  [1.2.1]: https://github.com/AssetSync/asset_sync/compare/v1.2.0...v1.2.1
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ gemspec
3
3
  gem 'rcov', :platforms => :mri_18, :group => [:development, :test]
4
4
  gem 'simplecov', :platforms => [:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group => [:development, :test], :require => false
5
5
  gem 'jruby-openssl', :platform => :jruby
6
- gem 'rails', '4.1.5'
6
+ gem 'rails'
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
- [![Build Status](https://secure.travis-ci.org/rumblelabs/asset_sync.png)](http://travis-ci.org/rumblelabs/asset_sync)
2
- [![Code Climate](https://codeclimate.com/github/rumblelabs/asset_sync/badges/gpa.svg)](https://codeclimate.com/github/rumblelabs/asset_sync)
1
+
2
+ [![Gem Version](https://img.shields.io/gem/v/asset_sync.svg?style=flat-square)](http://badge.fury.io/rb/asset_sync)
3
+ [![Build Status](https://img.shields.io/travis/rumblelabs/asset_sync.svg?style=flat-square)](http://travis-ci.org/rumblelabs/asset_sync)
4
+ [![Code Climate](https://img.shields.io/codeclimate/github/AssetSync/asset_sync/badges/gpa.svg?style=flat-square)](https://codeclimate.com/github/AssetSync/asset_sync)
5
+
6
+ (Build Status is broken as expected until Travis is fixed by AssetSync organization owner)
7
+
3
8
 
4
9
  # Asset Sync
5
10
 
@@ -191,6 +196,12 @@ AssetSync.configure do |config|
191
196
  # Log silently. Default is `true`. But you can set it to false if more logging message are preferred.
192
197
  # Logging messages are sent to `STDOUT` when `log_silently` is falsy
193
198
  # config.log_silently = true
199
+ #
200
+ # Allow custom assets to be cacheable. Note: The base filename will be matched
201
+ # If you have an asset with name `app.0b1a4cd3.js`, only `app.0b1a4cd3` will need to be matched
202
+ # only one of `cache_asset_regexp` or `cache_asset_regexps` is allowed.
203
+ # config.cache_asset_regexp = /\.[a-f0-9]{8}$/i
204
+ # config.cache_asset_regexps = [ /\.[a-f0-9]{8}$/i, /\.[a-f0-9]{20}$/i ]
194
205
  end
195
206
  ```
196
207
 
@@ -226,6 +237,9 @@ defaults: &defaults
226
237
  # always_upload: ['application.js', 'application.css', !ruby/regexp '/application-/\d{32}\.css/']
227
238
  # Ignored files. Useful if there are some files that are created dynamically on the server and you don't want to upload on deploy.
228
239
  # ignored_files: ['ignore_me.js', !ruby/regexp '/ignore_some/\d{32}\.css/']
240
+ # Allow custom assets to be cacheable. Note: The base filename will be matched
241
+ # If you have an asset with name "app.0b1a4cd3.js", only "app.0b1a4cd3" will need to be matched
242
+ # cache_asset_regexps: ['cache_me.js', !ruby/regexp '/cache_some\.\d{8}\.css/']
229
243
 
230
244
  development:
231
245
  <<: *defaults
@@ -258,6 +272,7 @@ AssetSync.config.gzip_compression == ENV['ASSET_SYNC_GZIP_COMPRESSION']
258
272
  * **manifest**: (`true, false`) when enabled, will use the `manifest.yml` generated by Rails to get the list of local files to upload. **experimental**. **default:** `'false'`
259
273
  * **enabled**: (`true, false`) when false, will disable asset sync. **default:** `'true'` (enabled)
260
274
  * **ignored\_files**: an array of files to ignore e.g. `['ignore_me.js', %r(ignore_some/\d{32}\.css)]` Useful if there are some files that are created dynamically on the server and you don't want to upload on deploy **default**: `[]`
275
+ * **cache\_asset\_regexps**: an array of files to add cache headers e.g. `['cache_me.js', %r(cache_some\.\d{8}\.css)]` Useful if there are some files that are added to sprockets assets list and need to be set as 'Cacheable' on uploaded server. Only rails compiled regexp is matched internally **default**: `[]`
261
276
 
262
277
 
263
278
  #### Fog (Required)
@@ -329,12 +344,7 @@ IAM User Policy Example (replace "bucket_name" with your bucket):
329
344
  "Resource": "arn:aws:s3:::*"
330
345
  },
331
346
  {
332
- "Action": "s3:*",
333
- "Effect": "Allow",
334
- "Resource": "arn:aws:s3:::bucket_name"
335
- },
336
- {
337
- "Action": "s3:*",
347
+ "Action": "s3:PutObject*",
338
348
  "Effect": "Allow",
339
349
  "Resource": "arn:aws:s3:::bucket_name/*"
340
350
  }
data/Rakefile CHANGED
@@ -40,4 +40,10 @@ namespace :spec do
40
40
  end
41
41
  end
42
42
 
43
- task :default => 'spec:all'
43
+ if !ENV["APPRAISAL_INITIALIZED"] && !ENV["TRAVIS"]
44
+ task :default do
45
+ sh "appraisal install && rake appraisal spec:unit"
46
+ end
47
+ else
48
+ task default: ["spec:unit"]
49
+ end
data/asset_sync.gemspec CHANGED
@@ -6,7 +6,6 @@ require "asset_sync/version"
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "asset_sync"
8
8
  s.version = AssetSync::VERSION
9
- s.date = "2013-08-26"
10
9
  s.platform = Gem::Platform::RUBY
11
10
  s.authors = ["Simon Hamilton", "David Rice", "Phil McClure", "Toby Osbourn"]
12
11
  s.email = ["shamilton@rumblelabs.com", "me@davidjrice.co.uk", "pmcclure@rumblelabs.com", "tosbourn@rumblelabs.com"]
@@ -20,8 +19,8 @@ Gem::Specification.new do |s|
20
19
 
21
20
  s.add_dependency("fog-core")
22
21
  s.add_dependency('unf')
23
- s.add_dependency('activemodel')
24
- s.add_dependency('mime-types')
22
+ s.add_dependency('activemodel', ">= 4.1.0")
23
+ s.add_dependency('mime-types', ">= 2.99")
25
24
 
26
25
  s.add_development_dependency "rspec"
27
26
  s.add_development_dependency "bundler"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rcov", platforms: :mri_18, group: [:development, :test]
6
+ gem "simplecov", platforms: [:jruby, :mri_19, :ruby_19, :mri_20, :rbx], group: [:development, :test], require: false
7
+ gem "jruby-openssl", platform: :jruby
8
+ gem "rails", "~> 4.1.0"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rcov", platforms: :mri_18, group: [:development, :test]
6
+ gem "simplecov", platforms: [:jruby, :mri_19, :ruby_19, :mri_20, :rbx], group: [:development, :test], require: false
7
+ gem "jruby-openssl", platform: :jruby
8
+ gem "rails", "~> 4.2.0"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rcov", platforms: :mri_18, group: [:development, :test]
6
+ gem "simplecov", platforms: [:jruby, :mri_19, :ruby_19, :mri_20, :rbx], group: [:development, :test], require: false
7
+ gem "jruby-openssl", platform: :jruby
8
+ gem "rails", "~> 5.0.0"
9
+
10
+ gemspec path: "../"
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rcov", platforms: :mri_18, group: [:development, :test]
6
+ gem "simplecov", platforms: [:jruby, :mri_19, :ruby_19, :mri_20, :rbx], group: [:development, :test], require: false
7
+ gem "jruby-openssl", platform: :jruby
8
+ gem "rails", "~> 5.1.0"
9
+
10
+ gemspec path: "../"
@@ -23,6 +23,7 @@ module AssetSync
23
23
  attr_accessor :run_on_precompile
24
24
  attr_accessor :invalidate
25
25
  attr_accessor :cdn_distribution_id
26
+ attr_accessor :cache_asset_regexps
26
27
 
27
28
  # FOG configuration
28
29
  attr_accessor :fog_provider # Currently Supported ['AWS', 'Rackspace']
@@ -65,6 +66,7 @@ module AssetSync
65
66
  self.run_on_precompile = true
66
67
  self.cdn_distribution_id = nil
67
68
  self.invalidate = []
69
+ self.cache_asset_regexps = []
68
70
  load_yml! if defined?(::Rails) && yml_exists?
69
71
  end
70
72
 
@@ -114,6 +116,10 @@ module AssetSync
114
116
  fog_provider =~ /google/i
115
117
  end
116
118
 
119
+ def cache_asset_regexp=(cache_asset_regexp)
120
+ self.cache_asset_regexps = [cache_asset_regexp]
121
+ end
122
+
117
123
  def yml_exists?
118
124
  defined?(::Rails.root) ? File.exist?(self.yml_path) : false
119
125
  end
@@ -160,6 +166,7 @@ module AssetSync
160
166
  self.run_on_precompile = yml["run_on_precompile"] if yml.has_key?("run_on_precompile")
161
167
  self.invalidate = yml["invalidate"] if yml.has_key?("invalidate")
162
168
  self.cdn_distribution_id = yml['cdn_distribution_id'] if yml.has_key?("cdn_distribution_id")
169
+ self.cache_asset_regexps = yml['cache_asset_regexps'] if yml.has_key?("cache_asset_regexps")
163
170
 
164
171
  # TODO deprecate the other old style config settings. FML.
165
172
  self.aws_access_key_id = yml["aws_access_key"] if yml.has_key?("aws_access_key")
@@ -5,13 +5,15 @@ module AssetSync
5
5
 
6
6
  def self.lookup(ext)
7
7
 
8
- if defined?(Mime::Type)
9
- Mime::Type.lookup_by_extension(ext)
10
- elsif defined?(Rack::Mime)
8
+ if defined?(::MIME::Types)
9
+ ::MIME::Types.type_for(ext).first
10
+ elsif defined?(::Mime::Type)
11
+ ::Mime::Type.lookup_by_extension(ext)
12
+ elsif defined?(::Rack::Mime)
11
13
  ext_with_dot = ".#{ext}"
12
- Rack::Mime.mime_type(ext_with_dot)
14
+ ::Rack::Mime.mime_type(ext_with_dot)
13
15
  else
14
- ::MIME::Types.type_for(ext).first
16
+ raise "No library found for mime type lookup"
15
17
  end
16
18
 
17
19
  end
@@ -1,8 +1,11 @@
1
1
  require "fog/core"
2
2
 
3
+ require "asset_sync/multi_mime"
4
+
3
5
  module AssetSync
4
6
  class Storage
5
7
  REGEXP_FINGERPRINTED_FILES = /^(.*)\/([^-]+)-[^\.]+\.([^\.]+)$/
8
+ REGEXP_ASSETS_TO_CACHE_CONTROL = /-[0-9a-fA-F]{32,}$/
6
9
 
7
10
  class BucketNotFound < StandardError;
8
11
  end
@@ -126,7 +129,9 @@ module AssetSync
126
129
 
127
130
  uncompressed_filename = f.sub(/\.gz\z/, '')
128
131
  basename = File.basename(uncompressed_filename, File.extname(uncompressed_filename))
129
- if /-[0-9a-fA-F]{32,}$/.match(basename)
132
+
133
+ assets_to_cache_control = Regexp.union([REGEXP_ASSETS_TO_CACHE_CONTROL] | config.cache_asset_regexps).source
134
+ if basename.match(Regexp.new(assets_to_cache_control)).present?
130
135
  file.merge!({
131
136
  :cache_control => "public, max-age=#{one_year}",
132
137
  :expires => CGI.rfc1123_date(Time.now + one_year)
@@ -1,3 +1,3 @@
1
1
  module AssetSync
2
- VERSION = "2.0.0"
2
+ VERSION = "2.1.0"
3
3
  end
@@ -42,4 +42,9 @@ AssetSync.configure do |config|
42
42
  # Log silently. Default is `true`. But you can set it to false if more logging message are preferred.
43
43
  # Logging messages are sent to `STDOUT` when `log_silently` is falsy
44
44
  # config.log_silently = true
45
+ #
46
+ # Allow custom assets to be cacheable. Note: The base filename will be matched
47
+ # If you have an asset with name `app.0ba4d3.js`, only `app.0ba4d3` will need to be matched
48
+ # config.cache_asset_regexps = [ /\.[a-f0-9]{8}$/i, /\.[a-f0-9]{20}$/i ]
49
+ # config.cache_asset_regexp = /\.[a-f0-9]{8}$/i
45
50
  end
@@ -26,6 +26,8 @@ defaults: &defaults
26
26
  # gzip_compression: true
27
27
  # Fail silently. Useful for environments such as Heroku
28
28
  # fail_silently: true
29
+ # Allow custom assets to be cacheable. Note: The base filename will be matched
30
+ # cache_asset_regexps: ['cache_me.js', !ruby/regexp '/cache_some\.\d{8}\.css/']
29
31
 
30
32
  development:
31
33
  <<: *defaults
@@ -5,6 +5,7 @@ defaults: &defaults
5
5
  region: "eu-west-1"
6
6
  run_on_precompile: false
7
7
  fog_path_style: true
8
+ cache_asset_regexps: ['cache_me.js', !ruby/regexp '/cache_some\.\d{8}\.css/']
8
9
 
9
10
  development:
10
11
  <<: *defaults
@@ -90,6 +90,10 @@ describe AssetSync do
90
90
  it "should default invalidate to empty array" do
91
91
  expect(AssetSync.config.invalidate).to eq([])
92
92
  end
93
+
94
+ it "should default asset_regexps to empty array" do
95
+ expect(AssetSync.config.cache_asset_regexps).to eq([])
96
+ end
93
97
  end
94
98
 
95
99
  describe 'from yml' do
@@ -138,6 +142,10 @@ describe AssetSync do
138
142
  it "should default manifest to false" do
139
143
  expect(AssetSync.config.manifest).to be_falsey
140
144
  end
145
+
146
+ it "should default asset_regexps to match regexps" do
147
+ expect(AssetSync.config.cache_asset_regexps).to eq(['cache_me.js', /cache_some\.\d{8}\.css/])
148
+ end
141
149
  end
142
150
 
143
151
  describe 'from yml, exporting to a mobile hybrid development directory' do
@@ -247,6 +255,24 @@ describe AssetSync do
247
255
  expect(AssetSync.config.manifest_path).to match(/public\/custom_assets\/manifest.yml/)
248
256
  end
249
257
  end
258
+
259
+ describe 'with cache_asset_regexps' do
260
+ before(:each) do
261
+ AssetSync.config = AssetSync::Config.new
262
+ end
263
+
264
+ it "config.cache_asset_regexp should set cache_asset_regexps" do
265
+ AssetSync.config.cache_asset_regexp = /\.[a-f0-9]{8}/i
266
+ expect(AssetSync.config.cache_asset_regexps.size).to eq(1)
267
+ expect(AssetSync.config.cache_asset_regexps[0]).to eq(/\.[a-f0-9]{8}/i)
268
+ end
269
+
270
+ it "set cache_asset_regexps" do
271
+ AssetSync.config.cache_asset_regexps = ["app.abc123.js", /\.[a-f0-9]{10}/i]
272
+ expect(AssetSync.config.cache_asset_regexps.size).to eq(2)
273
+ expect(AssetSync.config.cache_asset_regexps).to eq(["app.abc123.js", /\.[a-f0-9]{10}/i])
274
+ end
275
+ end
250
276
 
251
277
  describe 'with invalid yml' do
252
278
  before(:each) do
@@ -3,15 +3,39 @@ require File.dirname(__FILE__) + '/../spec_helper'
3
3
  describe AssetSync::MultiMime do
4
4
 
5
5
  before(:each) do
6
+ # Object#remove_const does not remove the loaded
7
+ # file from the $" variable
8
+ #
9
+ # So we need do both
10
+ #
11
+ # 1. Remove constant(s) to avoid warning messages
12
+ # 2. Remove loaded file(s)
6
13
  Object.send(:remove_const, :Rails) if defined?(Rails)
7
14
  Object.send(:remove_const, :Mime) if defined?(Mime)
8
15
  Object.send(:remove_const, :Rack) if defined?(Rack)
16
+ Object.send(:remove_const, :MIME) if defined?(MIME)
17
+
18
+ $".grep(/mime\//).each do |file_path|
19
+ $".delete(file_path)
20
+ end
9
21
  end
10
22
 
11
23
  after(:each) do
24
+ # Object#remove_const does not remove the loaded
25
+ # file from the $" variable
26
+ #
27
+ # So we need do both
28
+ #
29
+ # 1. Remove constant(s) to avoid warning messages
30
+ # 2. Remove loaded file(s)
12
31
  Object.send(:remove_const, :Rails) if defined?(Rails)
13
32
  Object.send(:remove_const, :Mime) if defined?(Mime)
14
33
  Object.send(:remove_const, :Rack) if defined?(Rack)
34
+ Object.send(:remove_const, :MIME) if defined?(MIME)
35
+
36
+ $".grep(/mime\//).each do |file_path|
37
+ $".delete(file_path)
38
+ end
15
39
  end
16
40
 
17
41
  after(:all) do
@@ -98,7 +98,17 @@ describe AssetSync::Storage do
98
98
  'dir1/dir2/file2-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg',
99
99
  'dir1/dir2/file2-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg.gz'
100
100
  ]
101
+ local_files += [
102
+ 'file3.png',
103
+ 'file3.zabcde.png',
104
+ 'file3.zab1cde2.png',
105
+ 'file3.abcdef.jpg',
106
+ 'file3.abc1def2.jpg',
107
+ 'dir3/file3.abc123.jpg',
108
+ 'dir3/file3.abcdf123.jpg'
109
+ ]
101
110
  remote_files = []
111
+ @config.cache_asset_regexps = [/\.[a-f0-9]{6}$/i, /\.[a-f0-9]{8}$/i]
102
112
  storage = AssetSync::Storage.new(@config)
103
113
  allow(storage).to receive(:local_files).and_return(local_files)
104
114
  allow(storage).to receive(:get_remote_files).and_return(remote_files)
@@ -107,17 +117,24 @@ describe AssetSync::Storage do
107
117
 
108
118
  def check_file(file)
109
119
  case file[:key]
110
- when 'file1.jpg'
111
- when 'dir1/dir2/file2.jpg'
120
+ when 'file1.jpg',
121
+ 'dir1/dir2/file2.jpg',
122
+ 'file3.png',
123
+ 'file3.zabcde.png',
124
+ 'file3.zab1cde2.png'
112
125
  !expect(file).not_to include(:cache_control, :expires)
113
- when 'file1-1234567890abcdef1234567890abcdef.jpg'
114
- when 'file1-1234567890abcdef1234567890abcdef.jpg.gz'
115
- when 'file1-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg'
116
- when 'file1-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg.gz'
117
- when 'dir1/dir2/file2-1234567890abcdef1234567890abcdef.jpg'
118
- when 'dir1/dir2/file2-1234567890abcdef1234567890abcdef.jpg.gz'
119
- when 'dir1/dir2/file2-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg'
120
- when 'dir1/dir2/file2-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg.gz'
126
+ when 'file1-1234567890abcdef1234567890abcdef.jpg',
127
+ 'file1-1234567890abcdef1234567890abcdef.jpg.gz',
128
+ 'file1-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg',
129
+ 'file1-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg.gz',
130
+ 'dir1/dir2/file2-1234567890abcdef1234567890abcdef.jpg',
131
+ 'dir1/dir2/file2-1234567890abcdef1234567890abcdef.jpg.gz',
132
+ 'dir1/dir2/file2-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg',
133
+ 'dir1/dir2/file2-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.jpg.gz',
134
+ 'file3.abcdef.jpg',
135
+ 'file3.abc1def2.jpg',
136
+ 'dir3/file3.abc123.jpg',
137
+ 'dir3/file3.abcdf123.jpg'
121
138
  expect(file).to include(:cache_control, :expires)
122
139
  else
123
140
  fail
@@ -160,9 +177,12 @@ describe AssetSync::Storage do
160
177
  # 1. Remove constant(s) to avoid warning messages
161
178
  # 2. Remove loaded file(s)
162
179
  Object.send(:remove_const, :MIME) if defined?(MIME)
163
- mime_types = $".grep(/mime\/types/).first
164
- $".delete(mime_types)
180
+
181
+ $".grep(/mime\//).each do |file_path|
182
+ $".delete(file_path)
183
+ end
165
184
  require 'mime/types'
185
+
166
186
  @config = AssetSync::Config.new
167
187
  end
168
188
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asset_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Hamilton
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-08-26 00:00:00.000000000 Z
14
+ date: 2017-05-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: fog-core
@@ -47,28 +47,28 @@ dependencies:
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: '0'
50
+ version: 4.1.0
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: '0'
57
+ version: 4.1.0
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: mime-types
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: '0'
64
+ version: '2.99'
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - ">="
70
70
  - !ruby/object:Gem::Version
71
- version: '0'
71
+ version: '2.99'
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: rspec
74
74
  requirement: !ruby/object:Gem::Requirement
@@ -174,10 +174,10 @@ files:
174
174
  - UPGRADING.md
175
175
  - asset_sync.gemspec
176
176
  - docs/heroku.md
177
- - gemfiles/rails_3.1.gemfile
178
- - gemfiles/rails_3.2.gemfile
179
- - gemfiles/rails_4.0.gemfile
180
- - gemfiles/rails_4.1.gemfile
177
+ - gemfiles/rails_4_1.gemfile
178
+ - gemfiles/rails_4_2.gemfile
179
+ - gemfiles/rails_5_0.gemfile
180
+ - gemfiles/rails_5_1.gemfile
181
181
  - lib/asset_sync.rb
182
182
  - lib/asset_sync/asset_sync.rb
183
183
  - lib/asset_sync/config.rb
@@ -224,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
224
  version: '0'
225
225
  requirements: []
226
226
  rubyforge_project: asset_sync
227
- rubygems_version: 2.5.2
227
+ rubygems_version: 2.6.12
228
228
  signing_key:
229
229
  specification_version: 4
230
230
  summary: Synchronises Assets in a Rails 3 application and Amazon S3/Cloudfront and
@@ -244,4 +244,3 @@ test_files:
244
244
  - spec/unit/rackspace_spec.rb
245
245
  - spec/unit/railsless_spec.rb
246
246
  - spec/unit/storage_spec.rb
247
- has_rdoc:
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rcov", :platforms=>:mri_18, :group=>[:development, :test]
6
- gem "simplecov", :platforms=>[:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group=>[:development, :test], :require=>false
7
- gem "jruby-openssl", :platform=>:jruby
8
- gem "rails", "~> 3.1.0"
9
-
10
- gemspec :path=>"../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rcov", :platforms=>:mri_18, :group=>[:development, :test]
6
- gem "simplecov", :platforms=>[:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group=>[:development, :test], :require=>false
7
- gem "jruby-openssl", :platform=>:jruby
8
- gem "rails", "~> 3.2.0"
9
-
10
- gemspec :path=>"../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rcov", :platforms=>:mri_18, :group=>[:development, :test]
6
- gem "simplecov", :platforms=>[:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group=>[:development, :test], :require=>false
7
- gem "jruby-openssl", :platform=>:jruby
8
- gem "rails", "~> 4.0.0"
9
-
10
- gemspec :path=>"../"
@@ -1,10 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rcov", :platforms => :mri_18, :group => [:development, :test]
6
- gem "simplecov", :platforms => [:jruby, :mri_19, :ruby_19, :mri_20, :rbx], :group => [:development, :test], :require => false
7
- gem "jruby-openssl", :platform => :jruby
8
- gem "rails", "~> 4.1.0"
9
-
10
- gemspec :path => "../"