middleman-s3_sync 3.0.16 → 3.0.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/Changelog.md +9 -0
- data/README.md +17 -15
- data/lib/middleman-s3_sync/commands.rb +0 -9
- data/lib/middleman/s3_sync.rb +2 -2
- data/lib/middleman/s3_sync/options.rb +28 -0
- data/lib/middleman/s3_sync/resource.rb +11 -3
- data/lib/middleman/s3_sync/version.rb +1 -1
- data/middleman-s3_sync.gemspec +1 -0
- data/spec/options_spec.rb +14 -0
- metadata +7 -40
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NDFlMjY1ZDIzOWVjYTk3OTczNDlhYTM0NGQyNTVjZWNmNzE2Y2Q3Mw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MDA0YmI3MGY4YWQ1NmVlOGFmOTVlZjVhZDcxYzk5YThlY2E0MzhlMQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NWNjMjIwOTdiNmVkYjFkOTYxOWU2OWE0ODRkZDBiOGNhZDIwYWNkNWI5ZmU5
|
10
|
+
MWEzYjc2NjI2NDVlZmRiNjRhNzE2ZDZiYjdkMjg5MDdmYTQ0MTNlY2RhOTg2
|
11
|
+
YzM0NTIyNWY1MDc4NjQ5MzMzNWZhZTIxN2Q1MDc4ODEzM2Q1MzI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NTJhNDhhZjc0ZGM2YWQ0Y2E3YjU0OWY0MDQxY2RlYjQxZDViOWZlMzA5Y2Yx
|
14
|
+
ZjQwNWI4MjY2ODk5YWYyYTdiOTk0YmNhMzM1Yjk1YWU4OWZiZTJkNmUwYWUy
|
15
|
+
MjhjZmIxMjRmMzc3MDE5MmNmNDI4ODQ0ZjY0NDI3NzY2OGFlNWE=
|
data/Changelog.md
CHANGED
@@ -2,6 +2,15 @@
|
|
2
2
|
|
3
3
|
The gem that tries really hard not to push files to S3.
|
4
4
|
|
5
|
+
## v3.0.17
|
6
|
+
|
7
|
+
* Limits the number of concurrent threads used while processing the
|
8
|
+
resources and files. (#21)
|
9
|
+
* Adds the option to use reduced redundancy storage for the bucket. (#8)
|
10
|
+
* Adds the license to the gem specs. (#20)
|
11
|
+
* Makes sure tha the .s3_sync file is read when the sync occures within
|
12
|
+
a build. (#22, #23)
|
13
|
+
|
5
14
|
## v3.0.16
|
6
15
|
|
7
16
|
* Adds the ignore directory and redirects logic to the --force option as
|
data/README.md
CHANGED
@@ -34,14 +34,15 @@ You need to add the following code to your ```config.rb``` file:
|
|
34
34
|
|
35
35
|
```ruby
|
36
36
|
activate :s3_sync do |s3_sync|
|
37
|
-
s3_sync.bucket
|
38
|
-
s3_sync.region
|
39
|
-
s3_sync.aws_access_key_id
|
40
|
-
s3_sync.aws_secret_access_key
|
41
|
-
s3_sync.delete
|
42
|
-
s3_sync.after_build
|
43
|
-
s3_sync.prefer_gzip
|
44
|
-
|
37
|
+
s3_sync.bucket = 'my.bucket.com' # The name of the S3 bucket you are targetting. This is globally unique.
|
38
|
+
s3_sync.region = 'us-west-1' # The AWS region for your bucket.
|
39
|
+
s3_sync.aws_access_key_id = 'AWS KEY ID'
|
40
|
+
s3_sync.aws_secret_access_key = 'AWS SECRET KEY'
|
41
|
+
s3_sync.delete = false # We delete stray files by default.
|
42
|
+
s3_sync.after_build = false # We chain after the build step by default. This may not be your desired behavior...
|
43
|
+
s3_sync.prefer_gzip = true
|
44
|
+
s3_sync.reduced_redundancy_storage = false
|
45
|
+
end
|
45
46
|
```
|
46
47
|
|
47
48
|
You can then start synchronizing files with S3 through ```middleman s3_sync```.
|
@@ -50,13 +51,14 @@ You can then start synchronizing files with S3 through ```middleman s3_sync```.
|
|
50
51
|
|
51
52
|
The following defaults apply to the configuration items:
|
52
53
|
|
53
|
-
| Setting
|
54
|
-
| -----------------
|
55
|
-
| aws_access_key_id
|
56
|
-
| aws_secret_access_key
|
57
|
-
| delete
|
58
|
-
| after_build
|
59
|
-
| prefer_gzip
|
54
|
+
| Setting | Default |
|
55
|
+
| ----------------- | ---------------------------- |
|
56
|
+
| aws_access_key_id | ```ENV['AWS_ACCESS_KEY_ID``` |
|
57
|
+
| aws_secret_access_key | ```ENV['AWS_SECRET_ACCESS_KEY']``` |
|
58
|
+
| delete | ```true``` |
|
59
|
+
| after_build | ```false``` |
|
60
|
+
| prefer_gzip | ```true``` |
|
61
|
+
| reduced_redundancy_storage | ```false``` |
|
60
62
|
|
61
63
|
You do not need to specify the settings that match the defaults. This
|
62
64
|
simplify the configuration of the extension:
|
@@ -34,15 +34,6 @@ module Middleman
|
|
34
34
|
shared_inst.s3_sync_options.bucket = options[:bucket] if options[:bucket]
|
35
35
|
shared_inst.s3_sync_options.verbose = options[:verbose] if options[:verbose]
|
36
36
|
|
37
|
-
config_file = File.join(shared_inst.root_path, ".s3_sync")
|
38
|
-
|
39
|
-
if File.exist?(config_file)
|
40
|
-
config = YAML::load( File.open( config_file ) )
|
41
|
-
|
42
|
-
shared_inst.s3_sync_options.aws_secret_access_key = config["aws_secret_access_key"] if config["aws_secret_access_key"]
|
43
|
-
shared_inst.s3_sync_options.aws_access_key_id = config["aws_access_key_id"] if config["aws_access_key_id"]
|
44
|
-
end
|
45
|
-
|
46
37
|
::Middleman::S3Sync.sync
|
47
38
|
end
|
48
39
|
end
|
data/lib/middleman/s3_sync.rb
CHANGED
@@ -45,7 +45,7 @@ module Middleman
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def resources
|
48
|
-
@resources ||= paths.pmap do |p|
|
48
|
+
@resources ||= paths.pmap(32) do |p|
|
49
49
|
progress_bar.increment
|
50
50
|
S3Sync::Resource.new(p)
|
51
51
|
end
|
@@ -71,7 +71,7 @@ module Middleman
|
|
71
71
|
local_paths.reject! { |p| p =~ /\.gz$/ && File.exist?(p.gsub(/\.gz$/, '')) }
|
72
72
|
end
|
73
73
|
|
74
|
-
local_paths.pmap { |p| p.gsub(/#{build_dir}\//, '') }
|
74
|
+
local_paths.pmap(32) { |p| p.gsub(/#{build_dir}\//, '') }
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -13,8 +13,14 @@ module Middleman
|
|
13
13
|
:build_dir,
|
14
14
|
:force,
|
15
15
|
:prefer_gzip,
|
16
|
+
:reduced_redundancy_storage,
|
16
17
|
:verbose
|
17
18
|
|
19
|
+
def initialize
|
20
|
+
# read config from .s3_sync on initialization
|
21
|
+
self.read_config
|
22
|
+
end
|
23
|
+
|
18
24
|
def add_caching_policy(content_type, options)
|
19
25
|
caching_policies[content_type.to_s] = BrowserCachePolicy.new(options)
|
20
26
|
end
|
@@ -51,6 +57,28 @@ module Middleman
|
|
51
57
|
(@prefer_gzip.nil? ? true : @prefer_gzip)
|
52
58
|
end
|
53
59
|
|
60
|
+
# Read config options from an IO stream and set them on `self`. Defaults
|
61
|
+
# to reading from the `.s3_sync` file in the MM project root if it exists.
|
62
|
+
#
|
63
|
+
# @param io [IO] an IO stream to read from
|
64
|
+
# @return [void]
|
65
|
+
def read_config(io = nil)
|
66
|
+
unless io
|
67
|
+
root_path = ::Middleman::Application.root
|
68
|
+
config_file_path = File.join(root_path, ".s3_sync")
|
69
|
+
|
70
|
+
# skip if config file does not exist
|
71
|
+
return unless File.exists?(config_file_path)
|
72
|
+
|
73
|
+
io = File.open(config_file_path, "r")
|
74
|
+
end
|
75
|
+
|
76
|
+
config = YAML.load(io)
|
77
|
+
|
78
|
+
self.aws_access_key_id = config["aws_access_key_id"] if config["aws_access_key_id"]
|
79
|
+
self.aws_secret_access_key = config["aws_secret_access_key"] if config["aws_secret_access_key"]
|
80
|
+
end
|
81
|
+
|
54
82
|
protected
|
55
83
|
class BrowserCachePolicy
|
56
84
|
attr_accessor :policies
|
@@ -9,7 +9,7 @@ module Middleman
|
|
9
9
|
|
10
10
|
def initialize(path)
|
11
11
|
@path = path
|
12
|
-
@s3_resource = bucket.files.
|
12
|
+
@s3_resource = bucket.files.head(path)
|
13
13
|
end
|
14
14
|
|
15
15
|
def remote_path
|
@@ -36,6 +36,10 @@ module Middleman
|
|
36
36
|
attributes[:content_encoding] = "gzip"
|
37
37
|
end
|
38
38
|
|
39
|
+
if options.reduced_redundancy_storage
|
40
|
+
attributes[:storage_class] = 'REDUCED_REDUNDANCY'
|
41
|
+
end
|
42
|
+
|
39
43
|
attributes
|
40
44
|
end
|
41
45
|
alias :attributes :to_h
|
@@ -63,6 +67,10 @@ module Middleman
|
|
63
67
|
s3_resource.content_encoding = "gzip"
|
64
68
|
end
|
65
69
|
|
70
|
+
if options.reduced_redundancy_storage
|
71
|
+
s3_resource.storage_class = 'REDUCED_REDUNDANCY'
|
72
|
+
end
|
73
|
+
|
66
74
|
s3_resource.save
|
67
75
|
end
|
68
76
|
|
@@ -135,7 +143,7 @@ module Middleman
|
|
135
143
|
end
|
136
144
|
elsif local?
|
137
145
|
:new
|
138
|
-
elsif redirect?
|
146
|
+
elsif remote? && redirect?
|
139
147
|
:ignored
|
140
148
|
else
|
141
149
|
:deleted
|
@@ -151,7 +159,7 @@ module Middleman
|
|
151
159
|
end
|
152
160
|
|
153
161
|
def redirect?
|
154
|
-
s3_resource.metadata.has_key?
|
162
|
+
s3_resource.metadata.has_key?('x-amz-website-redirect-location')
|
155
163
|
end
|
156
164
|
|
157
165
|
def directory?
|
data/middleman-s3_sync.gemspec
CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.description = %q{Only syncs files that have been updated to S3.}
|
12
12
|
gem.summary = %q{Tries really, really hard not to push files to S3.}
|
13
13
|
gem.homepage = "http://github.com/fredjean/middleman-s3_sync"
|
14
|
+
gem.license = 'MIT'
|
14
15
|
|
15
16
|
gem.files = `git ls-files`.split($/)
|
16
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/spec/options_spec.rb
CHANGED
@@ -101,4 +101,18 @@ describe Middleman::S3Sync::Options do
|
|
101
101
|
policy.expires.should == CGI.rfc1123_date(expiration)
|
102
102
|
end
|
103
103
|
end
|
104
|
+
|
105
|
+
context "#read_config" do
|
106
|
+
let(:aws_access_key_id) { "foo" }
|
107
|
+
let(:aws_secret_access_key) { "bar" }
|
108
|
+
let(:config) { { "aws_access_key_id" => aws_access_key_id, "aws_secret_access_key" => aws_secret_access_key } }
|
109
|
+
let(:file) { StringIO.new(YAML.dump(config)) }
|
110
|
+
|
111
|
+
before do
|
112
|
+
options.read_config(file)
|
113
|
+
end
|
114
|
+
|
115
|
+
its(:aws_access_key_id) { should eq(aws_access_key_id) }
|
116
|
+
its(:aws_secret_access_key) { should eq(aws_secret_access_key) }
|
117
|
+
end
|
104
118
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-s3_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
5
|
-
prerelease:
|
4
|
+
version: 3.0.17
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Frederic Jean
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-18 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: middleman-core
|
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: fog
|
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: map
|
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: pmap
|
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: ruby-progressbar
|
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: colorize
|
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,7 +98,6 @@ dependencies:
|
|
111
98
|
- !ruby/object:Gem::Dependency
|
112
99
|
name: rake
|
113
100
|
requirement: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
101
|
requirements:
|
116
102
|
- - ! '>='
|
117
103
|
- !ruby/object:Gem::Version
|
@@ -119,7 +105,6 @@ dependencies:
|
|
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
|
@@ -127,7 +112,6 @@ dependencies:
|
|
127
112
|
- !ruby/object:Gem::Dependency
|
128
113
|
name: pry
|
129
114
|
requirement: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
115
|
requirements:
|
132
116
|
- - ! '>='
|
133
117
|
- !ruby/object:Gem::Version
|
@@ -135,7 +119,6 @@ dependencies:
|
|
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
|
@@ -143,7 +126,6 @@ dependencies:
|
|
143
126
|
- !ruby/object:Gem::Dependency
|
144
127
|
name: pry-nav
|
145
128
|
requirement: !ruby/object:Gem::Requirement
|
146
|
-
none: false
|
147
129
|
requirements:
|
148
130
|
- - ! '>='
|
149
131
|
- !ruby/object:Gem::Version
|
@@ -151,7 +133,6 @@ dependencies:
|
|
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
|
@@ -159,7 +140,6 @@ dependencies:
|
|
159
140
|
- !ruby/object:Gem::Dependency
|
160
141
|
name: rspec
|
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,7 +154,6 @@ dependencies:
|
|
175
154
|
- !ruby/object:Gem::Dependency
|
176
155
|
name: timerizer
|
177
156
|
requirement: !ruby/object:Gem::Requirement
|
178
|
-
none: false
|
179
157
|
requirements:
|
180
158
|
- - ! '>='
|
181
159
|
- !ruby/object:Gem::Version
|
@@ -183,7 +161,6 @@ dependencies:
|
|
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
|
@@ -191,7 +168,6 @@ dependencies:
|
|
191
168
|
- !ruby/object:Gem::Dependency
|
192
169
|
name: travis
|
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: travis-lint
|
209
184
|
requirement: !ruby/object:Gem::Requirement
|
210
|
-
none: false
|
211
185
|
requirements:
|
212
186
|
- - ! '>='
|
213
187
|
- !ruby/object:Gem::Version
|
@@ -215,7 +189,6 @@ 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
|
@@ -250,34 +223,28 @@ files:
|
|
250
223
|
- spec/resource_spec.rb
|
251
224
|
- spec/spec_helper.rb
|
252
225
|
homepage: http://github.com/fredjean/middleman-s3_sync
|
253
|
-
licenses:
|
226
|
+
licenses:
|
227
|
+
- MIT
|
228
|
+
metadata: {}
|
254
229
|
post_install_message:
|
255
230
|
rdoc_options: []
|
256
231
|
require_paths:
|
257
232
|
- lib
|
258
233
|
required_ruby_version: !ruby/object:Gem::Requirement
|
259
|
-
none: false
|
260
234
|
requirements:
|
261
235
|
- - ! '>='
|
262
236
|
- !ruby/object:Gem::Version
|
263
237
|
version: '0'
|
264
|
-
segments:
|
265
|
-
- 0
|
266
|
-
hash: -2218609791572285789
|
267
238
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
|
-
none: false
|
269
239
|
requirements:
|
270
240
|
- - ! '>='
|
271
241
|
- !ruby/object:Gem::Version
|
272
242
|
version: '0'
|
273
|
-
segments:
|
274
|
-
- 0
|
275
|
-
hash: -2218609791572285789
|
276
243
|
requirements: []
|
277
244
|
rubyforge_project:
|
278
|
-
rubygems_version: 1.
|
245
|
+
rubygems_version: 2.1.1
|
279
246
|
signing_key:
|
280
|
-
specification_version:
|
247
|
+
specification_version: 4
|
281
248
|
summary: Tries really, really hard not to push files to S3.
|
282
249
|
test_files:
|
283
250
|
- spec/options_spec.rb
|