relishable 0.29 → 0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile.lock +57 -19
  3. data/lib/relish.rb +81 -42
  4. data/lib/relish/version.rb +5 -0
  5. 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.26)
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
- excon (0.25.3)
13
- fog (1.15.0)
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.25.0)
16
- formatador (~> 0.2.0)
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
- nokogiri (~> 1.5)
22
- ruby-hmac
23
- formatador (0.2.4)
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 (1.24)
27
- mini_portile (0.5.1)
28
- multi_json (1.7.9)
29
- net-scp (1.1.2)
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.6.8)
32
- nokogiri (1.6.0)
33
- mini_portile (~> 0.5.0)
34
- ruby-hmac (0.4.0)
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 = DynamoHelper.new(*args)
10
+ @db = DynamoHelper.new(*args)
11
+ @tries = 3
11
12
  end
12
13
 
13
14
  def copy(id, version, data)
14
- Release.new.tap do |release|
15
- release.item = {}
16
- release.id = id
17
- release.version = version
18
- data.each do |k, v|
19
- release.send("#{k}=", v.to_s) unless v.nil?
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
- item = @db.query_current_version(id)
27
- Release.new.tap do |release|
28
- if item.nil?
29
- release.item = {}
30
- release.id = id
31
- release.version = "1"
32
- else
33
- release.item = item
34
- release.version = (release.version.to_i + 1).to_s
35
- end
36
- data.each do |k, v|
37
- release.send("#{k}=", v.to_s) unless v.nil?
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
- item = @db.query_current_version(id, *attrs)
45
- unless item.nil?
46
- Release.new.tap do |release|
47
- release.item = item
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
- item = @db.get_version(id, version, *attrs)
54
- unless item.nil?
55
- Release.new.tap do |release|
56
- release.item = item
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
- items = @db.query(id, consistent, limit)
63
- items.map do |item|
64
- Release.new.tap do |release|
65
- release.item = item
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
- item = @db.get_version(id, version)
72
- unless item.nil?
73
- Release.new.tap do |release|
74
- release.item = item
75
- data.each do |k, v|
76
- release.send("#{k}=", v.to_s) unless v.nil?
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
- @db.delete_version(id, version)
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
@@ -0,0 +1,5 @@
1
+ class Relish
2
+ VERSION = "0.30"
3
+ end
4
+
5
+
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.29'
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-05-03 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: mark.fine@gmail.com
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: 1.8.24
124
+ rubygems_version: 2.2.2
82
125
  signing_key:
83
- specification_version: 3
126
+ specification_version: 4
84
127
  summary: releases
85
128
  test_files: []
86
- has_rdoc: