Class: DynamoLocalRuby::DynamoDBLocal

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamo-local-ruby/dynamo_db_local.rb

Overview

Wrapper around Dynamo DB local process

Constant Summary collapse

PORT =
9389
ENDPOINT =
"http://localhost:#{PORT}"
LATEST_WEB_TGZ =
'http://dynamodb-local.s3-website-us-west-2.amazonaws.com'\
'/dynamodb_local_latest.tar.gz'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pid) ⇒ DynamoDBLocal

Returns a new instance of DynamoDBLocal.



11
12
13
# File 'lib/dynamo-local-ruby/dynamo_db_local.rb', line 11

def initialize(pid)
  @pid = pid
end

Class Method Details

.downObject



37
38
39
# File 'lib/dynamo-local-ruby/dynamo_db_local.rb', line 37

def down
  @instance.down if defined? @instance
end

.ensure_dynamo_local_exists(local_path) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/dynamo-local-ruby/dynamo_db_local.rb', line 16

def ensure_dynamo_local_exists(local_path)
  jar_path = File.join(local_path, 'DynamoDBLocal.jar')
  return if File.exist?(jar_path)
  `mkdir -p #{local_path}`
  latest = File.join(local_path, 'dynamodb_local_latest.tar.gz')
  `wget #{LATEST_WEB_TGZ} -o #{latest}` unless File.exist?(latest)
  `tar xzf #{latest} -C #{local_path}`
end

.up(build_path) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/dynamo-local-ruby/dynamo_db_local.rb', line 25

def up(build_path)
  local_path = File.join(build_path, 'dynamo_db_local')
  ensure_dynamo_local_exists(local_path)
  lib_path = File.join(local_path, 'DynamoDBLocal_lib')
  jar_path = File.join(local_path, 'DynamoDBLocal.jar')
  pid = spawn("java -Djava.library.path=#{lib_path} -jar #{jar_path} "\
              "-sharedDb -inMemory -port #{PORT}")
  @instance = DynamoDBLocal.new(pid)

  @instance
end

Instance Method Details

#downObject



42
43
44
45
46
47
# File 'lib/dynamo-local-ruby/dynamo_db_local.rb', line 42

def down
  return unless @pid
  Process.kill('SIGINT', @pid)
  Process.waitpid2(@pid)
  @pid = nil
end