analytics-ruby 1.1.0 → 2.0.1

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,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