analytics-ruby 1.1.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ module Segment
4
+ class Analytics
5
+ describe Worker do
6
+ describe "#init" do
7
+ it 'accepts string keys' do
8
+ queue = Queue.new
9
+ worker = Segment::Analytics::Worker.new(queue, 'secret', 'batch_size' => 100)
10
+ worker.instance_variable_get(:@batch_size).should == 100
11
+ end
12
+ end
13
+
14
+ describe '#flush' do
15
+ before :all do
16
+ Segment::Analytics::Defaults::Request::BACKOFF = 0.1
17
+ end
18
+
19
+ after :all do
20
+ Segment::Analytics::Defaults::Request::BACKOFF = 30.0
21
+ end
22
+
23
+ it 'should not error if the endpoint is unreachable' do
24
+ Net::HTTP.any_instance.stub(:post).and_raise(Exception)
25
+
26
+ queue = Queue.new
27
+ queue << {}
28
+ worker = Segment::Analytics::Worker.new(queue, 'secret')
29
+ worker.run
30
+
31
+ queue.should be_empty
32
+
33
+ Net::HTTP.any_instance.unstub(:post)
34
+ end
35
+
36
+ it 'should execute the error handler if the request is invalid' do
37
+ Segment::Analytics::Request.any_instance.stub(:post).and_return(Segment::Analytics::Response.new(400, "Some error"))
38
+
39
+ on_error = Proc.new do |status, error|
40
+ puts "#{status}, #{error}"
41
+ end
42
+
43
+ on_error.should_receive(:call).once
44
+
45
+ queue = Queue.new
46
+ queue << {}
47
+ worker = Segment::Analytics::Worker.new queue, 'secret', :on_error => on_error
48
+ worker.run
49
+
50
+ Segment::Analytics::Request::any_instance.unstub(:post)
51
+
52
+ queue.should be_empty
53
+ end
54
+
55
+ it 'should not call on_error if the request is good' do
56
+
57
+ on_error = Proc.new do |status, error|
58
+ puts "#{status}, #{error}"
59
+ end
60
+
61
+ on_error.should_receive(:call).at_most(0).times
62
+
63
+ queue = Queue.new
64
+ queue << Requested::TRACK
65
+ worker = Segment::Analytics::Worker.new queue, 'testsecret', :on_error => on_error
66
+ worker.run
67
+
68
+ queue.should be_empty
69
+ end
70
+ end
71
+
72
+ describe '#is_requesting?' do
73
+ it 'should not return true if there isn\'t a current batch' do
74
+
75
+ queue = Queue.new
76
+ worker = Segment::Analytics::Worker.new(queue, 'testsecret')
77
+
78
+ worker.is_requesting?.should == false
79
+ end
80
+
81
+ it 'should return true if there is a current batch' do
82
+ queue = Queue.new
83
+ queue << Requested::TRACK
84
+ worker = Segment::Analytics::Worker.new(queue, 'testsecret')
85
+
86
+ Thread.new do
87
+ worker.run
88
+ worker.is_requesting?.should == false
89
+ end
90
+
91
+ eventually { worker.is_requesting?.should be_true }
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+
3
+ module Segment
4
+ class Analytics
5
+ describe Analytics do
6
+ let(:analytics) { Segment::Analytics.new :write_key => WRITE_KEY, :stub => true }
7
+
8
+ describe '#track' do
9
+ it 'should error without an event' do
10
+ expect { analytics.track(:user_id => 'user') }.to raise_error(ArgumentError)
11
+ end
12
+
13
+ it 'should error without a user_id' do
14
+ expect { analytics.track(:event => 'Event') }.to raise_error(ArgumentError)
15
+ end
16
+
17
+ it 'should not error with the required options' do
18
+ analytics.track Queued::TRACK
19
+ sleep(1)
20
+ end
21
+ end
22
+
23
+
24
+ describe '#identify' do
25
+ it 'should error without a user_id' do
26
+ expect { analytics.identify :traits => {} }.to raise_error(ArgumentError)
27
+ end
28
+
29
+ it 'should not error with the required options' do
30
+ analytics.identify Queued::IDENTIFY
31
+ sleep(1)
32
+ end
33
+ end
34
+
35
+ describe '#alias' do
36
+ it 'should error without from' do
37
+ expect { analytics.alias :user_id => 1234 }.to raise_error(ArgumentError)
38
+ end
39
+
40
+ it 'should error without to' do
41
+ expect { analytics.alias :previous_id => 1234 }.to raise_error(ArgumentError)
42
+ end
43
+
44
+ it 'should not error with the required options' do
45
+ analytics.alias ALIAS
46
+ sleep(1)
47
+ end
48
+ end
49
+
50
+ describe '#group' do
51
+ it 'should error without group_id' do
52
+ expect { analytics.group :user_id => 'foo' }.to raise_error(ArgumentError)
53
+ end
54
+
55
+ it 'should error without user_id or anonymous_id' do
56
+ expect { analytics.group :group_id => 'foo' }.to raise_error(ArgumentError)
57
+ end
58
+
59
+ it 'should not error with the required options' do
60
+ analytics.group Queued::GROUP
61
+ sleep(1)
62
+ end
63
+ end
64
+
65
+ describe '#page' do
66
+ it 'should error without user_id or anonymous_id' do
67
+ expect { analytics.page :name => 'foo' }.to raise_error(ArgumentError)
68
+ end
69
+
70
+ it 'should error without name' do
71
+ expect { analytics.page :user_id => 1 }.to raise_error(ArgumentError)
72
+ end
73
+
74
+ it 'should not error with the required options' do
75
+ analytics.page Queued::PAGE
76
+ sleep(1)
77
+ end
78
+ end
79
+
80
+ describe '#screen' do
81
+ it 'should error without user_id or anonymous_id' do
82
+ expect { analytics.screen :name => 'foo' }.to raise_error(ArgumentError)
83
+ end
84
+
85
+ it 'should error without name' do
86
+ expect { analytics.screen :user_id => 1 }.to raise_error(ArgumentError)
87
+ end
88
+
89
+ it 'should not error with the required options' do
90
+ analytics.screen Queued::SCREEN
91
+ sleep(1)
92
+ end
93
+ end
94
+
95
+ describe '#flush' do
96
+ it 'should flush without error' do
97
+ analytics.identify Queued::IDENTIFY
98
+ analytics.flush
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,72 +1,77 @@
1
+ require 'segment/analytics'
2
+ require 'wrong'
1
3
 
