alephant-broker 1.0.0 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38bbbde873e9befab83b241a575c79c3e60bb587
4
- data.tar.gz: d6d650f9cb5e9e50ff3b665cc4f9f6759110c279
3
+ metadata.gz: ce3d6afda8699e8e18f0988692abcd9abdc23bd5
4
+ data.tar.gz: 83fd6ac78a25d9d412ada73b072c48216a0a6793
5
5
  SHA512:
6
- metadata.gz: faf61092ff24d4b65bbeee0dc8915662e731d8ed067ce6a789d0a663d2bc2ada0d6da2640424711decfa3500f97ec54a65a4124d918216dc28bb7bc0ab359079
7
- data.tar.gz: 78132a0acdd19c4eda3ad0e3a5363bb4ec07081fd37c6364578e09baa786ffb580177b457b4c2ee3c488dd2486564d77dc9ba44d5e156094ece521c05e676519
6
+ metadata.gz: 8314f42ed32e235903b076ddbb0649945114e406ffb548a990aab0e47ef7ee00907c79043d5d01fd5c7fc5543371d471ed09f169f8d096fbf454e268c9708c21
7
+ data.tar.gz: 2d9a27867bf43318d8bc1c5490bf0e4f8c7952ec3687c8939bf148788d00888c2a5806fdf663dc5c29b9c629ee836a71c8b60031ebee60f3784bbf7b98f55e00
@@ -36,4 +36,5 @@ Gem::Specification.new do |spec|
36
36
  spec.add_runtime_dependency "alephant-cache"
37
37
  spec.add_runtime_dependency 'alephant-logger'
38
38
  spec.add_runtime_dependency 'alephant-sequencer'
39
+ spec.add_runtime_dependency "dalli-elasticache"
39
40
  end
@@ -0,0 +1,58 @@
1
+ require 'dalli-elasticache'
2
+ require 'alephant/logger'
3
+
4
+ module Alephant
5
+ module Broker
6
+ module Cache
7
+
8
+ class Client
9
+ include Logger
10
+
11
+ DEFAULT_TTL = 2592000
12
+
13
+ def initialize
14
+ unless config_endpoint.nil?
15
+ @@elasticache ||= ::Dalli::ElastiCache.new(config_endpoint, { :expires_in => ttl })
16
+ @client = @@elasticache.client
17
+ else
18
+ logger.info('Broker::Cache::Client#initialize: No config endpoint, NullClient used')
19
+ @client = NullClient.new
20
+ end
21
+ end
22
+
23
+ def config_endpoint
24
+ Broker.config['elasticache_config_endpoint']
25
+ end
26
+
27
+ def ttl
28
+ Broker.config['elasticache_ttl'] || DEFAULT_TTL
29
+ end
30
+
31
+ def get(key, &block)
32
+ begin
33
+ result = @client.get(key)
34
+ logger.info("Broker::Cache::Client#get key: #{key} - #{result ? 'hit' : 'miss'}")
35
+ result ? result : set(key, block.call)
36
+ rescue StandardError => e
37
+ block.call if block_given?
38
+ end
39
+ end
40
+
41
+ def set(key, value)
42
+ value.tap { |o| @client.set(key, o) }
43
+ end
44
+
45
+ end
46
+
47
+ class NullClient
48
+ def get(key); end
49
+
50
+ def set(key, value)
51
+ value
52
+ end
53
+ end
54
+
55
+ end
56
+ end
57
+ end
58
+
@@ -4,9 +4,11 @@ require 'alephant/cache'
4
4
  require 'alephant/lookup'
5
5
  require 'alephant/broker/errors/invalid_cache_key'
6
6
  require 'alephant/sequencer'
7
+ require 'alephant/broker/cache'
7
8
 
8
9
  module Alephant
9
10
  module Broker
11
+
10
12
  class Component
11
13
  include Logger
12
14
 
@@ -15,11 +17,14 @@ module Alephant
15
17
  def initialize(id, batch_id, options)
16
18
  @id = id
17
19
  @batch_id = batch_id
20
+ @cache = Cache::Client.new
18
21
  @options = symbolize(options || {})
19
22
  end
20
23
 
21
24
  def load
22
- @content ||= cache.get(s3_path)
25
+ @content ||= @cache.get(cache_key) do
26
+ s3.get(s3_path)
27
+ end
23
28
  end
24
29
 
25
30
  def opts_hash
@@ -32,12 +37,16 @@ module Alephant
32
37
 
33
38
  private
34
39
 
40
+ def cache_key
41
+ @cache_key ||= "#{id}/#{opts_hash}/#{version}"
42
+ end
43
+
35
44
  def symbolize(hash)
36
45
  Hash[hash.map { |k,v| [k.to_sym, v] }]
37
46
  end
38
47
 
39
- def cache
40
- @cache ||= Alephant::Cache.new(
48
+ def s3
49
+ @s3_cache ||= Alephant::Cache.new(
41
50
  Broker.config[:s3_bucket_id],
42
51
  Broker.config[:s3_object_path]
43
52
  )
@@ -1,5 +1,5 @@
1
1
  module Alephant
2
2
  module Broker
3
- VERSION = "1.0.0"
3
+ VERSION = "1.0.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alephant-broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Jack
@@ -234,6 +234,20 @@ dependencies:
234
234
  version: '0'
235
235
  prerelease: false
236
236
  type: :runtime
237
+ - !ruby/object:Gem::Dependency
238
+ name: dalli-elasticache
239
+ version_requirements: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - '>='
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ requirement: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - '>='
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ prerelease: false
250
+ type: :runtime
237
251
  description: Brokers requests for alephant components
238
252
  email:
239
253
  - stevenmajack@gmail.com
@@ -251,6 +265,7 @@ files:
251
265
  - Rakefile
252
266
  - alephant-broker.gemspec
253
267
  - lib/alephant/broker.rb
268
+ - lib/alephant/broker/cache.rb
254
269
  - lib/alephant/broker/component.rb
255
270
  - lib/alephant/broker/environment.rb
256
271
  - lib/alephant/broker/errors/invalid_asset_id.rb