alephant 0.0.6-java → 0.0.7-java

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: a1840eda13ae723ff872f73da21ee753fc9e8ed6
4
- data.tar.gz: 60f842f7a8a2b0f4787d9394fe5af967a6887eea
3
+ metadata.gz: df75578b70f5f4edee18315d47acdd5b446b319b
4
+ data.tar.gz: 7c21430e5949075f3fb2ea9db699a117a913ac77
5
5
  SHA512:
6
- metadata.gz: 177994daa57df4abae27d9494d11d0e3074f2d6451d2a45795f4339ff65f55c82e65996d1ac746c49e42677d60454e14364ee929bd73a96c9718ff199fb7bbc2
7
- data.tar.gz: fe480adb9ca995f169843f02540d2c95b16b5f214aacf6c4635f2029da0dfd0aee4202b41a77f5dc0ecf604d8f9045b4c50882e2f5b54da230c0800966dd6f96
6
+ metadata.gz: df985a135a85c1fd05f060c897c1e3408b3531d930cc2473862d06be1af3843ee7d54577e085fae4e2276a2abb2c3392d424a3a6308d7856c7125f82ec1ccdfb
7
+ data.tar.gz: 0ef61361d4139f8199437adee01356386c37553f261d9b129e262b886cf3cb28622007e0450d4d10207d3b2da628dd61e91ba393191349ff13caec6857c35659
data/README.md CHANGED
@@ -50,10 +50,14 @@ opts = {
50
50
  }
51
51
  }
52
52
 
53
- thread = Alephant::Alephant.new(opts).run!
53
+ logger = Logger.new
54
+
55
+ thread = Alephant::Alephant.new(opts, logger).run!
54
56
  thread.join
55
57
  ```
56
58
 
59
+ logger is optional, and must confirm to the Ruby standard logger interface
60
+
57
61
  Provide a view in a folder:
58
62
 
59
63
  ```
data/alephant.gemspec CHANGED
@@ -7,7 +7,7 @@ require 'alephant/version'
7
7
  Gem::Specification.new do |s|
8
8
  s.name = 'alephant'
9
9
  s.version = Alephant::VERSION
10
- s.date = '2014-01-08'
10
+ s.date = Time.now.strftime "%Y-%m-%d"
11
11
  s.summary = "Static Publishing in the Cloud"
12
12
  s.description = "Static publishing to S3 based on SQS messages"
13
13
  s.authors = ["Robert Kenny"]
data/lib/alephant.rb CHANGED
@@ -5,6 +5,7 @@ require 'json'
5
5
 
6
6
  require_relative 'env'
7
7
 
8
+ require 'alephant/models/logger'
8
9
  require 'alephant/models/queue'
9
10
  require 'alephant/models/cache'
10
11
  require 'alephant/models/renderer'
@@ -29,7 +30,8 @@ module Alephant
29
30
  :set_last_seen_proc
30
31
  ]
31
32
 
32
- def initialize(opts = {})
33
+ def initialize(opts = {}, logger = nil)
34
+ set_logger(logger)
33
35
  set_opts(opts)
34
36
 
