relishable 0.3 → 0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/relish.rb +26 -27
- metadata +2 -2
data/lib/relish.rb
CHANGED
@@ -8,13 +8,12 @@ class Relish
|
|
8
8
|
|
9
9
|
def self.conf(*attrs)
|
10
10
|
attrs.each do |attr|
|
11
|
-
instance_eval "def #{attr}; @#{attr}
|
11
|
+
instance_eval "def #{attr}; @#{attr} end", __FILE__, __LINE__
|
12
|
+
instance_eval "def #{attr}= value; @#{attr} = value end", __FILE__, __LINE__
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
15
|
-
conf :
|
16
|
-
:relish_aws_secret_key,
|
17
|
-
:relish_table_name
|
16
|
+
conf :aws_access_key, :aws_secret_key, :table_name
|
18
17
|
|
19
18
|
def self.schema(attrs)
|
20
19
|
attrs.each do |attr, type|
|
@@ -23,24 +22,24 @@ class Relish
|
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
26
|
-
schema id
|
27
|
-
version
|
28
|
-
descr
|
29
|
-
user_id
|
30
|
-
slug_id
|
31
|
-
slug_version
|
32
|
-
stack
|
33
|
-
language_pack
|
34
|
-
env_json
|
35
|
-
pstable_json
|
36
|
-
addons_json
|
25
|
+
schema :id => :S,
|
26
|
+
:version => :N,
|
27
|
+
:descr => :S,
|
28
|
+
:user_id => :N,
|
29
|
+
:slug_id => :S,
|
30
|
+
:slug_version => :N,
|
31
|
+
:stack => :S,
|
32
|
+
:language_pack => :S,
|
33
|
+
:env_json => :S,
|
34
|
+
:pstable_json => :S,
|
35
|
+
:addons_json => :S
|
37
36
|
|
38
37
|
def self.db
|
39
|
-
@db ||= Fog::AWS::DynamoDB.new(aws_access_key_id
|
38
|
+
@db ||= Fog::AWS::DynamoDB.new(:aws_access_key_id => aws_access_key, :aws_secret_access_key => aws_secret_key)
|
40
39
|
end
|
41
40
|
|
42
41
|
def self.db_query_current_version(id)
|
43
|
-
response = db.query(
|
42
|
+
response = db.query(table_name, {:S => id}, :ConsistentRead => true, :Limit => 1, :ScanIndexForward => false)
|
44
43
|
if response.status != 200
|
45
44
|
raise('status: #{response.status}')
|
46
45
|
end
|
@@ -50,14 +49,14 @@ class Relish
|
|
50
49
|
end
|
51
50
|
|
52
51
|
def self.db_put_current_version(items)
|
53
|
-
response = db.put_item(
|
52
|
+
response = db.put_item(table_name, items, {:Expected => {:id => {:Exists => false}, :version => {:Exists => false}}})
|
54
53
|
if response.status != 200
|
55
54
|
raise('status: #{response.status}')
|
56
55
|
end
|
57
56
|
end
|
58
57
|
|
59
58
|
def self.db_get_version(id, version)
|
60
|
-
response = db.get_item(
|
59
|
+
response = db.get_item(table_name, {:HashKeyElement => {:S => id}, :RangeKeyElement => {:N => version}})
|
61
60
|
if response.status != 200
|
62
61
|
raise('status: #{response.status}')
|
63
62
|
end
|
@@ -65,21 +64,21 @@ class Relish
|
|
65
64
|
end
|
66
65
|
|
67
66
|
def self.db_put_version(id, version, items)
|
68
|
-
response = db.put_item(
|
67
|
+
response = db.put_item(table_name, items, {:Expected => {:id => {:Value => {:S => id}}, :version => {:Value => {:N => version}}}})
|
69
68
|
if response.status != 200
|
70
69
|
raise('status: #{response.status}')
|
71
70
|
end
|
72
71
|
end
|
73
72
|
|
74
73
|
def self.db_put(items)
|
75
|
-
response = db.put_item(
|
74
|
+
response = db.put_item(table_name, items)
|
76
75
|
if response.status != 200
|
77
76
|
raise('status: #{response.status}')
|
78
77
|
end
|
79
78
|
end
|
80
79
|
|
81
80
|
def self.copy(id, version, data)
|
82
|
-
pdfm __FILE__, __method__, id
|
81
|
+
pdfm __FILE__, __method__, :id => id, :version => version
|
83
82
|
release = new
|
84
83
|
release.items = {}
|
85
84
|
release.id = id
|
@@ -92,7 +91,7 @@ class Relish
|
|
92
91
|
end
|
93
92
|
|
94
93
|
def self.create(id, data)
|
95
|
-
pdfm __FILE__, __method__, id
|
94
|
+
pdfm __FILE__, __method__, :id => id
|
96
95
|
items = db_query_current_version(id)
|
97
96
|
release = new
|
98
97
|
if items.nil?
|
@@ -111,7 +110,7 @@ class Relish
|
|
111
110
|
end
|
112
111
|
|
113
112
|
def self.current(id)
|
114
|
-
pdfm __FILE__, __method__, id
|
113
|
+
pdfm __FILE__, __method__, :id => id
|
115
114
|
items = db_query_current_version(id)
|
116
115
|
unless items.nil?
|
117
116
|
release = new
|
@@ -121,7 +120,7 @@ class Relish
|
|
121
120
|
end
|
122
121
|
|
123
122
|
def self.read(id, version)
|
124
|
-
pdfm __FILE__, __method__, id
|
123
|
+
pdfm __FILE__, __method__, :id => id, :version => version
|
125
124
|
items = db_get_version(id, version)
|
126
125
|
unless items.nil?
|
127
126
|
release = new
|
@@ -131,11 +130,11 @@ class Relish
|
|
131
130
|
end
|
132
131
|
|
133
132
|
def self.dump(id)
|
134
|
-
pdfm __FILE__, __method__, id
|
133
|
+
pdfm __FILE__, __method__, :id => id
|
135
134
|
end
|
136
135
|
|
137
136
|
def self.update(id, version, data)
|
138
|
-
pdfm __FILE__, __method__, id
|
137
|
+
pdfm __FILE__, __method__, :id => id, :version => version
|
139
138
|
items = db_get_version(id, version)
|
140
139
|
unless items.nil?
|
141
140
|
release = new
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relishable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.4'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: press
|