alephant-broker 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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