35
37
  @sequencer = Sequencer.new(
@@ -44,6 +46,10 @@ module Alephant
44
46
  @renderer = Renderer.new(@view_id, @view_path)
45
47
  end
46
48
 
49
+ def set_logger(logger)
50
+ ::Alephant.logger = logger
51
+ end
52
+
47
53
  def parse(msg)
48
54
  JSON.parse(msg)
49
55
  end
@@ -5,18 +5,22 @@ module Alephant
5
5
  attr_reader :id, :bucket, :path
6
6
 
7
7
  def initialize(id, path)
8
+ @logger = ::Alephant.logger
8
9
  @id = id
9
10
  @path = path
10
11
 
11
12
  s3 = AWS::S3.new
12
13
  @bucket = s3.buckets[id]
14
+ @logger.info("Cache.initialize: end with id #{id} and path #{path}")
13
15
  end
14
16
 
15
17
  def put(id, data)
16
18
  @bucket.objects["#{@path}/#{id}"].write(data)
19
+ @logger.info("Cache.put: #{@path}/#{id} and write data #{data}")
17
20
  end
18
21
 
19
22
  def get(id)
23
+ @logger.info("Cache.get: #{@path}/#{id}")
20
24
  @bucket.objects["#{@path}/#{id}"].read
21
25
  end
22
26
  end
@@ -0,0 +1,22 @@
1
+ require 'logger'
2
+
3
+ module Alephant
4
+ def self.logger
5
+ ::Alephant::LogSystem.logger
6
+ end
7
+
8
+ def self.logger=(value)
9
+ ::Alephant::LogSystem.logger = value
10
+ end
11
+
12
+ class LogSystem
13
+ def self.logger
14
+ @logger ||= Logger.new(STDOUT)
15
+ end
16
+
17
+ def self.logger=(value)
18
+ @logger = value
19
+ end
20
+ end
21
+ end
22
+
@@ -5,13 +5,18 @@ module Alephant
5
5
  attr_accessor :q
6
6
 
7
7
  def initialize(id)
8
+ @logger = ::Alephant.logger
9
+
8
10
  @sqs = AWS::SQS.new
9
11
  @q = @sqs.queues[id]
10
12
 
11
13
  unless @q.exists?
12
14
  @q = @sqs.queues.create(id)
13
15
  sleep_until_queue_exists
16
+ @logger.info("Queue.initialize: created queue with id #{id}")
14
17
  end
18
+
19
+ @logger.info("Queue.initialize: ended with id #{id}")
15
20
  end
16
21
 
17
22
  def sleep_until_queue_exists
@@ -19,6 +24,7 @@ module Alephant
19
24
  end
20
25
 
21
26
  def poll(*args, &block)
27
+ @logger.info("Queue.poll: polling with arguments #{args}")
22
28
  @q.poll(*args, &block)
23
29
  end
24
30
  end
@@ -8,11 +8,16 @@ module Alephant
8
8
  attr_reader :id
9
9
 
10
10
  def initialize(id, view_base_path=nil)
11
+ @logger = ::Alephant.logger
12
+
11
13
  @id = id
12
14
  self.base_path = view_base_path unless view_base_path.nil?
15
+
16
+ @logger.info("Renderer.initialize: end with self.base_path set to #{self.base_path}")
13
17
  end
14
18
 
15
19
  def render(data)
20
+ @logger.info("Renderer.render: rendered template with id #{id} and data #{data}")
16
21
  Mustache.render(
17
22
  template(@id),
18
23
  model(@id,data)
@@ -27,30 +32,34 @@ module Alephant
27
32
  if File.directory?(path)
28
33
  @base_path = path
29
34
  else
35
+ @logger.error("Renderer.base_path=(path): error of invalid view path #{path}")
30
36
  raise Errors::InvalidViewPath
31
37
  end
32
38
  end
33
39
 
34
40
  def model(id, data)
35
- model_location =
36
- File.join(base_path,'models',"#{id}.rb")
41
+ model_location = File.join(base_path, 'models', "#{id}.rb")
37
42
 
38
43
  begin
39
44
  require model_location
40
45
  klass = ::Alephant::Views.get_registered_class(id)
46
+ @logger.info("Renderer.model: klass set to #{klass}")
41
47
  rescue Exception => e
48
+ @logger.error("Renderer.model: view model with id #{id} not found")
42
49
  raise Errors::ViewModelNotFound
43
50
  end
44
51
 
52
+ @logger.info("Renderer.model: creating new klass with data #{data}")
45
53
  klass.new(data)
46
54
  end
47
55
 
48
56
  def template(id)
49
- template_location =
50
- File.join(base_path,'templates',"#{id}.mustache")
57
+ template_location = File.join(base_path,'templates',"#{id}.mustache")
51
58
  begin
59
+ @logger.info("Renderer.template: #{template_location}")
52
60
  File.open(template_location).read
53
61
  rescue Exception => e
62
+ @logger.error("Renderer.template: view tempalte with id #{id} not found")
54
63
  raise Errors::ViewTemplateNotFound
55
64
  end
56
65
  end
@@ -18,6 +18,8 @@ module Alephant
18
18
  end
19
19
 
20
20
  def initialize(opts, id)
21
+ @logger = ::Alephant.logger
22
+
21
23
  dynamo_db = AWS::DynamoDB.new
22
24
 
23
25
  @id = id
@@ -28,6 +30,8 @@ module Alephant
28
30
  begin
29
31
  sleep_until_table_active
30
32
  rescue AWS::DynamoDB::Errors::ResourceNotFoundException
33
+ @logger.error("Sequencer.initialize: DynamoDB resource was not found.")
34
+
31
35
  @table = dynamo_db.tables.create(
32
36
  @table_name,
33
37
  @table_conf[:read_units],
@@ -35,8 +39,12 @@ module Alephant
35
39
  @table_conf[:schema]
36
40
  )
37
41
 
42
+ @logger.info("Sequencer.initialize: Creating table with name #{@table_name}, read units #{@table_conf[:read_units]}, write units #{@table_conf[:write_units]}, schema #{@table_conf[:schema]}")
43
+
38
44
  sleep_until_table_active
39
45
  end
46
+
47
+ @logger.info("Sequencer.initialize: end with id #{@id}")
40
48
  end
41
49
 
42
50
  def sequential?(data)
@@ -53,6 +61,7 @@ module Alephant
53
61
  batch = AWS::DynamoDB::BatchWrite.new
54
62
  batch.put(@table_name, [:key => @id,:value => last_seen_id])
55
63
  batch.process!
64
+ @logger.info("Sequencer.set_last_seen: id #{id} and last_seen_id #{last_seen_id}")
56
65
  end
57
66
 
58
67
  def get_last_seen
@@ -65,6 +74,7 @@ module Alephant
65
74
  }
66
75
  ).first["value"].to_i
