alephant-lookup 0.2.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/lib/alephant/lookup/lookup_helper.rb +5 -8
- data/lib/alephant/lookup/lookup_table.rb +18 -52
- data/lib/alephant/lookup/version.rb +1 -1
- data/spec/lookup_spec.rb +11 -13
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40a0521ddd1f119f7882e1dec17836b34746aebb
|
4
|
+
data.tar.gz: ff07efca80bd0b60ba24869e844cb40a8f399bb1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b72048abff1b1a2a06a1da8eb3108baf6e9a98355e38a8dc34628c32e99284bfbf804b40598395ac219f04f0729ecbfbd337ce1bde883bc6a47f50594c5a44ea
|
7
|
+
data.tar.gz: 9aea0f80fa152b25a927f78cfcf5c88e82a2ce367cd81c4684c31d146b3b127a13b0837ef8a3dd060ad6ca9d85212b7969c9d8c37aa30496054a506b19d9b56c
|
@@ -16,7 +16,6 @@ module Alephant
|
|
16
16
|
logger.info "LookupHelper#initialize(#{lookup_table.table_name})"
|
17
17
|
|
18
18
|
@lookup_table = lookup_table
|
19
|
-
@lookup_table.create
|
20
19
|
end
|
21
20
|
|
22
21
|
def read(id, opts, batch_version)
|
@@ -29,13 +28,11 @@ module Alephant
|
|
29
28
|
logger.info "LookupHelper#write(#{id}, #{opts}, #{batch_version}, #{location})"
|
30
29
|
|
31
30
|
LookupLocation.new(id, opts, batch_version, location).tap do |l|
|
32
|
-
lookup_table.
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
}
|
38
|
-
])
|
31
|
+
lookup_table.write(
|
32
|
+
l.component_key,
|
33
|
+
l.batch_version,
|
34
|
+
l.location
|
35
|
+
)
|
39
36
|
end
|
40
37
|
end
|
41
38
|
|
@@ -7,65 +7,31 @@ require "alephant/support/dynamodb/table"
|
|
7
7
|
module Alephant
|
8
8
|
module Lookup
|
9
9
|
class LookupTable < ::Alephant::Support::DynamoDB::Table
|
10
|
-
attr_reader :table_name
|
10
|
+
attr_reader :table_name, :client
|
11
11
|
|
12
|
-
|
13
|
-
:hash_key => {
|
14
|
-
:component_key => :string
|
15
|
-
},
|
16
|
-
:range_key => {
|
17
|
-
:batch_version => :number
|
18
|
-
}
|
19
|
-
}
|
20
|
-
|
21
|
-
def initialize(table_name, config = DEFAULT_CONFIG)
|
12
|
+
def initialize(table_name)
|
22
13
|
@mutex = Mutex.new
|
23
|
-
@
|
14
|
+
@client = AWS::DynamoDB::Client::V20120810.new
|
24
15
|
@table_name = table_name
|
25
|
-
@config = config
|
26
|
-
end
|
27
|
-
|
28
|
-
def create
|
29
|
-
@mutex.synchronize do
|
30
|
-
ensure_table_exists
|
31
|
-
ensure_table_active
|
32
|
-
end
|
33
16
|
end
|
34
17
|
|
35
|
-
def
|
36
|
-
|
18
|
+
def write(component_key, version, location)
|
19
|
+
client.put_item({
|
20
|
+
:table_name => table_name,
|
21
|
+
:item => {
|
22
|
+
'component_key' => {
|
23
|
+
'S' => component_key.to_s
|
24
|
+
},
|
25
|
+
'batch_version' => {
|
26
|
+
'N' => version.to_s
|
27
|
+
},
|
28
|
+
'location' => {
|
29
|
+
'S' => location.to_s
|
30
|
+
}
|
31
|
+
}
|
32
|
+
})
|
37
33
|
end
|
38
34
|
|
39
|
-
private
|
40
|
-
|
41
|
-
def ensure_table_exists
|
42
|
-
create_dynamodb_table unless table.exists?
|
43
|
-
end
|
44
|
-
|
45
|
-
def ensure_table_active
|
46
|
-
sleep_until_table_active unless table_active?
|
47
|
-
end
|
48
|
-
|
49
|
-
def create_dynamodb_table
|
50
|
-
@table = @dynamo_db.tables.create(
|
51
|
-
@table_name,
|
52
|
-
@config[:read_units],
|
53
|
-
@config[:write_units],
|
54
|
-
SCHEMA
|
55
|
-
)
|
56
|
-
end
|
57
|
-
|
58
|
-
def table_active?
|
59
|
-
table.status == :active
|
60
|
-
end
|
61
|
-
|
62
|
-
def sleep_until_table_active
|
63
|
-
begin
|
64
|
-
Timeout::timeout(TIMEOUT) do
|
65
|
-
sleep 1 until table_active?
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
35
|
end
|
70
36
|
end
|
71
37
|
end
|
data/spec/lookup_spec.rb
CHANGED
@@ -18,7 +18,6 @@ describe Alephant::Lookup do
|
|
18
18
|
it "calls create on lookup_table" do
|
19
19
|
table = double()
|
20
20
|
table.should_receive(:table_name)
|
21
|
-
table.should_receive(:create)
|
22
21
|
subject.new(table, Logger.new(STDOUT))
|
23
22
|
end
|
24
23
|
end
|
@@ -73,26 +72,25 @@ describe Alephant::Lookup do
|
|
73
72
|
|
74
73
|
describe "#write(opts, location)" do
|
75
74
|
it "does not fail" do
|
76
|
-
|
75
|
+
|
76
|
+
AWS::DynamoDB::Client::V20120810
|
77
77
|
.any_instance
|
78
78
|
.stub(:initialize)
|
79
79
|
.and_return(
|
80
80
|
double().as_null_object
|
81
81
|
)
|
82
82
|
|
83
|
-
ddb_table = double().as_null_object
|
84
|
-
ddb_table
|
85
|
-
.should_receive(:batch_put)
|
86
|
-
.with([{
|
87
|
-
:component_key => "id/7e0c33c476b1089500d5f172102ec03e",
|
88
|
-
:batch_version => "0",
|
89
|
-
:location => "/location"
|
90
|
-
}])
|
91
|
-
|
92
83
|
lookup_table = double().as_null_object
|
93
84
|
lookup_table
|
94
|
-
.should_receive(:
|
95
|
-
.and_return(
|
85
|
+
.should_receive(:table_name)
|
86
|
+
.and_return('test')
|
87
|
+
lookup_table
|
88
|
+
.should_receive(:write)
|
89
|
+
.with(
|
90
|
+
"id/7e0c33c476b1089500d5f172102ec03e",
|
91
|
+
"0",
|
92
|
+
"/location"
|
93
|
+
)
|
96
94
|
|
97
95
|
Alephant::Lookup::LookupHelper
|
98
96
|
.any_instance
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alephant-lookup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Kenny
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -244,4 +244,3 @@ summary: Lookup a location in S3 using DynamoDB.
|
|
244
244
|
test_files:
|
245
245
|
- spec/lookup_spec.rb
|
246
246
|
- spec/spec_helper.rb
|
247
|
-
has_rdoc:
|