s3_website 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 738dbf4da599ae01973619d033c4f6810d2f9378
4
+ data.tar.gz: d3368566d619e4ee1352ac67683283f76045968a
5
+ SHA512:
6
+ metadata.gz: e17da88a98541bc84052d59214e47bff501d0d0bfcb1e8acdb22609cba320b9c3f65335e539ac3bc886dbacf576a7ae107a21530cac9581bb4a95ba4495edb16
7
+ data.tar.gz: 5bef4373d9f2466728d6d6e1b56fc34a083fd95b74e3a02871c9ac72f72924be3df10b8bdefc900f376bc36903f298df84d4c572cc6f1910e1ee40a1a32f0d96
data/README.md CHANGED
@@ -7,38 +7,46 @@
7
7
 
8
8
  * Create and configure an S3 website for you
9
9
  * Upload your static website to AWS S3
10
+ * Jekyll and Nanoc are automatically supported
10
11
  * Help you use AWS Cloudfront to distribute your website
11
12
  * Improve page speed with HTTP cache control and gzipping
12
13
  * Set HTTP redirects for your website
13
14
  * (for other features, see the documentation below)
14
15
 
15
- `s3_website` automatically supports [Jekyll](http://jekyllrb.com) and
16
- [Nanoc](http://nanoc.ws) by recognising their output directories (*_site* for
17
- Jekyll and *public/output* for Nanoc). If your website resides in some other
18
- directory, you can point the directory to `s3_website` with a parameter. See
19
- `s3_website help push` for more info.
20
-
21
16
  ## Install
22
17
 
23
- This project is still on beta level. Expect backward incompatible changes.
24
-
25
18
  gem install s3_website
26
19
 
27
20
  ## Usage
28
21
 
29
22
  Here's how you can get started:
30
23
 
24
+ * In [AWS IAM](https://console.aws.amazon.com/iam), create API credentials that have sufficient permissions to S3
31
25
  * Go to your website directory
32
- * Run `s3_website cfg create`. It generates a configuration file called `s3_website.yml`
33
- * Edit it with your details (you can use [ERB](http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/ERB.html) in the file)
26
+ * Run `s3_website cfg create`. This generates a configuration file called `s3_website.yml`.
27
+ * Put your AWS credentials and the S3 bucket name into the file
34
28
  * Run `s3_website cfg apply`. This will configure your bucket to function as an
35
29
  S3 website. If the bucket does not exist, the command will create it for you.
36
30
  * Run `s3_website push` to push your website to S3. Congratulations! You are live.
37
31
 
38
- `s3_website` attempts to be a command-line interface tool that is easy to
39
- understand and use. For example, `s3_website --help` should print you all the
40
- things it can perform. Please create an issue if you think the tool is
41
- incomprehensible or inconsistent.
32
+ ### For Jekyll users
33
+
34
+ Run the `s3_website cfg create` in the root directory of your Jekyll project.
35
+ `s3_website` will automatically look for the site output in the *_site*
36
+ directory.
37
+
38
+ ### For Nanoc users
39
+
40
+ Run the `s3_website cfg create` in the root directory of your Nanoc project.
41
+ `s3_website` will automatically look for the site output in the *public/output*
42
+ directory.
43
+
44
+ ### For others
45
+
46
+ It's a good idea to store the `s3_website.yml` file in your project's root.
47
+ Let's say the contents you wish to upload to your S3 website bucket are in
48
+ *my_website_output*. You can upload the contents of that directory with
49
+ `s3_website push --site my_website_output`.
42
50
 
43
51
  ### Using environment variables
44
52
 
@@ -68,8 +76,14 @@ you can omit the `s3_id` and `s3_secret` keys in the config file.)
68
76
  bucket
69
77
  * Let the power users benefit from advanced S3 website features such as
70
78
  redirects, Cache-Control headers and gzip support
79
+ * Be as fast as possible. Do in parallel all that can be done in parallel.
71
80
  * Maintain 90% backward compatibility with the jekyll-s3 gem
72
81
 
82
+ `s3_website` attempts to be a command-line interface tool that is easy to
83
+ understand and use. For example, `s3_website --help` should print you all the
84
+ things it can perform. Please create an issue if you think the tool is
85
+ incomprehensible or inconsistent.
86
+
73
87
  ## Additional features
74
88
 
75
89
  ### Cache Control
@@ -291,8 +305,6 @@ s3_website uses [Semantic Versioning](http://semver.org).
291
305
 
292
306
  * Install bundler and run `bundle install`
293
307
  * Run all tests by invoking `rake test`
294
- * Run the integration tests by running `bundle exec cucumber`
295
- * Run the unit tests by running `bundle exec rspec spec/lib/*.rb`
296
308
 
297
309
  ### Contributing
298
310
 
@@ -320,8 +332,8 @@ MIT. See the LICENSE file for more information.
320
332
 
321
333
  ## Contributors
322
334
 
323
- This gem is created by [Lauri Lehmijoki](https://github.com/laurilehmijoki).
324
- Without the valuable work of [Philippe Creux](https://github.com/pcreux) on
335
+ This gem is created by Lauri Lehmijoki. Without the valuable work of [Philippe
336
+ Creux](https://github.com/pcreux) on
325
337
  [jekyll-s3](https://github.com/laurilehmijoki/jekyll-s3), this project would not
326
338
  exist.
327
339
 
data/changelog.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  This project uses [Semantic Versioning](http://semver.org).
4
4
 
5
+ ## 1.0.1
6
+
7
+ * Set default concurrency level to 100. Related to issue [#6](https://github.com/laurilehmijoki/s3_website/issues/6).
8
+
5
9
  ## 1.0.0
6
10
 
7
11
  * Make 0.4.0 the version 1.0.0
@@ -6,13 +6,19 @@ module S3Website
6
6
  operation.call item
7
7
  end
8
8
  else
9
- threads = items.map do |item|
10
- Thread.new(item) { |item|
11
- operation.call item
12
- }
13
- end
14
- threads.each { |thread| thread.join }
9
+ items.each_slice(DEFAULT_CONCURRENCY_LEVEL) { |items|
10
+ threads = items.map do |item|
11
+ Thread.new(item) { |item|
12
+ operation.call item
13
+ }
14
+ end
15
+ threads.each(&:join)
16
+ }
15
17
  end
16
18
  end
19
+
20
+ private
21
+
22
+ DEFAULT_CONCURRENCY_LEVEL = 100
17
23
  end
18
24
  end
data/s3_website.gemspec CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "s3_website"
6
- s.version = "1.0.0"
6
+ s.version = "1.0.1"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Lauri Lehmijoki"]
9
9
  s.email = ["lauri.lehmijoki@iki.fi"]
@@ -40,4 +40,23 @@ describe S3Website::Parallelism do
40
40
  ints.should_not eq(after_processing) # Parallel processing introduces non-determinism
41
41
  end
42
42
  end
43
+
44
+ context 'limiting parallelism' do
45
+ before(:each) {
46
+ ints = (0..199).to_a
47
+ @after_processing = []
48
+ S3Website::Parallelism.each_in_parallel_or_sequentially(ints) { |int|
49
+ @after_processing << int
50
+ }
51
+ }
52
+
53
+ it "does at most #{S3Website::Parallelism::DEFAULT_CONCURRENCY_LEVEL} operations in parallel" do
54
+ @after_processing.slice(0, 99).all? do |int|
55
+ int <= 99
56
+ end.should be true
57
+ @after_processing.slice(100, 199).all? do |int|
58
+ int >= 100 and int <= 199
59
+ end.should be true
60
+ end
61
+ end
43
62
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3_website
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.0.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Lauri Lehmijoki
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-26 00:00:00.000000000 Z
11
+ date: 2013-07-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: aws-sdk
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: filey-diff
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: simple-cloudfront-invalidator
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: erubis
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: mime-types
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - '='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - '='
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: thor
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - '='
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - '='
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: configure-s3-website
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ~>
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ~>
124
109
  - !ruby/object:Gem::Version
@@ -126,55 +111,48 @@ dependencies:
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: rspec
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: '0'
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: '0'
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: rspec-expectations
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: '0'
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - '>='
156
137
  - !ruby/object:Gem::Version
157
138
  version: '0'
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: cucumber
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - '>='
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - '>='
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: aruba
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
157
  - - ~>
180
158
  - !ruby/object:Gem::Version
@@ -182,7 +160,6 @@ dependencies:
182
160
  type: :development
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
164
  - - ~>
188
165
  - !ruby/object:Gem::Version
@@ -190,23 +167,20 @@ dependencies:
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: rake
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
- - - ! '>='
171
+ - - '>='
196
172
  - !ruby/object:Gem::Version
197
173
  version: '0'
198
174
  type: :development
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
- - - ! '>='
178
+ - - '>='
204
179
  - !ruby/object:Gem::Version
205
180
  version: '0'
206
181
  - !ruby/object:Gem::Dependency
207
182
  name: vcr
208
183
  requirement: !ruby/object:Gem::Requirement
209
- none: false
210
184
  requirements:
211
185
  - - ~>
212
186
  - !ruby/object:Gem::Version
@@ -214,7 +188,6 @@ dependencies:
214
188
  type: :development
215
189
  prerelease: false
216
190
  version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
191
  requirements:
219
192
  - - ~>
220
193
  - !ruby/object:Gem::Version
@@ -222,7 +195,6 @@ dependencies:
222
195
  - !ruby/object:Gem::Dependency
223
196
  name: webmock
224
197
  requirement: !ruby/object:Gem::Requirement
225
- none: false
226
198
  requirements:
227
199
  - - ~>
228
200
  - !ruby/object:Gem::Version
@@ -230,12 +202,11 @@ dependencies:
230
202
  type: :development
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
- none: false
234
205
  requirements:
235
206
  - - ~>
236
207
  - !ruby/object:Gem::Version
237
208
  version: 1.8.0
238
- description: ! "\n Sync website files, set redirects, use HTTP performance optimisations,
209
+ description: "\n Sync website files, set redirects, use HTTP performance optimisations,
239
210
  deliver via\n CloudFront.\n "
240
211
  email:
241
212
  - lauri.lehmijoki@iki.fi
@@ -358,33 +329,26 @@ files:
358
329
  - spec/spec_helper.rb
359
330
  homepage: https://github.com/laurilehmijoki/s3_website
360
331
  licenses: []
332
+ metadata: {}
361
333
  post_install_message:
362
334
  rdoc_options: []
363
335
  require_paths:
364
336
  - lib
365
337
  required_ruby_version: !ruby/object:Gem::Requirement
366
- none: false
367
338
  requirements:
368
- - - ! '>='
339
+ - - '>='
369
340
  - !ruby/object:Gem::Version
370
341
  version: '0'
371
- segments:
372
- - 0
373
- hash: 2083958356287664166
374
342
  required_rubygems_version: !ruby/object:Gem::Requirement
375
- none: false
376
343
  requirements:
377
- - - ! '>='
344
+ - - '>='
378
345
  - !ruby/object:Gem::Version
379
346
  version: '0'
380
- segments:
381
- - 0
382
- hash: 2083958356287664166
383
347
  requirements: []
384
348
  rubyforge_project:
385
- rubygems_version: 1.8.25
349
+ rubygems_version: 2.0.3
386
350
  signing_key:
387
- specification_version: 3
351
+ specification_version: 4
388
352
  summary: Manage your S3 website
389
353
  test_files:
390
354
  - features/as-library.feature