cube-ruby 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -17,7 +17,7 @@ Here's a version compatibility table:
17
17
  Cube | cube-ruby
18
18
  --------------------
19
19
  0.2.0 | 0.0.1
20
- 0.2.1 | 0.0.2 (master)
20
+ 0.2.1+ | 0.0.2 (master)
21
21
 
22
22
  Add this line to your application's `Gemfile`:
23
23
 
@@ -53,7 +53,7 @@ $cube = Cube::Client.new 'cube.example.org', 2280
53
53
  $cube.send "foo"
54
54
 
55
55
  # send a new event to cube that looks like this:
56
- # { type: "request", time: [now], data: { value: "somevalue" } }
56
+ # { type: "request", data: { value: "somevalue" } }
57
57
  $cube.send "request", value: "somevalue"
58
58
 
59
59
  # optionally specify a specific date/time (two days ago)
@@ -4,8 +4,8 @@ require File.expand_path('../lib/cube/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Cody Krieger"]
6
6
  gem.email = ["cody@codykrieger.com"]
7
- gem.description = %q{A Cube client for Ruby (https://square.github.com/cube).}
8
- gem.summary = %q{A Cube client for Ruby (https://square.github.com/cube).}
7
+ gem.description = %q{A Cube client for Ruby (http://square.github.com/cube).}
8
+ gem.summary = %q{A Cube client for Ruby (http://square.github.com/cube).}
9
9
  gem.homepage = "https://github.com/codykrieger/cube-ruby"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
@@ -22,17 +22,18 @@ module Cube
22
22
  end
23
23
 
24
24
  # Set 'er up with a host and port, defaults to `localhost:1180`.
25
+ #
26
+ # @param [String] The hostname to send metrics to.
27
+ # @param [Integer] The UDP port to send metrics to.
25
28
  def initialize(host="localhost", port=1180)
26
29
  @host, @port = host, port
27
30
  end
28
31
 
29
- # The primary endpoint for sending metrics to Cube - call like this:
32
+ # The primary endpoint for sending metrics to Cube.
30
33
  #
31
- # ```ruby
32
- # cube = Cube::Client.new
33
- # cube.send "request", value: "somevalue"
34
- # cube.send "request", DateTime.now, duration_ms: 234
35
- # ```
34
+ # @param [String] The desired name of the new Cube event.
35
+ # @param [Array] A splat that takes an optional DateTime, an event id
36
+ # (typically an integer, but can be any object), and a Hash of data.
36
37
  def send(type, *args)
37
38
  time = nil
38
39
  id = nil
@@ -41,13 +42,14 @@ module Cube
41
42
  until args.empty?
42
43
  arg = args.shift
43
44
 
44
- if arg.is_a? DateTime
45
- time ||= arg
46
- elsif arg.is_a? Hash
47
- data ||= arg
48
- else
49
- id ||= arg
50
- end
45
+ case arg
46
+ when DateTime, Time
47
+ time ||= arg
48
+ when Hash
49
+ data ||= arg
50
+ else
51
+ id ||= arg
52
+ end
51
53
  end
52
54
 
53
55
  # Send off our parsed arguments to be further massaged and socketized.
@@ -58,6 +60,12 @@ module Cube
58
60
 
59
61
  # Actually send the given data to a socket, and potentially log it along
60
62
  # the way.
63
+ #
64
+ # @param [String] The desired name of the new Cube event.
65
+ # @param [DateTime] Optional. A specific time when the Cube event occurred.
66
+ # @param [Object] Optional. Typically an integer, but can be any object.
67
+ # @param [Hash] Optional. Anything in this hash will be stored in the
68
+ # `data` subdocument of the Cube event.
61
69
  def actual_send(type, time, id, data)
62
70
  # Namespace support!
63
71
  prefix = "#{@namespace}_" unless @namespace.nil?
@@ -1,3 +1,3 @@
1
1
  module Cube
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,6 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), 'lib')
2
+ require 'cube'
3
+
4
+ cube = Cube::Client.new
5
+ cube.send "testorz"
6
+
@@ -1,5 +1,6 @@
1
1
  require 'helper'
2
2
  require 'date'
3
+ require 'time'
3
4
  require 'json'
4
5
 
5
6
  # a few things yanked verbatim from here: https://github.com/github/statsd-ruby/blob/master/spec/statsd_spec.rb
@@ -37,7 +38,7 @@ describe Cube::Client do
37
38
  recv["type"].must_equal "request"
38
39
  end
39
40
 
40
- describe "with a time" do
41
+ describe "with a DateTime" do
41
42
  it "should format the message according to the Cube spec" do
42
43
  type = "request"
43
44
  time = DateTime.now
@@ -63,6 +64,21 @@ describe Cube::Client do
63
64
  end
64
65
  end
65
66
 
67
+ describe "with Time" do
68
+ it "should format the message according to the Cube spec" do
69
+ type = "request"
70
+ time = Time.now
71
+ id = 42
72
+ data = { duration_ms: 234 }
73
+ @cube.send type, time, id, data
74
+ recv = JSON.parse @cube.socket.recv.first
75
+ recv["type"].must_equal "request"
76
+ recv["time"].must_equal time.iso8601
77
+ recv["id"].must_equal 42
78
+ recv["data"].must_equal({ "duration_ms" => 234 })
79
+ end
80
+ end
81
+
66
82
  describe "with data" do
67
83
  it "should format the message according to the Cube spec" do
68
84
  type = "request"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cube-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-01 00:00:00.000000000 Z
12
+ date: 2013-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -27,7 +27,7 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- description: A Cube client for Ruby (https://square.github.com/cube).
30
+ description: A Cube client for Ruby (http://square.github.com/cube).
31
31
  email:
32
32
  - cody@codykrieger.com
33
33
  executables: []
@@ -42,6 +42,7 @@ files:
42
42
  - cube-ruby.gemspec
43
43
  - lib/cube.rb
44
44
  - lib/cube/version.rb
45
+ - realtest.rb
45
46
  - spec/cube_spec.rb
46
47
  - spec/helper.rb
47
48
  homepage: https://github.com/codykrieger/cube-ruby
@@ -67,7 +68,7 @@ rubyforge_project:
67
68
  rubygems_version: 1.8.23
68
69
  signing_key:
69
70
  specification_version: 3
70
- summary: A Cube client for Ruby (https://square.github.com/cube).
71
+ summary: A Cube client for Ruby (http://square.github.com/cube).
71
72
  test_files:
72
73
  - spec/cube_spec.rb
73
74
  - spec/helper.rb