jekyll-s3 3.1.2 → 3.2.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5ad1b011484b20902e39cb8f5b8efd4048cee3da
4
+ data.tar.gz: 80f7697bcbc82520378a00eef6aca4b57c54d4bf
5
+ SHA512:
6
+ metadata.gz: 709e15a09766c29914b57625a6b90e9ae8e8c52ee4b8ec2c225fe6ee286ccc508399ee43b466d3b40c12bbbeea7ef1fee072148c5f92b7ac17647812974aef16
7
+ data.tar.gz: 73146c0d5b31920c9920374f8f7404d54f55cb0611c9aa549eaaffdd30df5cc8bb35178aaf6993e8dbdb5e9737bc75dac2648e3ed35f29a17c22c9370b96473e
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jekyll-s3 (3.1.2)
4
+ jekyll-s3 (3.2.0)
5
5
  aws-sdk (~> 1.8.5)
6
6
  configure-s3-website (~> 1)
7
7
  erubis (~> 2.7.0)
@@ -2,6 +2,10 @@
2
2
 
3
3
  This project uses [Semantic Versioning](http://semver.org).
4
4
 
5
+ ## 3.2.0
6
+
7
+ * Delete files in parallel
8
+
5
9
  ## 3.1.2
6
10
 
7
11
  * VCR is not threadsafe. Because of this, disable parallelism during tests.
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "jekyll-s3"
6
- s.version = "3.1.2"
6
+ s.version = "3.2.0"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Philippe Creux", "Lauri Lehmijoki"]
9
9
  s.email = ["pcreux@gmail.com", "lauri.lehmijoki@iki.fi"]
@@ -12,7 +12,7 @@ module Jekyll
12
12
  end
13
13
  end
14
14
 
15
- %w{errors upload uploader cli config_loader retry keyboard diff_helper endpoint}.each do |file|
15
+ %w{errors upload uploader cli config_loader retry keyboard diff_helper endpoint parallelism}.each do |file|
16
16
  require File.dirname(__FILE__) + "/jekyll-s3/#{file}"
17
17
  end
18
18
 
@@ -4,7 +4,7 @@ module Jekyll
4
4
  def self.if_user_confirms_delete(to_delete, standard_input=STDIN)
5
5
  delete_all = false
6
6
  keep_all = false
7
- to_delete.each do |f|
7
+ confirmed_deletes = to_delete.map do |f|
8
8
  delete = false
9
9
  keep = false
10
10
  until delete || delete_all || keep || keep_all
@@ -17,9 +17,12 @@ module Jekyll
17
17
  end
18
18
  end
19
19
  if (delete_all || delete) && !(keep_all || keep)
20
- yield f
20
+ f
21
21
  end
22
- end
22
+ end.select { |f| f }
23
+ Parallelism.each_in_parallel_or_sequentially(confirmed_deletes) { |f|
24
+ yield f
25
+ }
23
26
  end
24
27
  end
25
28
  end
@@ -0,0 +1,20 @@
1
+ module Jekyll
2
+ module S3
3
+ class Parallelism
4
+ def self.each_in_parallel_or_sequentially(items, &operation)
5
+ if ENV['disable_parallel_processing']
6
+ items.each do |item|
7
+ operation.call item
8
+ end
9
+ else
10
+ threads = items.map do |item|
11
+ Thread.new(item) { |item|
12
+ operation.call item
13
+ }
14
+ end
15
+ threads.each { |thread| thread.join }
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -60,21 +60,9 @@ module Jekyll
60
60
  end
61
61
 
62
62
  def self.upload_in_parallel_or_sequentially(files_to_upload, s3, config, site_dir)
63
- do_upload_file = lambda { |f|
63
+ Parallelism.each_in_parallel_or_sequentially(files_to_upload) { |f|
64
64
  upload_file(f, s3, config, site_dir)
65
65
  }
66
- if ENV['disable_parallel_processing']
67
- files_to_upload.each do |f|
68
- do_upload_file.call f
69
- end
70
- else
71
- threads = files_to_upload.map do |f|
72
- Thread.new(f) { |f|
73
- do_upload_file.call f
74
- }
75
- end
76
- threads.each { |thread| thread.join }
77
- end
78
66
  end
79
67
 
80
68
  def self.upload_file(file, s3, config, site_dir)
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe Jekyll::S3::Parallelism do
4
+ context 'user has disabled parallelism' do
5
+ before(:all) {
6
+ @original_disable_state = ENV['disable_parallel_processing']
7
+ ENV['disable_parallel_processing'] = 'true'
8
+ }
9
+
10
+ after(:all) {
11
+ ENV['disable_parallel_processing'] = @original_disable_state
12
+ }
13
+
14
+ it 'runs things sequentially' do
15
+ ints = (0..100).to_a
16
+ after_processing = []
17
+ Jekyll::S3::Parallelism.each_in_parallel_or_sequentially(ints) { |int|
18
+ after_processing << int
19
+ }
20
+ ints.should eq(after_processing)
21
+ end
22
+ end
23
+
24
+ context 'user has not disabled parallelism' do
25
+ before(:all) {
26
+ @original_disable_state = ENV['disable_parallel_processing']
27
+ ENV.delete 'disable_parallel_processing'
28
+ }
29
+
30
+ after(:all) {
31
+ ENV['disable_parallel_processing'] = @original_disable_state if @original_disable_state
32
+ }
33
+
34
+ it 'runs things in parallel' do
35
+ ints = (0..100).to_a
36
+ after_processing = []
37
+ Jekyll::S3::Parallelism.each_in_parallel_or_sequentially(ints) { |int|
38
+ after_processing << int
39
+ }
40
+ ints.should_not eq(after_processing) # Parallel processing introduces non-determinism
41
+ end
42
+ end
43
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.2
5
- prerelease:
4
+ version: 3.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Philippe Creux
@@ -15,7 +14,6 @@ dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: aws-sdk
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ~>
29
26
  - !ruby/object:Gem::Version
@@ -31,7 +28,6 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: filey-diff
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
32
  - - ~>
37
33
  - !ruby/object:Gem::Version
@@ -39,7 +35,6 @@ dependencies:
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
39
  - - ~>
45
40
  - !ruby/object:Gem::Version
@@ -47,7 +42,6 @@ dependencies:
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: simple-cloudfront-invalidator
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - ~>
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :runtime
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - ~>
61
54
  - !ruby/object:Gem::Version
@@ -63,7 +56,6 @@ dependencies:
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: erubis
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
60
  - - ~>
69
61
  - !ruby/object:Gem::Version
@@ -71,7 +63,6 @@ dependencies:
71
63
  type: :runtime
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
67
  - - ~>
77
68
  - !ruby/object:Gem::Version
@@ -79,7 +70,6 @@ dependencies:
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: mime-types
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
74
  - - '='
85
75
  - !ruby/object:Gem::Version
@@ -87,7 +77,6 @@ dependencies:
87
77
  type: :runtime
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
81
  - - '='
93
82
  - !ruby/object:Gem::Version
@@ -95,7 +84,6 @@ dependencies:
95
84
  - !ruby/object:Gem::Dependency
96
85
  name: configure-s3-website
97
86
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
87
  requirements:
100
88
  - - ~>
101
89
  - !ruby/object:Gem::Version
@@ -103,7 +91,6 @@ dependencies:
103
91
  type: :runtime
104
92
  prerelease: false
105
93
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
94
  requirements:
108
95
  - - ~>
109
96
  - !ruby/object:Gem::Version
@@ -111,55 +98,48 @@ dependencies:
111
98
  - !ruby/object:Gem::Dependency
112
99
  name: rspec
113
100
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
101
  requirements:
116
- - - ! '>='
102
+ - - '>='
117
103
  - !ruby/object:Gem::Version
118
104
  version: '0'
119
105
  type: :development
120
106
  prerelease: false
121
107
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
108
  requirements:
124
- - - ! '>='
109
+ - - '>='
125
110
  - !ruby/object:Gem::Version
126
111
  version: '0'
127
112
  - !ruby/object:Gem::Dependency
128
113
  name: rspec-expectations
129
114
  requirement: !ruby/object:Gem::Requirement
130
- none: false
131
115
  requirements:
132
- - - ! '>='
116
+ - - '>='
133
117
  - !ruby/object:Gem::Version
134
118
  version: '0'
135
119
  type: :development
136
120
  prerelease: false
137
121
  version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
122
  requirements:
140
- - - ! '>='
123
+ - - '>='
141
124
  - !ruby/object:Gem::Version
142
125
  version: '0'
143
126
  - !ruby/object:Gem::Dependency
144
127
  name: cucumber
145
128
  requirement: !ruby/object:Gem::Requirement
146
- none: false
147
129
  requirements:
148
- - - ! '>='
130
+ - - '>='
149
131
  - !ruby/object:Gem::Version
150
132
  version: '0'
151
133
  type: :development
152
134
  prerelease: false
153
135
  version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
136
  requirements:
156
- - - ! '>='
137
+ - - '>='
157
138
  - !ruby/object:Gem::Version
158
139
  version: '0'
159
140
  - !ruby/object:Gem::Dependency
160
141
  name: aruba
161
142
  requirement: !ruby/object:Gem::Requirement
162
- none: false
163
143
  requirements:
164
144
  - - ~>
165
145
  - !ruby/object:Gem::Version
@@ -167,7 +147,6 @@ dependencies:
167
147
  type: :development
168
148
  prerelease: false
169
149
  version_requirements: !ruby/object:Gem::Requirement
170
- none: false
171
150
  requirements:
172
151
  - - ~>
173
152
  - !ruby/object:Gem::Version
@@ -175,23 +154,20 @@ dependencies:
175
154
  - !ruby/object:Gem::Dependency
176
155
  name: rake
177
156
  requirement: !ruby/object:Gem::Requirement
178
- none: false
179
157
  requirements:
180
- - - ! '>='
158
+ - - '>='
181
159
  - !ruby/object:Gem::Version
182
160
  version: '0'
183
161
  type: :development
184
162
  prerelease: false
185
163
  version_requirements: !ruby/object:Gem::Requirement
186
- none: false
187
164
  requirements:
188
- - - ! '>='
165
+ - - '>='
189
166
  - !ruby/object:Gem::Version
190
167
  version: '0'
191
168
  - !ruby/object:Gem::Dependency
192
169
  name: vcr
193
170
  requirement: !ruby/object:Gem::Requirement
194
- none: false
195
171
  requirements:
196
172
  - - ~>
197
173
  - !ruby/object:Gem::Version
@@ -199,7 +175,6 @@ dependencies:
199
175
  type: :development
200
176
  prerelease: false
201
177
  version_requirements: !ruby/object:Gem::Requirement
202
- none: false
203
178
  requirements:
204
179
  - - ~>
205
180
  - !ruby/object:Gem::Version
@@ -207,7 +182,6 @@ dependencies:
207
182
  - !ruby/object:Gem::Dependency
208
183
  name: webmock
209
184
  requirement: !ruby/object:Gem::Requirement
210
- none: false
211
185
  requirements:
212
186
  - - ~>
213
187
  - !ruby/object:Gem::Version
@@ -215,16 +189,14 @@ dependencies:
215
189
  type: :development
216
190
  prerelease: false
217
191
  version_requirements: !ruby/object:Gem::Requirement
218
- none: false
219
192
  requirements:
220
193
  - - ~>
221
194
  - !ruby/object:Gem::Version
222
195
  version: 1.8.0
223
- description: ! 'This Gem allows you to push your Jekyll blog to AWS S3.
224
-
196
+ description: |-
197
+ This Gem allows you to push your Jekyll blog to AWS S3.
225
198
  In addition, you can use this Gem to invalidate the related Cloudfront
226
-
227
- distribution, making it easy to deliver your blog via the CDN.'
199
+ distribution, making it easy to deliver your blog via the CDN.
228
200
  email:
229
201
  - pcreux@gmail.com
230
202
  - lauri.lehmijoki@iki.fi
@@ -311,12 +283,14 @@ files:
311
283
  - lib/jekyll-s3/endpoint.rb
312
284
  - lib/jekyll-s3/errors.rb
313
285
  - lib/jekyll-s3/keyboard.rb
286
+ - lib/jekyll-s3/parallelism.rb
314
287
  - lib/jekyll-s3/retry.rb
315
288
  - lib/jekyll-s3/upload.rb
316
289
  - lib/jekyll-s3/uploader.rb
317
290
  - spec/lib/config_loader_spec.rb
318
291
  - spec/lib/endpoint_spec.rb
319
292
  - spec/lib/keyboard_spec.rb
293
+ - spec/lib/parallelism_spec.rb
320
294
  - spec/lib/retry_spec.rb
321
295
  - spec/lib/upload_spec.rb
322
296
  - spec/lib/uploader_spec.rb
@@ -331,33 +305,26 @@ files:
331
305
  - spec/spec_helper.rb
332
306
  homepage: https://github.com/laurilehmijoki/jekyll-s3
333
307
  licenses: []
308
+ metadata: {}
334
309
  post_install_message:
335
310
  rdoc_options: []
336
311
  require_paths:
337
312
  - lib
338
313
  required_ruby_version: !ruby/object:Gem::Requirement
339
- none: false
340
314
  requirements:
341
- - - ! '>='
315
+ - - '>='
342
316
  - !ruby/object:Gem::Version
343
317
  version: '0'
344
- segments:
345
- - 0
346
- hash: -3787363599528242274
347
318
  required_rubygems_version: !ruby/object:Gem::Requirement
348
- none: false
349
319
  requirements:
350
- - - ! '>='
320
+ - - '>='
351
321
  - !ruby/object:Gem::Version
352
322
  version: '0'
353
- segments:
354
- - 0
355
- hash: -3787363599528242274
356
323
  requirements: []
357
324
  rubyforge_project:
358
- rubygems_version: 1.8.25
325
+ rubygems_version: 2.0.3
359
326
  signing_key:
360
- specification_version: 3
327
+ specification_version: 4
361
328
  summary: Push your Jekyll blog to S3
362
329
  test_files:
363
330
  - features/cassettes/cucumber_tags/create-redirect.yml
@@ -423,6 +390,7 @@ test_files:
423
390
  - spec/lib/config_loader_spec.rb
424
391
  - spec/lib/endpoint_spec.rb
425
392
  - spec/lib/keyboard_spec.rb
393
+ - spec/lib/parallelism_spec.rb
426
394
  - spec/lib/retry_spec.rb
427
395
  - spec/lib/upload_spec.rb
428
396
  - spec/lib/uploader_spec.rb