analytics-ruby 0.3.2 → 0.3.3

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.
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ analytics-ruby (0.3.2)
5
+ faraday (>= 0.8, < 0.10)
6
+ faraday_middleware (>= 0.8, < 0.10)
7
+ multi_json (~> 1.0)
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ diff-lcs (1.2.4)
13
+ faraday (0.8.8)
14
+ multipart-post (~> 1.2.0)
15
+ faraday_middleware (0.9.0)
16
+ faraday (>= 0.7.4, < 0.9)
17
+ multi_json (1.7.7)
18
+ multipart-post (1.2.0)
19
+ rake (10.1.0)
20
+ rspec (2.14.1)
21
+ rspec-core (~> 2.14.0)
22
+ rspec-expectations (~> 2.14.0)
23
+ rspec-mocks (~> 2.14.0)
24
+ rspec-core (2.14.4)
25
+ rspec-expectations (2.14.0)
26
+ diff-lcs (>= 1.1.3, < 2.0)
27
+ rspec-mocks (2.14.2)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ analytics-ruby!
34
+ rake
35
+ rspec
data/History.md CHANGED
@@ -1,3 +1,7 @@
1
+ 0.3.3 / 2013-8-2
2
+ ===========
3
+ * Allow init/track/identify/alias to accept strings as keys. by [@shipstar](https://github.com/shipstar)
4
+
1
5
  0.3.2 / 2013-5-28
2
6
  ===========
3
7
  * Adding faraday timeout by [@yanchenyun](https://github.com/yangchenyun)
@@ -4,6 +4,7 @@ require 'thread'
4
4
  require 'analytics-ruby/defaults'
5
5
  require 'analytics-ruby/consumer'
6
6
  require 'analytics-ruby/request'
7
+ require 'analytics-ruby/util'
7
8
 
8
9
  module AnalyticsRuby
9
10
 
@@ -17,6 +18,8 @@ module AnalyticsRuby
17
18
  # :on_error - Proc which handles error calls from the API
18
19
  def initialize(options = {})
19
20
 
21
+ Util.symbolize_keys!(options)
22
+
20
23
  @queue = Queue.new
21
24
  @secret = options[:secret]
22
25
  @max_queue_size = options[:max_queue_size] || AnalyticsRuby::Defaults::Queue::MAX_SIZE
@@ -49,6 +52,8 @@ module AnalyticsRuby
49
52
 
50
53
  check_secret
51
54
 
55
+ Util.symbolize_keys!(options)
56
+
52
57
  event = options[:event]
53
58
  user_id = options[:user_id].to_s
54
59
  properties = options[:properties] || {}
@@ -85,6 +90,8 @@ module AnalyticsRuby
85
90
 
86
91
  check_secret
87
92
 
93
+ Util.symbolize_keys!(options)
94
+
88
95
  user_id = options[:user_id].to_s
89
96
  traits = options[:traits] || {}
90
97
  timestamp = options[:timestamp] || Time.new
@@ -115,6 +122,8 @@ module AnalyticsRuby
115
122
 
116
123
  check_secret
117
124
 
125
+ Util.symbolize_keys!(options)
126
+
118
127
  from = options[:from].to_s
119
128
  to = options[:to].to_s
120
129
  timestamp = options[:timestamp] || Time.new
@@ -1,6 +1,7 @@
1
1
 
2
2
  require 'analytics-ruby/defaults'
3
3
  require 'analytics-ruby/request'
4
+ require 'analytics-ruby/util'
4
5
 
5
6
  module AnalyticsRuby
6
7
 
@@ -18,6 +19,8 @@ module AnalyticsRuby
18
19
  # on_error - Proc of what to do on an error
19
20
  #
20
21
  def initialize(queue, secret, options = {})
22
+ Util.symbolize_keys!(options)
23
+
21
24
  @queue = queue
22
25
  @secret = secret
23
26
  @batch_size = options[:batch_size] || AnalyticsRuby::Defaults::Queue::BATCH_SIZE
@@ -0,0 +1,13 @@
1
+ module Util
2
+ def self.symbolize_keys(hash)
3
+ hash.inject({}) { |memo, (k,v)| memo[k.to_sym] = v; memo }
4
+ end
5
+
6
+ def self.symbolize_keys!(hash)
7
+ hash.replace symbolize_keys(hash)
8
+ end
9
+
10
+ def self.stringify_keys(hash)
11
+ hash.inject({}) { |memo, (k,v)| memo[k.to_s] = v; memo }
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module AnalyticsRuby
2
- VERSION = '0.3.2'
2
+ VERSION = '0.3.3'
3
3
  end
@@ -13,6 +13,10 @@ describe Analytics::Client do
13
13
  it 'should not error if a secret is supplied' do
14
14
  Analytics::Client.new secret: AnalyticsHelpers::SECRET
15
15
  end
16
+
17
+ it 'should not error if a secret is supplied as a string' do
18
+ Analytics::Client.new 'secret' => AnalyticsHelpers::SECRET
19
+ end
16
20
  end
17
21
 
18
22
  describe '#track' do
@@ -38,6 +42,10 @@ describe Analytics::Client do
38
42
  it 'should not error with the required options' do
39
43
  @client.track AnalyticsHelpers::Queued::TRACK
40
44
  end
45
+
46
+ it 'should not error when given string keys' do
47
+ @client.track Util.stringify_keys(AnalyticsHelpers::Queued::TRACK)
48
+ end
41
49
  end
42
50
 
43
51
 
@@ -54,6 +62,10 @@ describe Analytics::Client do
54
62
  it 'should not error with the required options' do
55
63
  @client.identify AnalyticsHelpers::Queued::IDENTIFY
56
64
  end
65
+
66
+ it 'should not error with the required options as strings' do
67
+ @client.identify Util.stringify_keys(AnalyticsHelpers::Queued::IDENTIFY)
68
+ end
57
69
  end
58
70
 
59
71
  describe '#alias' do
@@ -72,6 +84,10 @@ describe Analytics::Client do
72
84
  it 'should not error with the required options' do
73
85
  @client.alias AnalyticsHelpers::ALIAS
74
86
  end
87
+
88
+ it 'should not error with the required options as strings' do
89
+ @client.alias Util.stringify_keys(AnalyticsHelpers::ALIAS)
90
+ end
75
91
  end
76
92
 
77
93
  describe '#flush' do
@@ -4,6 +4,14 @@ require 'spec_helper'
4
4
 
5
5
  describe Analytics::Consumer do
6
6
 
7
+ describe "#init" do
8
+ it 'accepts string keys' do
9
+ queue = Queue.new
10
+ consumer = Analytics::Consumer.new(queue, 'secret', 'batch_size' => 100)
11
+ consumer.instance_variable_get(:@batch_size).should == 100
12
+ end
13
+ end
14
+
7
15
  describe '#flush' do
8
16
 
9
17
  it 'should not error if the endpoint is unreachable' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: analytics-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-28 00:00:00.000000000 Z
12
+ date: 2013-08-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
- requirement: &11643380 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -24,10 +24,18 @@ dependencies:
24
24
  version: '0.10'
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *11643380
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0.8'
33
+ - - <
34
+ - !ruby/object:Gem::Version
35
+ version: '0.10'
28
36
  - !ruby/object:Gem::Dependency
29
37
  name: faraday_middleware
30
- requirement: &11642580 !ruby/object:Gem::Requirement
38
+ requirement: !ruby/object:Gem::Requirement
31
39
  none: false
32
40
  requirements:
33
41
  - - ! '>='
@@ -38,10 +46,18 @@ dependencies:
38
46
  version: '0.10'
39
47
  type: :runtime
40
48
  prerelease: false
41
- version_requirements: *11642580
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0.8'
55
+ - - <
56
+ - !ruby/object:Gem::Version
57
+ version: '0.10'
42
58
  - !ruby/object:Gem::Dependency
43
59
  name: multi_json
44
- requirement: &11641840 !ruby/object:Gem::Requirement
60
+ requirement: !ruby/object:Gem::Requirement
45
61
  none: false
46
62
  requirements:
47
63
  - - ~>
@@ -49,10 +65,15 @@ dependencies:
49
65
  version: '1.0'
50
66
  type: :runtime
51
67
  prerelease: false
52
- version_requirements: *11641840
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ version: '1.0'
53
74
  - !ruby/object:Gem::Dependency
54
75
  name: rake
55
- requirement: &11641400 !ruby/object:Gem::Requirement
76
+ requirement: !ruby/object:Gem::Requirement
56
77
  none: false
57
78
  requirements:
58
79
  - - ! '>='
@@ -60,10 +81,15 @@ dependencies:
60
81
  version: '0'
61
82
  type: :development
62
83
  prerelease: false
63
- version_requirements: *11641400
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
64
90
  - !ruby/object:Gem::Dependency
65
91
  name: rspec
66
- requirement: &12146780 !ruby/object:Gem::Requirement
92
+ requirement: !ruby/object:Gem::Requirement
67
93
  none: false
68
94
  requirements:
69
95
  - - ! '>='
@@ -71,30 +97,37 @@ dependencies:
71
97
  version: '0'
72
98
  type: :development
73
99
  prerelease: false
74
- version_requirements: *12146780
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
75
106
  description: The Segment.io ruby analytics library
76
107
  email: friends@segment.io
77
108
  executables: []
78
109
  extensions: []
79
110
  extra_rdoc_files: []
80
111
  files:
112
+ - analytics-ruby.gemspec
81
113
  - Gemfile
82
- - README.md
83
- - lib/analytics-ruby.rb
84
- - lib/analytics-ruby/response.rb
85
- - lib/analytics-ruby/defaults.rb
114
+ - Gemfile.lock
115
+ - History.md
116
+ - lib/analytics-ruby/client.rb
86
117
  - lib/analytics-ruby/consumer.rb
118
+ - lib/analytics-ruby/defaults.rb
119
+ - lib/analytics-ruby/json.rb
87
120
  - lib/analytics-ruby/request.rb
121
+ - lib/analytics-ruby/response.rb
122
+ - lib/analytics-ruby/util.rb
88
123
  - lib/analytics-ruby/version.rb
89
- - lib/analytics-ruby/json.rb
90
- - lib/analytics-ruby/client.rb
91
- - History.md
92
- - analytics-ruby.gemspec
124
+ - lib/analytics-ruby.rb
93
125
  - Rakefile
126
+ - README.md
94
127
  - spec/client_spec.rb
128
+ - spec/consumer_spec.rb
95
129
  - spec/module_spec.rb
96
130
  - spec/spec_helper.rb
97
- - spec/consumer_spec.rb
98
131
  homepage: https://github.com/segmentio/analytics-ruby
99
132
  licenses: []
100
133
  post_install_message:
@@ -115,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
148
  version: '0'
116
149
  requirements: []
117
150
  rubyforge_project:
118
- rubygems_version: 1.8.11
151
+ rubygems_version: 1.8.25
119
152
  signing_key:
120
153
  specification_version: 3
121
154
  summary: Segment.io analytics library