asset_sync 2.8.2 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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: "../"
|