jekyll-s3 3.1.2 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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