67
76
  rescue
77
+ @logger.error("Sequencer.get_last_seen: id #{id}")
68
78
  0
69
79
  end
70
80
  end
@@ -1,3 +1,3 @@
1
1
  module Alephant
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -1,6 +1,6 @@
1
- module Alephant::Views
2
- autoload :Base, 'alephant/views/base'
1
+ require 'alephant/views/base'
3
2
 
3
+ module Alephant::Views
4
4
  @@views = {}
5
5
 
6
6
  def self.register(klass)
data/lib/env.rb CHANGED
@@ -3,7 +3,7 @@ require 'yaml'
3
3
 
4
4
  require 'alephant/util/string'
5
5
 
6
- config_file = File.join("config", "aws.yml")
6
+ config_file = File.join('config', 'aws.yaml')
7
7
 
8
8
  if File.exists? config_file
9
9
  config = YAML.load(File.read(config_file))
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alephant::LogSystem do
4
+ before(:each) do
5
+ sequencer = double()
6
+ queue = double()
7
+ cache = double()
8
+ renderer = double()
9
+
10
+ Alephant::Sequencer.any_instance.stub(:initialize).and_return(sequencer)
11
+ Alephant::Queue.any_instance.stub(:initialize).and_return(queue)
12
+ Alephant::Cache.any_instance.stub(:initialize).and_return(cache)
13
+ Alephant::Renderer.any_instance.stub(:initialize).and_return(renderer)
14
+ end
15
+
16
+ after(:each) do
17
+ Alephant.logger = nil
18
+ end
19
+
20
+ let (:instance) { Alephant::Alephant }
21
+ subject { Alephant::LogSystem }
22
+
23
+ describe "::Alephant::LogSystem.logger" do
24
+ context "Logger not provided" do
25
+ it "return Ruby built-in Logger" do
26
+ instance.new
27
+ expect(Alephant.logger.class).to be(Logger)
28
+ end
29
+ end
30
+
31
+ context "Logger provided" do
32
+ it "return custom Logger" do
33
+ class FakeLogger; end
34
+ instance.new({}, FakeLogger.new)
35
+ expect(Alephant.logger.class).to be(FakeLogger)
36
+ end
37
+ end
38
+ end
39
+ end
40
+
data/spec/spec_helper.rb CHANGED
@@ -2,4 +2,5 @@ $: << File.join(File.dirname(__FILE__),"..", "lib")
2
2
 
3
3
  require 'pry'
4
4
  require 'alephant'
5
+ require 'logger'
5
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alephant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: java
6
6
  authors:
7
7
  - Robert Kenny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-08 00:00:00.000000000 Z
11
+ date: 2014-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -171,6 +171,7 @@ files:
171
171
  - lib/alephant/errors/view_model_not_found.rb
172
172
  - lib/alephant/errors/view_template_not_found.rb
173
173
  - lib/alephant/models/cache.rb
174
+ - lib/alephant/models/logger.rb
174
175
  - lib/alephant/models/queue.rb
175
176
  - lib/alephant/models/renderer.rb
176
177
  - lib/alephant/models/sequencer.rb
@@ -183,6 +184,7 @@ files:
183
184
  - spec/cache_spec.rb
184
185
  - spec/fixtures/views/models/example.rb
185
186
  - spec/fixtures/views/templates/example.mustache
187
+ - spec/logger_spec.rb
186
188
  - spec/queue_spec.rb
187
189
  - spec/renderer_spec.rb
188
190
  - spec/sequencer_spec.rb
@@ -216,6 +218,7 @@ test_files:
216
218
  - spec/cache_spec.rb
217
219
  - spec/fixtures/views/models/example.rb
218
220
  - spec/fixtures/views/templates/example.mustache
221
+ - spec/logger_spec.rb
219
222
  - spec/queue_spec.rb
220
223
  - spec/renderer_spec.rb
221
224
  - spec/sequencer_spec.rb