2
- module AnalyticsRubyHelpers
4
+ include Wrong
3
5
 
4
- SECRET = 'testsecret'
6
+ module Segment
7
+ class Analytics
8
+ WRITE_KEY = 'testsecret'
5
9
 
6
- TRACK = {
7
- :event => 'Ruby Library test event',
8
- :properties => {
9
- :type => 'Chocolate',
10
- :is_a_lie => true,
11
- :layers => 20,
12
- :created => Time.new
10
+ TRACK = {
11
+ :event => 'Ruby Library test event',
12
+ :properties => {
13
+ :type => 'Chocolate',
14
+ :is_a_lie => true,
15
+ :layers => 20,
16
+ :created => Time.new
17
+ }
13
18
  }
14
- }
15
19
 
16
- IDENTIFY = {
17
- :traits => {
18
- :likes_animals => true,
19
- :instrument => 'Guitar',
20
- :age => 25
20
+ IDENTIFY = {
21
+ :traits => {
22
+ :likes_animals => true,
23
+ :instrument => 'Guitar',
24
+ :age => 25
25
+ }
21
26
  }
22
- }
23
27
 
24
- ALIAS = {
25
- :from => 1234,
26
- :to => 'abcd'
27
- }
28
+ ALIAS = {
29
+ :previous_id => 1234,
30
+ :user_id => 'abcd'
31
+ }
28
32
 
29
- GROUP = {}
33
+ GROUP = {}
30
34
 
31
- PAGE = {
32
- :name => 'home'
33
- }
35
+ PAGE = {
36
+ :name => 'home'
37
+ }
34
38
 
35
- SCREEN = {
36
- :name => 'main'
37
- }
39
+ SCREEN = {
40
+ :name => 'main'
41
+ }
38
42
 
39
- USER_ID = 1234
40
- GROUP_ID = 1234
43
+ USER_ID = 1234
44
+ GROUP_ID = 1234
41
45
 
42
- # Hashes sent to the client, snake_case
43
- module Queued
44
- TRACK = TRACK.merge :user_id => USER_ID
45
- IDENTIFY = IDENTIFY.merge :user_id => USER_ID
46
- GROUP = GROUP.merge :group_id => GROUP_ID, :user_id => USER_ID
47
- PAGE = PAGE.merge :user_id => USER_ID
48
- SCREEN = SCREEN.merge :user_id => USER_ID
49
- end
46
+ # Hashes sent to the client, snake_case
47
+ module Queued
48
+ TRACK = TRACK.merge :user_id => USER_ID
49
+ IDENTIFY = IDENTIFY.merge :user_id => USER_ID
50
+ GROUP = GROUP.merge :group_id => GROUP_ID, :user_id => USER_ID
51
+ PAGE = PAGE.merge :user_id => USER_ID
52
+ SCREEN = SCREEN.merge :user_id => USER_ID
53
+ end
50
54
 
51
- # Hashes which are sent from the consumer, camel_cased
52
- module Requested
53
- TRACK = TRACK.merge({
54
- :userId => USER_ID,
55
- :action => 'track'
56
- })
55
+ # Hashes which are sent from the worker, camel_cased
56
+ module Requested
57
+ TRACK = TRACK.merge({
58
+ :userId => USER_ID,
59
+ :type => 'track'
60
+ })
57
61
 
58
- IDENTIFY = IDENTIFY.merge({
59
- :userId => USER_ID,
60
- :action => 'identify'
61
- })
62
+ IDENTIFY = IDENTIFY.merge({
63
+ :userId => USER_ID,
64
+ :type => 'identify'
65
+ })
62
66
 
63
- GROUP = GROUP.merge({
64
- :groupId => GROUP_ID,
65
- :userId => USER_ID,
66
- :action => 'group'
67
- })
67
+ GROUP = GROUP.merge({
68
+ :groupId => GROUP_ID,
69
+ :userId => USER_ID,
70
+ :type => 'group'
71
+ })
68
72
 
69
- PAGE = PAGE.merge :userId => USER_ID
70
- SCREEN = SCREEN.merge :userId => USER_ID
73
+ PAGE = PAGE.merge :userId => USER_ID
74
+ SCREEN = SCREEN.merge :userId => USER_ID
75
+ end
71
76
  end
72
- end
77
+ end
data/tags ADDED
@@ -0,0 +1,135 @@
1
+ !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
2
+ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
3
+ !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
4
+ !_TAG_PROGRAM_NAME Exuberant Ctags //
5
+ !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
6
+ !_TAG_PROGRAM_VERSION 5.8 //
7
+ ALIAS spec/spec_helper.rb /^ ALIAS = {$/;" c line:25
8
+ Analytics lib/segment/analytics.rb /^ class Analytics$/;" c line:11 class:Segment
9
+ Analytics lib/segment/analytics/client.rb /^ class Analytics$/;" c line:8 class:Segment
10
+ Analytics lib/segment/analytics/defaults.rb /^ class Analytics$/;" c line:2 class:Segment
11
+ Analytics lib/segment/analytics/logging.rb /^ class Analytics$/;" c line:4 class:Segment
12
+ Analytics lib/segment/analytics/request.rb /^ class Analytics$/;" c line:10 class:Segment
13
+ Analytics lib/segment/analytics/response.rb /^ class Analytics$/;" c line:2 class:Segment
14
+ Analytics lib/segment/analytics/utils.rb /^ class Analytics$/;" c line:4 class:Segment
15
+ Analytics lib/segment/analytics/version.rb /^ class Analytics$/;" c line:2 class:Segment
16
+ Analytics lib/segment/analytics/worker.rb /^ class Analytics$/;" c line:7 class:Segment
17
+ Analytics spec/segment/analytics/client_spec.rb /^ class Analytics$/;" c line:4 class:Segment
18
+ Analytics spec/segment/analytics/worker_spec.rb /^ class Analytics$/;" c line:4 class:Segment
19
+ Analytics spec/segment/analytics_spec.rb /^ class Analytics$/;" c line:4 class:Segment
20
+ Analytics spec/spec_helper.rb /^ class Analytics$/;" c line:4 class:Segment
21
+ BACKOFF lib/segment/analytics/defaults.rb /^ BACKOFF = 30.0$/;" c line:11
22
+ BACKOFF spec/segment/analytics/worker_spec.rb /^ Segment::Analytics::Defaults::Request::BACKOFF = 0.1$/;" c line:16
23
+ BACKOFF spec/segment/analytics/worker_spec.rb /^ Segment::Analytics::Defaults::Request::BACKOFF = 30.0$/;" c line:20
24
+ BATCH_SIZE lib/segment/analytics/defaults.rb /^ BATCH_SIZE = 100$/;" c line:15
25
+ Client lib/segment/analytics/client.rb /^ class Client$/;" c line:9 class:Segment.Analytics
26
+ Defaults lib/segment/analytics/defaults.rb /^ module Defaults$/;" m line:3 class:Segment.Analytics
27
+ GROUP spec/spec_helper.rb /^ GROUP = GROUP.merge :group_id => GROUP_ID, :user_id => USER_ID$/;" c line:47
28
+ GROUP spec/spec_helper.rb /^ GROUP = GROUP.merge({$/;" c line:64
29
+ GROUP spec/spec_helper.rb /^ GROUP = {}$/;" c line:30
30
+ GROUP_ID spec/spec_helper.rb /^ GROUP_ID = 1234$/;" c line:41
31
+ HEADERS lib/segment/analytics/defaults.rb /^ HEADERS = { :accept => 'application\/json' }$/;" c line:9
32
+ HOST lib/segment/analytics/defaults.rb /^ HOST = 'api.segment.io'$/;" c line:5
33
+ IDENTIFY spec/spec_helper.rb /^ IDENTIFY = IDENTIFY.merge :user_id => USER_ID$/;" c line:46
34
+ IDENTIFY spec/spec_helper.rb /^ IDENTIFY = IDENTIFY.merge({$/;" c line:59
35
+ IDENTIFY spec/spec_helper.rb /^ IDENTIFY = {$/;" c line:17
36
+ Logging lib/segment/analytics/logging.rb /^ module Logging$/;" m line:5 class:Segment.Analytics
37
+ MAX_SIZE lib/segment/analytics/defaults.rb /^ MAX_SIZE = 10000$/;" c line:16
38
+ Makefile Makefile 1;" F line:1
39
+ PAGE spec/spec_helper.rb /^ PAGE = PAGE.merge :userId => USER_ID$/;" c line:70
40
+ PAGE spec/spec_helper.rb /^ PAGE = PAGE.merge :user_id => USER_ID$/;" c line:48
41
+ PAGE spec/spec_helper.rb /^ PAGE = {$/;" c line:32
42
+ PATH lib/segment/analytics/defaults.rb /^ PATH = '\/v1\/import'$/;" c line:7
43
+ PORT lib/segment/analytics/defaults.rb /^ PORT = 443$/;" c line:6
44
+ Queue lib/segment/analytics/defaults.rb /^ module Queue$/;" m line:14 class:Segment.Analytics.Defaults
45
+ Queued spec/spec_helper.rb /^ module Queued$/;" m line:44 class:Segment.Analytics
46
+ RETRIES lib/segment/analytics/defaults.rb /^ RETRIES = 4$/;" c line:10
47
+ Request lib/segment/analytics/defaults.rb /^ module Request$/;" m line:4 class:Segment.Analytics.Defaults
48
+ Request lib/segment/analytics/request.rb /^ class Request$/;" c line:11 class:Segment.Analytics
49
+ Requested spec/spec_helper.rb /^ module Requested$/;" m line:53 class:Segment.Analytics
50
+ Response lib/segment/analytics/response.rb /^ class Response$/;" c line:3 class:Segment.Analytics
51
+ SCREEN spec/spec_helper.rb /^ SCREEN = SCREEN.merge :userId => USER_ID$/;" c line:71
52
+ SCREEN spec/spec_helper.rb /^ SCREEN = SCREEN.merge :user_id => USER_ID$/;" c line:49
53
+ SCREEN spec/spec_helper.rb /^ SCREEN = {$/;" c line:36
54
+ SSL lib/segment/analytics/defaults.rb /^ SSL = true$/;" c line:8
55
+ Segment lib/segment/analytics.rb /^module Segment$/;" m line:10
56
+ Segment lib/segment/analytics/client.rb /^module Segment$/;" m line:7
57
+ Segment lib/segment/analytics/defaults.rb /^module Segment$/;" m line:1
58
+ Segment lib/segment/analytics/logging.rb /^module Segment$/;" m line:3
59
+ Segment lib/segment/analytics/request.rb /^module Segment$/;" m line:9
60
+ Segment lib/segment/analytics/response.rb /^module Segment$/;" m line:1
61
+ Segment lib/segment/analytics/utils.rb /^module Segment$/;" m line:3
62
+ Segment lib/segment/analytics/version.rb /^module Segment$/;" m line:1
63
+ Segment lib/segment/analytics/worker.rb /^module Segment$/;" m line:6
64
+ Segment spec/segment/analytics/client_spec.rb /^module Segment$/;" m line:3
65
+ Segment spec/segment/analytics/worker_spec.rb /^module Segment$/;" m line:3
66
+ Segment spec/segment/analytics_spec.rb /^module Segment$/;" m line:3
67
+ Segment spec/spec_helper.rb /^module Segment$/;" m line:3
68
+ TRACK spec/spec_helper.rb /^ TRACK = TRACK.merge :user_id => USER_ID$/;" c line:45
69
+ TRACK spec/spec_helper.rb /^ TRACK = TRACK.merge({$/;" c line:54
70
+ TRACK spec/spec_helper.rb /^ TRACK = {$/;" c line:7
71
+ USER_ID spec/spec_helper.rb /^ USER_ID = 1234$/;" c line:40
72
+ UTC_OFFSET_WITHOUT_COLON lib/segment/analytics/utils.rb /^ UTC_OFFSET_WITHOUT_COLON = UTC_OFFSET_WITH_COLON.sub(':', '')$/;" c line:82
73
+ UTC_OFFSET_WITH_COLON lib/segment/analytics/utils.rb /^ UTC_OFFSET_WITH_COLON = '%s%02d:%02d'$/;" c line:81
74
+ Utils lib/segment/analytics/utils.rb /^ module Utils$/;" m line:5 class:Segment.Analytics
75
+ VERSION lib/segment/analytics/version.rb /^ VERSION = '2.0.0'$/;" c line:3
76
+ WRITE_KEY spec/spec_helper.rb /^ WRITE_KEY = 'testsecret'$/;" c line:5
77
+ Worker lib/segment/analytics/worker.rb /^ class Worker$/;" c line:8 class:Segment.Analytics
78
+ add_context lib/segment/analytics/client.rb /^ def add_context(context)$/;" f line:277 class:Segment.Analytics.Client
79
+ alias lib/segment/analytics/client.rb /^ def alias(options)$/;" f line:119 class:Segment.Analytics.Client
80
+ analytics.rb lib/segment/analytics.rb 1;" F line:1
81
+ analytics_spec.rb spec/segment/analytics_spec.rb 1;" F line:1
82
+ check_non_empty_string! lib/segment/analytics/client.rb /^ def check_non_empty_string!(str, name)$/;" f line:270 class:Segment.Analytics.Client
83
+ check_timestamp! lib/segment/analytics/client.rb /^ def check_timestamp!(timestamp)$/;" f line:287 class:Segment.Analytics.Client
84
+ check_user_id! lib/segment/analytics/client.rb /^ def check_user_id! options$/;" f line:304 class:Segment.Analytics.Client
85
+ check_write_key! lib/segment/analytics/client.rb /^ def check_write_key!$/;" f line:282 class:Segment.Analytics.Client
86
+ client.rb lib/segment/analytics/client.rb 1;" F line:1
87
+ client_spec.rb spec/segment/analytics/client_spec.rb 1;" F line:1
88
+ date_in_iso8601 lib/segment/analytics/utils.rb /^ def date_in_iso8601 date$/;" f line:69 class:Segment.Analytics
89
+ datetime_in_iso8601 lib/segment/analytics/utils.rb /^ def datetime_in_iso8601 datetime$/;" f line:51 class:Segment.Analytics.Utils
90
+ defaults.rb lib/segment/analytics/defaults.rb 1;" F line:1
91
+ enqueue lib/segment/analytics/client.rb /^ def enqueue(action)$/;" f line:255 class:Segment.Analytics.Client
92
+ ensure_worker_running lib/segment/analytics/client.rb /^ def ensure_worker_running$/;" f line:308 class:Segment.Analytics.Client
93
+ event lib/segment/analytics/client.rb /^ def event attrs$/;" f line:291 class:Segment.Analytics.Client
94
+ flush lib/segment/analytics/client.rb /^ def flush$/;" f line:34 class:Segment.Analytics.Client
95
+ formatted_offset lib/segment/analytics/utils.rb /^ def formatted_offset time, colon = true, alternate_utc_string = nil$/;" f line:73 class:Segment.Analytics
96
+ group lib/segment/analytics/client.rb /^ def group(options)$/;" f line:148 class:Segment.Analytics.Client
97
+ identify lib/segment/analytics/client.rb /^ def identify options$/;" f line:87 class:Segment.Analytics.Client
98
+ included lib/segment/analytics/logging.rb /^ def self.included base$/;" F line:22 class:Segment
99
+ initialize lib/segment/analytics.rb /^ def initialize options = {}$/;" f line:12 class:Segment.Analytics
100
+ initialize lib/segment/analytics/client.rb /^ def initialize options = {}$/;" f line:18 class:Segment.Analytics.Client
101
+ initialize lib/segment/analytics/request.rb /^ def initialize(options = {})$/;" f line:18 class:Segment.Analytics.Request
102
+ initialize lib/segment/analytics/response.rb /^ def initialize(status = 200, error = nil)$/;" f line:9 class:Segment.Analytics.Response
103
+ initialize lib/segment/analytics/worker.rb /^ def initialize(queue, write_key, options = {})$/;" f line:23 class:Segment.Analytics.Worker
104
+ is_requesting? lib/segment/analytics/worker.rb /^ def is_requesting?$/;" f line:54 class:Segment.Analytics
105
+ isoify_dates lib/segment/analytics/utils.rb /^ def isoify_dates(hash)$/;" f line:29 class:Segment.Analytics.Utils
106
+ isoify_dates! lib/segment/analytics/utils.rb /^ def isoify_dates!(hash)$/;" f line:38 class:Segment.Analytics.Utils
107
+ logger lib/segment/analytics/logging.rb /^ def logger$/;" f line:24 class:Segment.included
108
+ logger lib/segment/analytics/logging.rb /^ def logger$/;" f line:7 class:Segment.Analytics.Logging
109
+ logger lib/segment/analytics/logging.rb /^ def logger$/;" f line:30
110
+ logger= lib/segment/analytics/logging.rb /^ def logger= logger$/;" f line:17 class:Segment.Analytics
111
+ logging.rb lib/segment/analytics/logging.rb 1;" F line:1
112
+ method_missing lib/segment/analytics.rb /^ def method_missing message, *args, &block$/;" f line:17 class:Segment.Analytics
113
+ page lib/segment/analytics/client.rb /^ def page(options)$/;" f line:182 class:Segment.Analytics.Client
114
+ post lib/segment/analytics/request.rb /^ def post(write_key, batch)$/;" f line:38 class:Segment.Analytics.Request
115
+ queued_messages lib/segment/analytics/client.rb /^ def queued_messages$/;" f line:246 class:Segment.Analytics.Client
116
+ request.rb lib/segment/analytics/request.rb 1;" F line:1
117
+ respond_to? lib/segment/analytics.rb /^ def respond_to? method_name, include_private = false$/;" f line:25 class:Segment.Analytics
118
+ response.rb lib/segment/analytics/response.rb 1;" F line:1
119
+ run lib/segment/analytics/worker.rb /^ def run$/;" f line:35 class:Segment.Analytics.Worker
120
+ screen lib/segment/analytics/client.rb /^ def screen(options)$/;" f line:216 class:Segment.Analytics.Client
121
+ seconds_to_utc_offset lib/segment/analytics/utils.rb /^ def seconds_to_utc_offset(seconds, colon = true)$/;" f line:77 class:Segment.Analytics
122
+ segment.rb lib/segment.rb 1;" F line:1
123
+ spec_helper.rb spec/spec_helper.rb 1;" F line:1
124
+ stringify_keys lib/segment/analytics/utils.rb /^ def stringify_keys(hash)$/;" f line:22 class:Segment.Analytics.Utils
125
+ symbolize_keys lib/segment/analytics/utils.rb /^ def symbolize_keys(hash)$/;" f line:10 class:Segment.Analytics.Utils
126
+ symbolize_keys! lib/segment/analytics/utils.rb /^ def symbolize_keys!(hash)$/;" f line:16 class:Segment.Analytics.Utils
127
+ test.rb test.rb 1;" F line:1
128
+ time_in_iso8601 lib/segment/analytics/utils.rb /^ def time_in_iso8601 time, fraction_digits = 0$/;" f line:61 class:Segment.Analytics.Utils
129
+ track lib/segment/analytics/client.rb /^ def track options$/;" f line:49 class:Segment.Analytics.Client
130
+ uid lib/segment/analytics/utils.rb /^ def uid$/;" f line:44 class:Segment.Analytics.Utils
131
+ utils.rb lib/segment/analytics/utils.rb 1;" F line:1
132
+ version.rb lib/segment/analytics/version.rb 1;" F line:1
133
+ worker.rb lib/segment/analytics/worker.rb 1;" F line:1
134
+ worker_running? lib/segment/analytics/client.rb /^ def worker_running?$/;" f line:319 class:Segment.Analytics.Client
135
+ worker_spec.rb spec/segment/analytics/worker_spec.rb 1;" F line:1