asset_sync 2.8.2 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -11
- data/Appraisals +1 -5
- data/CHANGELOG.md +10 -1
- data/README.md +5 -1
- data/lib/asset_sync/config.rb +4 -0
- data/lib/asset_sync/engine.rb +1 -0
- data/lib/asset_sync/storage.rb +14 -4
- data/lib/asset_sync/version.rb +1 -1
- data/lib/generators/asset_sync/templates/asset_sync.rb +3 -0
- data/spec/unit/storage_spec.rb +17 -1
- metadata +2 -3
- data/gemfiles/rails_4_2.gemfile +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76d23b058e01eb57bee9ae81d0a64eb9c36a9f46b00d33909ba41f0f19bb1665
|
4
|
+
data.tar.gz: d3693e883569e95091090c80a8d0d071e90c7d59f2763d690adf837ab14a5388
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77a8932affc52ed2f4bdedd6e3328ed84ad5442e109959f952cb09aa0414354ab263b8f0a381f678b87c29545668a052767d78ce0b26bd2443f8d80e919e18b3
|
7
|
+
data.tar.gz: 52d878bc1cc42e22d171884cb794a6c4479625a7f4184de982b3956e4d614d7d365091ee0273b406f2b81b619a093d747c1464b7b81beab1f96791536e817836
|
data/.travis.yml
CHANGED
@@ -14,7 +14,6 @@ rvm:
|
|
14
14
|
- jruby
|
15
15
|
- jruby-head
|
16
16
|
gemfile:
|
17
|
-
- gemfiles/rails_4_2.gemfile
|
18
17
|
- gemfiles/rails_5_0.gemfile
|
19
18
|
- gemfiles/rails_5_1.gemfile
|
20
19
|
- gemfiles/rails_5_2.gemfile
|
@@ -33,16 +32,6 @@ env:
|
|
33
32
|
matrix:
|
34
33
|
fast_finish: true
|
35
34
|
allow_failures:
|
36
|
-
# bundler version conflict
|
37
|
-
- rvm: 2.3
|
38
|
-
gemfile: gemfiles/rails_4_2.gemfile
|
39
|
-
- rvm: 2.4
|
40
|
-
gemfile: gemfiles/rails_4_2.gemfile
|
41
|
-
- rvm: 2.5
|
42
|
-
gemfile: gemfiles/rails_4_2.gemfile
|
43
|
-
- rvm: jruby
|
44
|
-
gemfile: gemfiles/rails_4_2.gemfile
|
45
|
-
- gemfile: gemfiles/rails_6_0.gemfile
|
46
35
|
- rvm: ruby-head
|
47
36
|
- rvm: jruby-head
|
48
37
|
exclude:
|
data/Appraisals
CHANGED
@@ -1,8 +1,4 @@
|
|
1
1
|
|
2
|
-
appraise "rails_4_2" do
|
3
|
-
gem "rails", "~> 4.2.0"
|
4
|
-
end
|
5
|
-
|
6
2
|
appraise "rails_5_0" do
|
7
3
|
gem "rails", "~> 5.0.0"
|
8
4
|
end
|
@@ -16,5 +12,5 @@ appraise "rails_5_2" do
|
|
16
12
|
end
|
17
13
|
|
18
14
|
appraise "rails_6_0" do
|
19
|
-
gem "rails", "~> 6.0.0
|
15
|
+
gem "rails", "~> 6.0.0"
|
20
16
|
end
|
data/CHANGELOG.md
CHANGED
@@ -18,6 +18,14 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
18
18
|
- Nothing
|
19
19
|
|
20
20
|
|
21
|
+
## [2.9.0] - 2020-01-15
|
22
|
+
|
23
|
+
### Added
|
24
|
+
|
25
|
+
- Add option `concurrent_uploads` to improve speed of uploading
|
26
|
+
(https://github.com/AssetSync/asset_sync/pull/393)
|
27
|
+
|
28
|
+
|
21
29
|
## [2.8.2] - 2019-12-27
|
22
30
|
|
23
31
|
### Changed
|
@@ -930,7 +938,8 @@ Changes:
|
|
930
938
|
* Merge branch 'sinatra'
|
931
939
|
|
932
940
|
|
933
|
-
[Unreleased]: https://github.com/AssetSync/asset_sync/compare/v2.
|
941
|
+
[Unreleased]: https://github.com/AssetSync/asset_sync/compare/v2.9.0...HEAD
|
942
|
+
[2.9.0]: https://github.com/AssetSync/asset_sync/compare/v2.8.2...v2.9.0
|
934
943
|
[2.8.2]: https://github.com/AssetSync/asset_sync/compare/v2.8.1...v2.8.2
|
935
944
|
[2.8.1]: https://github.com/AssetSync/asset_sync/compare/v2.8.0...v2.8.1
|
936
945
|
[2.8.0]: https://github.com/AssetSync/asset_sync/compare/v2.7.0...v2.8.0
|
data/README.md
CHANGED
@@ -141,7 +141,7 @@ The Built-in Initializer will configure **AssetSync** based on the contents of y
|
|
141
141
|
|
142
142
|
Add your configuration details to **heroku**
|
143
143
|
|
144
|
-
|
144
|
+
``` bash
|
145
145
|
heroku config:add AWS_ACCESS_KEY_ID=xxxx
|
146
146
|
heroku config:add AWS_SECRET_ACCESS_KEY=xxxx
|
147
147
|
heroku config:add FOG_DIRECTORY=xxxx
|
@@ -242,6 +242,9 @@ AssetSync.configure do |config|
|
|
242
242
|
# Upload the manifest file also.
|
243
243
|
# config.include_manifest = false
|
244
244
|
#
|
245
|
+
# Upload files concurrently
|
246
|
+
# config.concurrent_uploads = false
|
247
|
+
#
|
245
248
|
# Fail silently. Useful for environments such as Heroku
|
246
249
|
# config.fail_silently = true
|
247
250
|
#
|
@@ -338,6 +341,7 @@ AssetSync.config.gzip_compression == ENV['ASSET_SYNC_GZIP_COMPRESSION']
|
|
338
341
|
* **gzip\_compression**: (`true, false`) when enabled, will automatically replace files that have a gzip compressed equivalent with the compressed version. **default:** `'false'`
|
339
342
|
* **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'`
|
340
343
|
* **include_manifest**: (`true, false`) when enabled, will upload the `manifest.yml` generated by Rails. **default:** `'false'`
|
344
|
+
* **concurrent_uploads**: (`true, false`) when enabled, will upload the files in different Threads, this greatly improves the upload speed. **default:** `'false'`
|
341
345
|
* **enabled**: (`true, false`) when false, will disable asset sync. **default:** `'true'` (enabled)
|
342
346
|
* **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**: `[]`
|
343
347
|
* **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**: `[]`
|
data/lib/asset_sync/config.rb
CHANGED
@@ -26,6 +26,7 @@ module AssetSync
|
|
26
26
|
attr_accessor :cdn_distribution_id
|
27
27
|
attr_accessor :cache_asset_regexps
|
28
28
|
attr_accessor :include_manifest
|
29
|
+
attr_accessor :concurrent_uploads
|
29
30
|
attr_writer :public_path
|
30
31
|
|
31
32
|
# FOG configuration
|
@@ -66,6 +67,7 @@ module AssetSync
|
|
66
67
|
validates :google_storage_access_key_id, :presence => true, :if => :google_interop?
|
67
68
|
validates :google_json_key_location, :presence => true, :if => :google_service_account?
|
68
69
|
validates :google_project, :presence => true, :if => :google_service_account?
|
70
|
+
validates :concurrent_uploads, :inclusion => { :in => [true, false] }
|
69
71
|
|
70
72
|
def initialize
|
71
73
|
self.fog_region = nil
|
@@ -84,6 +86,7 @@ module AssetSync
|
|
84
86
|
self.invalidate = []
|
85
87
|
self.cache_asset_regexps = []
|
86
88
|
self.include_manifest = false
|
89
|
+
self.concurrent_uploads = false
|
87
90
|
@additional_local_file_paths_procs = []
|
88
91
|
|
89
92
|
load_yml! if defined?(::Rails) && yml_exists?
|
@@ -206,6 +209,7 @@ module AssetSync
|
|
206
209
|
self.cdn_distribution_id = yml['cdn_distribution_id'] if yml.has_key?("cdn_distribution_id")
|
207
210
|
self.cache_asset_regexps = yml['cache_asset_regexps'] if yml.has_key?("cache_asset_regexps")
|
208
211
|
self.include_manifest = yml['include_manifest'] if yml.has_key?("include_manifest")
|
212
|
+
self.concurrent_uploads = yml['concurrent_uploads'] if yml.has_key?('concurrent_uploads')
|
209
213
|
|
210
214
|
self.azure_storage_account_name = yml['azure_storage_account_name'] if yml.has_key?("azure_storage_account_name")
|
211
215
|
self.azure_storage_access_key = yml['azure_storage_access_key'] if yml.has_key?("azure_storage_access_key")
|
data/lib/asset_sync/engine.rb
CHANGED
@@ -42,6 +42,7 @@ module AssetSync
|
|
42
42
|
config.gzip_compression = (ENV['ASSET_SYNC_GZIP_COMPRESSION'] == 'true') if ENV.has_key?('ASSET_SYNC_GZIP_COMPRESSION')
|
43
43
|
config.manifest = (ENV['ASSET_SYNC_MANIFEST'] == 'true') if ENV.has_key?('ASSET_SYNC_MANIFEST')
|
44
44
|
config.include_manifest = (ENV['ASSET_SYNC_INCLUDE_MANIFEST'] == 'true') if ENV.has_key?('ASSET_SYNC_INCLUDE_MANIFEST')
|
45
|
+
config.concurrent_uploads = (ENV['ASSET_SYNC_CONCURRENT_UPLOADS'] == 'true') if ENV.has_key?('ASSET_SYNC_CONCURRENT_UPLOADS')
|
45
46
|
end
|
46
47
|
|
47
48
|
config.prefix = ENV['ASSET_SYNC_PREFIX'] if ENV.has_key?('ASSET_SYNC_PREFIX')
|
data/lib/asset_sync/storage.rb
CHANGED
@@ -249,10 +249,20 @@ module AssetSync
|
|
249
249
|
local_files_to_upload = local_files - ignored_files - remote_files + always_upload_files
|
250
250
|
local_files_to_upload = (local_files_to_upload + get_non_fingerprinted(local_files_to_upload)).uniq
|
251
251
|
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
252
|
+
if self.config.concurrent_uploads
|
253
|
+
threads = ThreadGroup.new
|
254
|
+
# Upload new files
|
255
|
+
local_files_to_upload.each do |f|
|
256
|
+
next unless File.file? "#{path}/#{f}" # Only files.
|
257
|
+
threads.add(Thread.new { upload_file f })
|
258
|
+
end
|
259
|
+
sleep 1 while threads.list.any? # wait for threads to finish uploading
|
260
|
+
else
|
261
|
+
# Upload new files
|
262
|
+
local_files_to_upload.each do |f|
|
263
|
+
next unless File.file? "#{path}/#{f}" # Only files.
|
264
|
+
upload_file f
|
265
|
+
end
|
256
266
|
end
|
257
267
|
|
258
268
|
if self.config.cdn_distribution_id && files_to_invalidate.any?
|
data/lib/asset_sync/version.rb
CHANGED
@@ -63,6 +63,9 @@ if defined?(AssetSync)
|
|
63
63
|
# Upload the manifest file also.
|
64
64
|
# config.include_manifest = false
|
65
65
|
#
|
66
|
+
# Upload files concurrently
|
67
|
+
# config.concurrent_uploads = false
|
68
|
+
#
|
66
69
|
# Fail silently. Useful for environments such as Heroku
|
67
70
|
# config.fail_silently = true
|
68
71
|
#
|
data/spec/unit/storage_spec.rb
CHANGED
@@ -54,6 +54,22 @@ describe AssetSync::Storage do
|
|
54
54
|
storage.upload_files
|
55
55
|
end
|
56
56
|
|
57
|
+
it 'should upload files concurrently if enabled' do
|
58
|
+
@config.concurrent_uploads = true
|
59
|
+
storage = AssetSync::Storage.new(@config)
|
60
|
+
|
61
|
+
allow(storage).to receive(:get_local_files).and_return(@local_files)
|
62
|
+
allow(storage).to receive(:get_remote_files).and_return(@remote_files)
|
63
|
+
allow(File).to receive(:file?).and_return(true) # Pretend they all exist
|
64
|
+
|
65
|
+
expect(Thread).to receive(:new).exactly(3).times.and_call_original
|
66
|
+
(@local_files - @remote_files + storage.always_upload_files).each do |file|
|
67
|
+
expect(storage).to receive(:upload_file).with(file)
|
68
|
+
end
|
69
|
+
|
70
|
+
storage.upload_files
|
71
|
+
end
|
72
|
+
|
57
73
|
it 'should upload updated non-fingerprinted files' do
|
58
74
|
@local_files = [
|
59
75
|
'public/image.png',
|
@@ -125,7 +141,7 @@ describe AssetSync::Storage do
|
|
125
141
|
end
|
126
142
|
end
|
127
143
|
|
128
|
-
it 'should upload additonal
|
144
|
+
it 'should upload additonal files' do
|
129
145
|
@local_files = [
|
130
146
|
'public/image.png',
|
131
147
|
'public/image-82389298328.png',
|
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.
|
4
|
+
version: 2.9.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:
|
14
|
+
date: 2020-01-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: fog-core
|
@@ -203,7 +203,6 @@ files:
|
|
203
203
|
- UPGRADING.md
|
204
204
|
- asset_sync.gemspec
|
205
205
|
- docs/heroku.md
|
206
|
-
- gemfiles/rails_4_2.gemfile
|
207
206
|
- gemfiles/rails_5_0.gemfile
|
208
207
|
- gemfiles/rails_5_1.gemfile
|
209
208
|
- gemfiles/rails_5_2.gemfile
|
data/gemfiles/rails_4_2.gemfile
DELETED
@@ -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.2.0"
|
9
|
-
|
10
|
-
gemspec path: "../"
|