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 +7 -0
- data/README.md +30 -18
- data/changelog.md +4 -0
- data/lib/s3_website/parallelism.rb +12 -6
- data/s3_website.gemspec +1 -1
- data/spec/lib/parallelism_spec.rb +19 -0
- metadata +16 -52
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`.
|
33
|
-
*
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
324
|
-
|
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
@@ -6,13 +6,19 @@ module S3Website
|
|
6
6
|
operation.call item
|
7
7
|
end
|
8
8
|
else
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
@@ -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.
|
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-
|
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:
|
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:
|
349
|
+
rubygems_version: 2.0.3
|
386
350
|
signing_key:
|
387
|
-
specification_version:
|
351
|
+
specification_version: 4
|
388
352
|
summary: Manage your S3 website
|
389
353
|
test_files:
|
390
354
|
- features/as-library.feature
|