relishable 0.29 → 0.30
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile.lock +57 -19
- data/lib/relish.rb +81 -42
- data/lib/relish/version.rb +5 -0
- metadata +67 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cd081e731c8554ce64f2ecc1bd23dc09c6d3939b
|
4
|
+
data.tar.gz: f2bec42c99a51404d73d839b86534c3273116462
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 87b1c341657829673f2d1102982881ac582f39c108eb182d0e7ddc0d8b41d7e6c5fb7491cebefaa1fb78f90196a1d43bb039e8c2c3df69d00908f9eb0e05a763
|
7
|
+
data.tar.gz: 9af60883aa254a485739bfe716e3c28e93075b392cf94bf8b620f47daf01258734e615ba4ce2974c7df3596360f8272a0287b1a0079ceb8db540e8496297637d
|
data/Gemfile.lock
CHANGED
@@ -1,40 +1,78 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
relishable (0.
|
5
|
-
fog
|
6
|
-
legacy-fernet
|
4
|
+
relishable (0.30)
|
5
|
+
fog (~> 1.23.0)
|
6
|
+
legacy-fernet (~> 1.6.3)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
|
+
addressable (2.3.6)
|
11
12
|
builder (3.2.2)
|
12
|
-
|
13
|
-
|
13
|
+
crack (0.4.1)
|
14
|
+
safe_yaml (~> 0.9.0)
|
15
|
+
diff-lcs (1.2.5)
|
16
|
+
excon (0.40.0)
|
17
|
+
fog (1.23.0)
|
18
|
+
fog-brightbox
|
19
|
+
fog-core (~> 1.23)
|
20
|
+
fog-json
|
21
|
+
fog-softlayer
|
22
|
+
ipaddress (~> 0.5)
|
23
|
+
nokogiri (~> 1.5, >= 1.5.11)
|
24
|
+
fog-brightbox (0.5.1)
|
25
|
+
fog-core (~> 1.22)
|
26
|
+
fog-json
|
27
|
+
inflecto
|
28
|
+
fog-core (1.24.0)
|
14
29
|
builder
|
15
|
-
excon (~> 0.
|
16
|
-
formatador (~> 0.2
|
30
|
+
excon (~> 0.38)
|
31
|
+
formatador (~> 0.2)
|
17
32
|
mime-types
|
18
|
-
multi_json (~> 1.0)
|
19
33
|
net-scp (~> 1.1)
|
20
34
|
net-ssh (>= 2.1.3)
|
21
|
-
|
22
|
-
|
23
|
-
|
35
|
+
fog-json (1.0.0)
|
36
|
+
multi_json (~> 1.0)
|
37
|
+
fog-softlayer (0.3.19)
|
38
|
+
fog-core
|
39
|
+
fog-json
|
40
|
+
formatador (0.2.5)
|
41
|
+
inflecto (0.0.2)
|
42
|
+
ipaddress (0.8.0)
|
24
43
|
legacy-fernet (1.6.3)
|
25
44
|
multi_json
|
26
|
-
mime-types (
|
27
|
-
mini_portile (0.
|
28
|
-
multi_json (1.
|
29
|
-
net-scp (1.1
|
45
|
+
mime-types (2.4.2)
|
46
|
+
mini_portile (0.6.0)
|
47
|
+
multi_json (1.10.1)
|
48
|
+
net-scp (1.2.1)
|
30
49
|
net-ssh (>= 2.6.5)
|
31
|
-
net-ssh (2.
|
32
|
-
nokogiri (1.6.
|
33
|
-
mini_portile (
|
34
|
-
|
50
|
+
net-ssh (2.9.1)
|
51
|
+
nokogiri (1.6.3.1)
|
52
|
+
mini_portile (= 0.6.0)
|
53
|
+
rake (10.3.2)
|
54
|
+
rspec (3.1.0)
|
55
|
+
rspec-core (~> 3.1.0)
|
56
|
+
rspec-expectations (~> 3.1.0)
|
57
|
+
rspec-mocks (~> 3.1.0)
|
58
|
+
rspec-core (3.1.4)
|
59
|
+
rspec-support (~> 3.1.0)
|
60
|
+
rspec-expectations (3.1.2)
|
61
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
62
|
+
rspec-support (~> 3.1.0)
|
63
|
+
rspec-mocks (3.1.2)
|
64
|
+
rspec-support (~> 3.1.0)
|
65
|
+
rspec-support (3.1.1)
|
66
|
+
safe_yaml (0.9.5)
|
67
|
+
webmock (1.19.0)
|
68
|
+
addressable (>= 2.3.6)
|
69
|
+
crack (>= 0.3.2)
|
35
70
|
|
36
71
|
PLATFORMS
|
37
72
|
ruby
|
38
73
|
|
39
74
|
DEPENDENCIES
|
75
|
+
rake (> 0)
|
40
76
|
relishable!
|
77
|
+
rspec (~> 3.1.0)
|
78
|
+
webmock (~> 1.19.0)
|
data/lib/relish.rb
CHANGED
@@ -7,80 +7,119 @@ require "relish/release"
|
|
7
7
|
class Relish
|
8
8
|
|
9
9
|
def initialize(*args)
|
10
|
-
@db
|
10
|
+
@db = DynamoHelper.new(*args)
|
11
|
+
@tries = 3
|
11
12
|
end
|
12
13
|
|
13
14
|
def copy(id, version, data)
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
rescue_dynamodb_error do
|
16
|
+
Release.new.tap do |release|
|
17
|
+
release.item = {}
|
18
|
+
release.id = id
|
19
|
+
release.version = version
|
20
|
+
data.each do |k, v|
|
21
|
+
release.send("#{k}=", v.to_s) unless v.nil?
|
22
|
+
end
|
23
|
+
@db.put(release.item)
|
20
24
|
end
|
21
|
-
@db.put(release.item)
|
22
25
|
end
|
23
26
|
end
|
24
27
|
|
25
28
|
def create(id, data)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
29
|
+
rescue_dynamodb_error do
|
30
|
+
item = @db.query_current_version(id)
|
31
|
+
Release.new.tap do |release|
|
32
|
+
if item.nil?
|
33
|
+
release.item = {}
|
34
|
+
release.id = id
|
35
|
+
release.version = "1"
|
36
|
+
else
|
37
|
+
release.item = item
|
38
|
+
release.version = (release.version.to_i + 1).to_s
|
39
|
+
end
|
40
|
+
data.each do |k, v|
|
41
|
+
release.send("#{k}=", v.to_s) unless v.nil?
|
42
|
+
end
|
43
|
+
@db.put_current_version(release.item)
|
38
44
|
end
|
39
|
-
@db.put_current_version(release.item)
|
40
45
|
end
|
41
46
|
end
|
42
47
|
|
43
48
|
def current(id, *attrs)
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
49
|
+
rescue_dynamodb_error do
|
50
|
+
item = @db.query_current_version(id, *attrs)
|
51
|
+
unless item.nil?
|
52
|
+
Release.new.tap do |release|
|
53
|
+
release.item = item
|
54
|
+
end
|
48
55
|
end
|
49
56
|
end
|
50
57
|
end
|
51
58
|
|
52
59
|
def read(id, version, *attrs)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
60
|
+
rescue_dynamodb_error do
|
61
|
+
item = @db.get_version(id, version, *attrs)
|
62
|
+
unless item.nil?
|
63
|
+
Release.new.tap do |release|
|
64
|
+
release.item = item
|
65
|
+
end
|
57
66
|
end
|
58
67
|
end
|
59
68
|
end
|
60
69
|
|
61
70
|
def dump(id, consistent=nil, limit=nil)
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
71
|
+
rescue_dynamodb_error do
|
72
|
+
items = @db.query(id, consistent, limit)
|
73
|
+
items.map do |item|
|
74
|
+
Release.new.tap do |release|
|
75
|
+
release.item = item
|
76
|
+
end
|
66
77
|
end
|
67
78
|
end
|
68
79
|
end
|
69
|
-
|
80
|
+
|
70
81
|
def update(id, version, data)
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
82
|
+
rescue_dynamodb_error do
|
83
|
+
item = @db.get_version(id, version)
|
84
|
+
unless item.nil?
|
85
|
+
Release.new.tap do |release|
|
86
|
+
release.item = item
|
87
|
+
data.each do |k, v|
|
88
|
+
release.send("#{k}=", v.to_s) unless v.nil?
|
89
|
+
end
|
90
|
+
@db.put_version(id, version, release.item)
|
77
91
|
end
|
78
|
-
@db.put_version(id, version, release.item)
|
79
92
|
end
|
80
93
|
end
|
81
94
|
end
|
82
95
|
|
83
96
|
def delete(id, version)
|
84
|
-
|
97
|
+
rescue_dynamodb_error do
|
98
|
+
@db.delete_version(id, version)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def set_error_handler(&blk)
|
103
|
+
@error_handler = blk
|
104
|
+
end
|
105
|
+
|
106
|
+
def rescue_dynamodb_error
|
107
|
+
tries = @tries
|
108
|
+
begin
|
109
|
+
yield
|
110
|
+
rescue => e
|
111
|
+
retries = ((tries -= 1) > 0)
|
112
|
+
|
113
|
+
unless @error_handler.nil?
|
114
|
+
@error_handler.call(e, retries)
|
115
|
+
end
|
116
|
+
|
117
|
+
if retries
|
118
|
+
retry
|
119
|
+
else
|
120
|
+
raise
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
85
124
|
end
|
86
125
|
end
|
metadata
CHANGED
@@ -1,86 +1,128 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relishable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
5
|
-
prerelease:
|
4
|
+
version: '0.30'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mark Fine
|
9
8
|
- Blake Gentry
|
9
|
+
- Pedro Belo
|
10
|
+
- Joshua Tobin
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
|
-
date: 2014-
|
14
|
+
date: 2014-10-21 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: fog
|
17
18
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - "~>"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 1.23.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
26
|
requirements:
|
28
|
-
- -
|
27
|
+
- - "~>"
|
29
28
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
29
|
+
version: 1.23.0
|
31
30
|
- !ruby/object:Gem::Dependency
|
32
31
|
name: legacy-fernet
|
33
32
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
33
|
requirements:
|
36
|
-
- -
|
34
|
+
- - "~>"
|
37
35
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
36
|
+
version: 1.6.3
|
39
37
|
type: :runtime
|
40
38
|
prerelease: false
|
41
39
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
40
|
requirements:
|
44
|
-
- -
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.6.3
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: rake
|
46
|
+
requirement: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">"
|
45
49
|
- !ruby/object:Gem::Version
|
46
50
|
version: '0'
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rspec
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - "~>"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 3.1.0
|
65
|
+
type: :development
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 3.1.0
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: webmock
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - "~>"
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 1.19.0
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - "~>"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.19.0
|
47
86
|
description: Release manager.
|
48
|
-
email:
|
87
|
+
email:
|
88
|
+
- pedro@heroku.com
|
89
|
+
- mark.fine@gmail.com
|
90
|
+
- tobin@heroku.com
|
91
|
+
- opensource@heroku.com
|
49
92
|
executables: []
|
50
93
|
extensions: []
|
51
94
|
extra_rdoc_files: []
|
52
95
|
files:
|
96
|
+
- Gemfile
|
97
|
+
- Gemfile.lock
|
98
|
+
- lib/relish.rb
|
53
99
|
- lib/relish/cloudfront_helper.rb
|
54
100
|
- lib/relish/dynamo_helper.rb
|
55
101
|
- lib/relish/encryption_helper.rb
|
56
102
|
- lib/relish/release.rb
|
57
103
|
- lib/relish/s3_helper.rb
|
58
|
-
- lib/relish.rb
|
59
|
-
- Gemfile
|
60
|
-
- Gemfile.lock
|
104
|
+
- lib/relish/version.rb
|
61
105
|
homepage: http://github.com/heroku/relish
|
62
106
|
licenses: []
|
107
|
+
metadata: {}
|
63
108
|
post_install_message:
|
64
109
|
rdoc_options: []
|
65
110
|
require_paths:
|
66
111
|
- lib
|
67
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
113
|
requirements:
|
70
|
-
- -
|
114
|
+
- - ">="
|
71
115
|
- !ruby/object:Gem::Version
|
72
116
|
version: '0'
|
73
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
118
|
requirements:
|
76
|
-
- -
|
119
|
+
- - ">="
|
77
120
|
- !ruby/object:Gem::Version
|
78
121
|
version: '0'
|
79
122
|
requirements: []
|
80
123
|
rubyforge_project:
|
81
|
-
rubygems_version:
|
124
|
+
rubygems_version: 2.2.2
|
82
125
|
signing_key:
|
83
|
-
specification_version:
|
126
|
+
specification_version: 4
|
84
127
|
summary: releases
|
85
128
|
test_files: []
|
86
|
-
has_rdoc:
|