ramon 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,3 +4,6 @@ source "http://rubygems.org"
4
4
  gemspec
5
5
 
6
6
  gem 'rails', :group => :test
7
+
8
+
9
+ gem 'ramon', :path => '~/ramon'
@@ -1,7 +1,7 @@
1
1
  module Ramon
2
2
  class Configuration
3
3
  class ConfigurationException < StandardError; end
4
- OPTIONS = [:app_key, :host, :port, :secret,
4
+ OPTIONS = [:app_key, :address, :secret, :protocol,
5
5
  :environment_name, :framework, :project_root].freeze
6
6
 
7
7
  # The Aplication key. Only in Amon Plus.
@@ -11,7 +11,7 @@ module Ramon
11
11
  attr_accessor :secret
12
12
 
13
13
  # The host to connect to (defaults to 127.0.0.1).
14
- attr_accessor :host
14
+ attr_accessor :address
15
15
 
16
16
  # The port on which your Amon instance runs. Defaults to 2464
17
17
  attr_accessor :port
@@ -28,12 +28,15 @@ module Ramon
28
28
  # The logger used by Amon
29
29
  attr_accessor :logger
30
30
 
31
+ # The name of the procotol used to log data - (http/zeromq)
32
+ attr_accessor :protocol
33
+
31
34
  def initialize
32
- @host = 'http://127.0.0.1'
33
- @port = 2464
35
+ @address = 'http://127.0.0.1:2464'
34
36
  @app_key = ''
35
37
  @secret = ''
36
38
  @framework = 'Standalone'
39
+ @protocol = 'http'
37
40
  end
38
41
 
39
42
 
@@ -1,12 +1,16 @@
1
1
  require 'net/http'
2
2
  require 'json'
3
3
  require 'zlib'
4
+ begin
5
+ require 'zmq'
6
+ rescue LoadError
7
+ end
4
8
 
5
9
  module Ramon
6
10
  class Sender
7
11
  def initialize(options = {})
8
- [ :host,
9
- :port,
12
+ [ :address,
13
+ :protocol,
10
14
  :app_key,
11
15
  :secret
12
16
  ].each do |option|
@@ -14,9 +18,8 @@ module Ramon
14
18
  end
15
19
  end
16
20
 
17
-
18
- attr_reader :host,
19
- :port,
21
+ attr_reader :address,
22
+ :protocol,
20
23
  :app_key,
21
24
  :secret
22
25
 
@@ -31,11 +34,11 @@ module Ramon
31
34
 
32
35
 
33
36
  def url
34
- URI.parse("#{host}:#{port}/api/")
37
+ URI.parse("#{address}/api/")
35
38
  end
36
39
 
37
- def post(type, data)
38
-
40
+ def post_http(type, data = {})
41
+
39
42
  if type == 'log'
40
43
  @url = "#{url}log/#{app_key}"
41
44
  else
@@ -49,7 +52,7 @@ module Ramon
49
52
  response = Net::HTTP.new(url.host, url.port).start {|http| http.request(request) }
50
53
  case response
51
54
  when Net::HTTPSuccess
52
- log :error, "#{@url} - #{response.message}"
55
+ log :info, "#{@url} - #{response.message}"
53
56
  return response
54
57
  else
55
58
  log :error, "#{@url} - #{response.code} - #{response.message}"
@@ -58,7 +61,33 @@ module Ramon
58
61
  log :error, "[Ramon::Sender#post] Cannot send data to #{@url} Error: #{e.class} - #{e.message}"
59
62
  nil
60
63
  end
64
+ end
65
+
66
+ def post_zeromq(type, data = {})
67
+ if defined?(ZMQ)
68
+ context = ZMQ::Context.new()
69
+ socket = context.socket(ZMQ::DEALER)
70
+ socket.connect("tcp://#{address}")
71
+ json_data = {:type => type,
72
+ :content => data}
73
+ if app_key
74
+ json_data['app_key'] = app_key
75
+ end
76
+
77
+ json_data = json_data.to_json
78
+
79
+ socket.send(json_data, ZMQ::NOBLOCK)
80
+ socket.close()
81
+ true
82
+ end
83
+ end
61
84
 
85
+ def post(type, data)
86
+ if protocol == 'zeromq'
87
+ post_zeromq(type, data)
88
+ elsif protocol == 'http'
89
+ post_http(type, data)
90
+ end
62
91
  end
63
92
 
64
93
  end # Class end
@@ -1,3 +1,3 @@
1
1
  module Ramon
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -5,8 +5,8 @@ describe Configuration do
5
5
 
6
6
  it "should provide default values" do
7
7
  config = Ramon::Configuration.new
8
- config.port.should == 2464
9
- config.host.should == 'http://127.0.0.1'
8
+ config.address.should == 'http://127.0.0.1:2464'
9
+ config.protocol.should == 'http'
10
10
  end
11
11
 
12
12
  end
@@ -1,14 +1,15 @@
1
1
  require 'spec_helper'
2
+ require "logger"
2
3
 
3
4
  module Ramon
4
5
  # Works only when the Amon application is started
5
- describe 'Web app test' do
6
+ describe 'Web app http test' do
6
7
 
7
8
  it 'Test logging' do
8
9
 
9
10
  Ramon.configure do |config|
10
- config.host = 'http://127.0.0.1'
11
- config.port = 2464
11
+ config.address = 'http://127.0.0.1:2465'
12
+ config.logger = Logger.new(STDOUT)
12
13
  end
13
14
 
14
15
  Ramon.log([1,2,3,4]).response.code.should == "200"
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+ require "logger"
3
+
4
+ module Ramon
5
+ # Works only when the AmonMQ server is started
6
+ describe 'Web app zeromq test' do
7
+
8
+ it 'Test ZeroMQ logging' do
9
+
10
+ Ramon.configure do |config|
11
+ config.address = '127.0.0.1:5464'
12
+ config.protocol = 'zeromq'
13
+ config.logger = Logger.new(STDOUT)
14
+ end
15
+
16
+ Ramon.log([1,2,3,4]).should == true
17
+ Ramon.log({:test => 'zeromq data', :more_test => 'more zeromq data'}).should == true
18
+ end
19
+
20
+ it 'Test logging with multiple tags' do
21
+ Ramon.log("test zeromq", ['debug', 'benchmark']).should == true
22
+ Ramon.log({:test => 'data', :more_test => 'more_data'}, ['info','warning','user']).should == true
23
+ end
24
+
25
+
26
+ it 'Test Exceptions' do
27
+ Ramon.post('exception', {:url => 'test', :exception_class => 'test_me zeromq'}).should == true
28
+ end
29
+
30
+ end
31
+ end
32
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ramon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
10
- version: 0.4.0
9
+ - 1
10
+ version: 0.4.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - martinrusev
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-23 00:00:00 +00:00
18
+ date: 2012-04-07 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -62,6 +62,7 @@ files:
62
62
  - spec/rails_integration_spec.rb
63
63
  - spec/spec_helper.rb
64
64
  - spec/web_spec.rb
65
+ - spec/zeromq_spec.rb
65
66
  has_rdoc: true
66
67
  homepage: http://amon.cx
67
68
  licenses: []