mode 0.0.10 → 0.0.11

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +1 -0
  3. data/.travis.yml +1 -0
  4. data/bin/mode +3 -8
  5. data/lib/connect.rb +13 -0
  6. data/lib/mode.rb +18 -5
  7. data/lib/mode/api/link.rb +4 -0
  8. data/lib/mode/api/request.rb +20 -10
  9. data/lib/mode/auth/access_token.rb +16 -0
  10. data/lib/mode/cli/connect.rb +1 -1
  11. data/lib/mode/commands/analyze_field.rb +1 -3
  12. data/lib/mode/commands/connect.rb +24 -49
  13. data/lib/mode/commands/helpers.rb +23 -18
  14. data/lib/mode/commands/import.rb +2 -4
  15. data/lib/mode/commands/login.rb +88 -25
  16. data/lib/mode/config.rb +60 -2
  17. data/lib/mode/connector/connect.rb +11 -0
  18. data/lib/mode/connector/daemon.rb +54 -12
  19. data/lib/mode/connector/daemonizer.rb +107 -0
  20. data/lib/mode/connector/data_source.rb +36 -9
  21. data/lib/mode/connector/scheduler.rb +6 -5
  22. data/lib/mode/connector/uploader.rb +3 -4
  23. data/lib/mode/version.rb +1 -1
  24. data/mode.gemspec +7 -4
  25. data/spec/api/request_spec.rb +9 -6
  26. data/spec/commands/connect_spec.rb +45 -59
  27. data/spec/commands/helpers_spec.rb +9 -22
  28. data/spec/commands/import_spec.rb +5 -0
  29. data/spec/commands/login_spec.rb +87 -76
  30. data/spec/config_spec.rb +9 -0
  31. data/spec/connector/daemon_spec.rb +11 -6
  32. data/spec/connector/daemonizer_spec.rb +106 -0
  33. data/spec/connector/data_source_spec.rb +15 -17
  34. data/spec/connector/registrar_spec.rb +5 -6
  35. data/spec/connector/scheduler_spec.rb +3 -2
  36. data/spec/connector/uploader_spec.rb +9 -9
  37. metadata +65 -65
  38. data/lib/mode/configurable.rb +0 -46
  39. data/lib/mode/connector/config.rb +0 -31
  40. data/spec/connector/config_spec.rb +0 -46
@@ -26,6 +26,15 @@ describe Mode::Config do
26
26
  File.read(config.path).should == config.send(:to_yaml)
27
27
  end
28
28
 
29
+ it "should initialize with data sources" do
30
+ config = Mode::Config.init(tmpdir)
31
+ config.data_sources << Mode::Connector::DataSource.new('test', {})
32
+ config.save
33
+
34
+ config = Mode::Config.new(tmpdir)
35
+ config.data_sources.length.should == 1
36
+ end
37
+
29
38
  it "should have FILENAME" do
30
39
  Mode::Config::default_filename.should == 'config.yml'
31
40
  end
@@ -1,7 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Mode::Connector::Daemon do
4
- let(:working_dir) { Dir.mktmpdir }
4
+ let(:tmpdir) { Dir.mktmpdir }
5
+ let(:config) { Mode::Config.init(tmpdir) }
6
+
7
+ let(:daemon) { Mode::Connector::Daemon.new }
5
8
  let(:scheduler) { double(:scheduler, :start! => true, :stop! => true) }
6
9
 
7
10
  before do
@@ -9,22 +12,24 @@ describe Mode::Connector::Daemon do
9
12
  end
10
13
 
11
14
  it "starts a daemon" do
12
- daemon = Mode::Connector::Daemon.new(:working_dir => working_dir)
15
+ daemon.stub(:config).and_return(config)
16
+
13
17
  Mode::Connector::Scheduler.should_receive(:new).and_return(scheduler)
14
18
 
15
19
  begin
16
- daemon.start([5, []])
20
+ daemon.start
17
21
  ensure
18
22
  daemon.stop
19
23
  end
20
24
  end
21
25
 
22
26
  it "logs errors on failure" do
23
- daemon = Mode::Connector::Daemon.new(:working_dir => working_dir)
24
- Mode::Connector::Scheduler.should_receive(:new).and_raise(StandardError.new("BREAK"))
27
+ daemon.stub(:config).and_return(config)
28
+
29
+ daemon.should_receive(:scheduler).and_raise(StandardError.new("BREAK"))
25
30
 
26
31
  Mode::Logger.instance.should_receive(:error)
27
32
 
28
- daemon.start([5, []])
33
+ daemon.start
29
34
  end
30
35
  end
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mode::Connector::Daemonizer do
4
+ let(:tmpdir) { Dir.mktmpdir }
5
+ let(:pid_file) { File.join(tmpdir, 'connect.pid') }
6
+ let(:executable) { File.join(tmpdir, 'executable') }
7
+
8
+ before do
9
+ STDERR.stub(:puts)
10
+ STDOUT.stub(:puts)
11
+
12
+ initialize_logger
13
+ FileUtils.touch(pid_file)
14
+ FileUtils.touch(executable)
15
+ File.chmod(0755, executable)
16
+ end
17
+
18
+ it "initializes" do
19
+ daemonizer = Mode::Connector::Daemonizer.new(
20
+ :pid_file => pid_file, :executable => executable)
21
+
22
+ daemonizer.args.should == []
23
+ daemonizer.timeout.should == 10
24
+ daemonizer.pid_file.should == pid_file
25
+ daemonizer.executable.should == executable
26
+ end
27
+
28
+ describe "#alive?" do
29
+ it 'returns true if process is alive' do
30
+ daemonizer = Mode::Connector::Daemonizer.new(
31
+ :pid_file => pid_file, :executable => executable)
32
+
33
+ Process.should_receive(:kill).and_return(true)
34
+
35
+ daemonizer.alive?.should == true
36
+ end
37
+
38
+ it 'returns false if the process is dead' do
39
+ daemonizer = Mode::Connector::Daemonizer.new(
40
+ :pid_file => pid_file, :executable => executable)
41
+
42
+ Process.should_receive(:kill).and_raise(Errno::ESRCH.new)
43
+
44
+ daemonizer.alive?.should == false
45
+ end
46
+
47
+ it 'returns false if the process cannot be queried' do
48
+ daemonizer = Mode::Connector::Daemonizer.new(
49
+ :pid_file => pid_file, :executable => executable)
50
+
51
+ Process.should_receive(:kill).and_raise(Errno::EPERM.new)
52
+
53
+ daemonizer.alive?.should == false
54
+ end
55
+ end
56
+
57
+ it 'starts the daemon' do
58
+ daemonizer = Mode::Connector::Daemonizer.new(
59
+ :pid_file => pid_file, :executable => executable)
60
+ daemonizer.should_receive(:alive?).and_return(false)
61
+
62
+ Spoon.should_receive(:spawnp).with(executable).and_return(:pid)
63
+
64
+ daemonizer.start
65
+ end
66
+
67
+ it 'stops the daemon' do
68
+ daemonizer = Mode::Connector::Daemonizer.new(
69
+ :pid_file => pid_file, :executable => executable)
70
+ daemonizer.should_receive(:alive?).and_return(true, false)
71
+
72
+ Process.should_receive(:kill).with("TERM", 0).and_return(true)
73
+
74
+ daemonizer.stop
75
+ end
76
+
77
+ it "forcefully stops the daemon after timeout" do
78
+ daemonizer = Mode::Connector::Daemonizer.new(
79
+ :pid_file => pid_file, :executable => executable)
80
+
81
+ daemonizer.should_receive(:alive?).and_return(true, false)
82
+
83
+ Process.should_receive(:kill).with("KILL", 0).and_return(true)
84
+ Timeout.should_receive(:timeout).with(10).and_raise(Timeout::Error.new)
85
+
86
+ daemonizer.stop
87
+ end
88
+
89
+ it 'restarts the daemon' do
90
+ daemonizer = Mode::Connector::Daemonizer.new(
91
+ :pid_file => pid_file, :executable => executable)
92
+
93
+ daemonizer.should_receive(:stop)
94
+ daemonizer.should_receive(:start)
95
+
96
+ daemonizer.restart
97
+ end
98
+
99
+ it 'has default file paths' do
100
+ daemonizer = Mode::Connector::Daemonizer.new(
101
+ :pid_file => pid_file, :executable => executable)
102
+
103
+ daemonizer.send(:default_pid_file).should =~ /connect.pid/
104
+ daemonizer.send(:default_executable).should =~ /connect.rb/
105
+ end
106
+ end
@@ -21,6 +21,8 @@ describe Mode::Connector::DataSource do
21
21
  }
22
22
  }
23
23
 
24
+ let(:conn) { double(:conn, :extension => true) }
25
+
24
26
  it "initializes with props" do
25
27
  source = Mode::Connector::DataSource.new('dev', props)
26
28
  source.adapter.should == 'postgres'
@@ -39,35 +41,31 @@ describe Mode::Connector::DataSource do
39
41
  source.send(:connection_url).should == "postgres://postgres@localhost/warehouse"
40
42
  end
41
43
 
44
+ it 'has a jdbc connection url' do
45
+ source = Mode::Connector::DataSource.new('dev', props.merge('adapter' => 'jdbc:redshift'))
46
+ source.send(:connection_url).should == "jdbc:postgresql://localhost/warehouse?user=postgres"
47
+ end
48
+
42
49
  it "has a connection" do
43
50
  source = Mode::Connector::DataSource.new('dev', props)
44
- Sequel.should_receive(:connect).and_return(:connect)
45
- source.connection.should == :connect
51
+ Sequel.should_receive(:connect).and_return(conn)
52
+ source.connection.should == conn
46
53
  end
47
54
 
48
55
  it 'has a connection for redshift' do
49
56
  source = Mode::Connector::DataSource.new('dev', redprops)
50
- Sequel.should_receive(:connect).and_return(:connect)
51
- source.connection.should == :connect
52
- end
53
-
54
- it 'has a connection dataset' do
55
- source = Mode::Connector::DataSource.new('dev', props)
56
-
57
- dataset = double(:dataset, :with_sql => :dataset)
58
- connection = double(:connection, :dataset => dataset)
59
- Sequel.should_receive(:connect).and_return(connection)
60
- dataset = source.send(:connection_dataset, "SELECT * FROM fake")
61
-
62
- dataset.should == :dataset
57
+ Sequel.should_receive(:connect).and_return(conn)
58
+ source.connection.should == conn
63
59
  end
64
60
 
65
61
  it "fetches results from dataset" do
66
62
  source = Mode::Connector::DataSource.new('dev', props)
67
63
 
68
64
  dataset = double(:dataset)
69
- dataset.should_receive(:each).and_yield({'cnt' => 5})
70
- source.should_receive(:connection_dataset).with("SELECT 1").and_return(dataset)
65
+ connection = double(:conn, :dataset => dataset)
66
+ dataset.should_receive(:fetch_rows).with("SELECT 1").and_yield({'cnt' => 5})
67
+
68
+ source.should_receive(:connection).and_return(connection)
71
69
 
72
70
  source.select("SELECT 1") do |row|
73
71
  row['cnt'].should == 5
@@ -4,8 +4,8 @@ describe Mode::Connector::Registrar do
4
4
  let(:tmpdir) { Dir.mktmpdir }
5
5
 
6
6
  let(:username) { 'besquared' }
7
- let(:access_token) { 'access_token '}
8
- let(:config) { Mode::Connector::Config.init(tmpdir) }
7
+ let(:password) { 'token_password '}
8
+ let(:config) { Mode::Config.init(tmpdir) }
9
9
  let(:path) { Mode::API::Request.data_source_connection_path }
10
10
 
11
11
  let(:props) {
@@ -22,10 +22,9 @@ describe Mode::Connector::Registrar do
22
22
  initialize_logger
23
23
 
24
24
  Mode::API::Request.configure('test', {
25
- :port => 80,
26
- :credentials => {
27
- :username => username,
28
- :access_token => access_token
25
+ 'credentials' => {
26
+ 'username' => username,
27
+ 'password' => password
29
28
  }
30
29
  })
31
30
 
@@ -21,11 +21,12 @@ describe Mode::Connector::Scheduler do
21
21
  rufus = double(:rufus)
22
22
  Rufus::Scheduler.should_receive(:new).and_return(rufus)
23
23
 
24
- rufus.should_receive(:every).and_return(true)
24
+ rufus.should_receive(:interval).and_return(true)
25
25
  rufus.should_receive(:join).and_return(true)
26
26
  rufus.should_receive(:stop).and_return(true)
27
27
 
28
- Sequel.should_receive(:connect).and_return(:connect)
28
+ conn = double(:conn, :extension => true)
29
+ Sequel.should_receive(:connect).and_return(conn)
29
30
 
30
31
  scheduler = Mode::Connector::Scheduler.new(data_sources)
31
32
 
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Mode::Connector::Uploader do
4
4
  let(:tmpdir) { Dir.mktmpdir }
5
5
  let(:outpath) { File.join(tmpdir, 'data.csv') }
6
- let(:execution_path) { Mode::API::Request.data_source_connection_path }
6
+ let(:runs_path) { Mode::API::Request.data_source_connection_path }
7
7
 
8
8
  let(:dataset) {
9
9
  double(:dataset,
@@ -13,7 +13,7 @@ describe Mode::Connector::Uploader do
13
13
  'int' => :integer,
14
14
  'float' => :number
15
15
  }
16
- )
16
+ )
17
17
  }
18
18
 
19
19
  before do
@@ -22,15 +22,15 @@ describe Mode::Connector::Uploader do
22
22
  end
23
23
 
24
24
  it "initializes with a dataset" do
25
- uploader = Mode::Connector::Uploader.new(execution_path, dataset)
25
+ uploader = Mode::Connector::Uploader.new(runs_path, dataset)
26
26
  uploader.dataset.should_not == nil
27
27
  end
28
28
 
29
29
  it "sends a dataset and columns" do
30
- uploader = Mode::Connector::Uploader.new(execution_path, dataset)
30
+ uploader = Mode::Connector::Uploader.new(runs_path, dataset)
31
31
 
32
- Mode::API::Request.should_receive(:put).with(execution_path,
33
- :execution => {
32
+ Mode::API::Request.should_receive(:put).with(runs_path,
33
+ :report_run => {
34
34
  :dataset => {
35
35
  :count => 0,
36
36
  :columns => an_instance_of(String),
@@ -43,8 +43,8 @@ describe Mode::Connector::Uploader do
43
43
  end
44
44
 
45
45
  it "sends error message and detail" do
46
- Mode::API::Request.should_receive(:put).with(execution_path,
47
- :execution => {
46
+ Mode::API::Request.should_receive(:put).with(runs_path,
47
+ :report_run => {
48
48
  :error => {
49
49
  :message => "message",
50
50
  :detail => "detailed"
@@ -52,6 +52,6 @@ describe Mode::Connector::Uploader do
52
52
  }
53
53
  )
54
54
 
55
- Mode::Connector::Uploader.send(:error!, execution_path, "message", "detailed")
55
+ Mode::Connector::Uploader.send(:error!, runs_path, "message", "detailed")
56
56
  end
57
57
  end
metadata CHANGED
@@ -1,225 +1,225 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mode Analytics
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-20 00:00:00.000000000 Z
11
+ date: 2014-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
15
20
  requirement: !ruby/object:Gem::Requirement
16
21
  requirements:
17
22
  - - '>='
18
23
  - !ruby/object:Gem::Version
19
24
  version: '0'
20
- type: :runtime
21
25
  prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: terminal-table
22
29
  version_requirements: !ruby/object:Gem::Requirement
23
30
  requirements:
24
31
  - - '>='
25
32
  - !ruby/object:Gem::Version
26
33
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: terminal-table
29
34
  requirement: !ruby/object:Gem::Requirement
30
35
  requirements:
31
36
  - - '>='
32
37
  - !ruby/object:Gem::Version
33
38
  version: '0'
34
- type: :runtime
35
39
  prerelease: false
40
+ type: :runtime
41
+ - !ruby/object:Gem::Dependency
42
+ name: data_kit
36
43
  version_requirements: !ruby/object:Gem::Requirement
37
44
  requirements:
38
45
  - - '>='
39
46
  - !ruby/object:Gem::Version
40
47
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: data_kit
43
48
  requirement: !ruby/object:Gem::Requirement
44
49
  requirements:
45
50
  - - '>='
46
51
  - !ruby/object:Gem::Version
47
52
  version: '0'
48
- type: :runtime
49
53
  prerelease: false
54
+ type: :runtime
55
+ - !ruby/object:Gem::Dependency
56
+ name: data_package
50
57
  version_requirements: !ruby/object:Gem::Requirement
51
58
  requirements:
52
59
  - - '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: data_package
57
62
  requirement: !ruby/object:Gem::Requirement
58
63
  requirements:
59
64
  - - '>='
60
65
  - !ruby/object:Gem::Version
61
66
  version: '0'
62
- type: :runtime
63
67
  prerelease: false
68
+ type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday
64
71
  version_requirements: !ruby/object:Gem::Requirement
65
72
  requirements:
66
73
  - - '>='
67
74
  - !ruby/object:Gem::Version
68
75
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: faraday
71
76
  requirement: !ruby/object:Gem::Requirement
72
77
  requirements:
73
78
  - - '>='
74
79
  - !ruby/object:Gem::Version
75
80
  version: '0'
76
- type: :runtime
77
81
  prerelease: false
82
+ type: :runtime
83
+ - !ruby/object:Gem::Dependency
84
+ name: uri_template
78
85
  version_requirements: !ruby/object:Gem::Requirement
79
86
  requirements:
80
87
  - - '>='
81
88
  - !ruby/object:Gem::Version
82
89
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: uri_template
85
90
  requirement: !ruby/object:Gem::Requirement
86
91
  requirements:
87
92
  - - '>='
88
93
  - !ruby/object:Gem::Version
89
94
  version: '0'
90
- type: :runtime
91
95
  prerelease: false
96
+ type: :runtime
97
+ - !ruby/object:Gem::Dependency
98
+ name: sequel
92
99
  version_requirements: !ruby/object:Gem::Requirement
93
100
  requirements:
94
101
  - - '>='
95
102
  - !ruby/object:Gem::Version
96
103
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: sequel
99
104
  requirement: !ruby/object:Gem::Requirement
100
105
  requirements:
101
106
  - - '>='
102
107
  - !ruby/object:Gem::Version
103
108
  version: '0'
104
- type: :runtime
105
109
  prerelease: false
110
+ type: :runtime
111
+ - !ruby/object:Gem::Dependency
112
+ name: spoon
106
113
  version_requirements: !ruby/object:Gem::Requirement
107
114
  requirements:
108
115
  - - '>='
109
116
  - !ruby/object:Gem::Version
110
117
  version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: daemon-spawn
113
118
  requirement: !ruby/object:Gem::Requirement
114
119
  requirements:
115
120
  - - '>='
116
121
  - !ruby/object:Gem::Version
117
122
  version: '0'
118
- type: :runtime
119
123
  prerelease: false
124
+ type: :runtime
125
+ - !ruby/object:Gem::Dependency
126
+ name: rufus-scheduler
120
127
  version_requirements: !ruby/object:Gem::Requirement
121
128
  requirements:
122
129
  - - '>='
123
130
  - !ruby/object:Gem::Version
124
131
  version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rufus-scheduler
127
132
  requirement: !ruby/object:Gem::Requirement
128
133
  requirements:
129
134
  - - '>='
130
135
  - !ruby/object:Gem::Version
131
136
  version: '0'
132
- type: :runtime
133
137
  prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - '>='
137
- - !ruby/object:Gem::Version
138
- version: '0'
138
+ type: :runtime
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: bundler
141
- requirement: !ruby/object:Gem::Requirement
141
+ version_requirements: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ~>
144
144
  - !ruby/object:Gem::Version
145
145
  version: '1.3'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
146
+ requirement: !ruby/object:Gem::Requirement
149
147
  requirements:
150
148
  - - ~>
151
149
  - !ruby/object:Gem::Version
152
150
  version: '1.3'
151
+ prerelease: false
152
+ type: :development
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rake
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
155
160
  requirement: !ruby/object:Gem::Requirement
156
161
  requirements:
157
162
  - - '>='
158
163
  - !ruby/object:Gem::Version
159
164
  version: '0'
160
- type: :development
161
165
  prerelease: false
166
+ type: :development
167
+ - !ruby/object:Gem::Dependency
168
+ name: profile
162
169
  version_requirements: !ruby/object:Gem::Requirement
163
170
  requirements:
164
171
  - - '>='
165
172
  - !ruby/object:Gem::Version
166
173
  version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: profile
169
174
  requirement: !ruby/object:Gem::Requirement
170
175
  requirements:
171
176
  - - '>='
172
177
  - !ruby/object:Gem::Version
173
178
  version: '0'
174
- type: :development
175
179
  prerelease: false
180
+ type: :development
181
+ - !ruby/object:Gem::Dependency
182
+ name: rspec
176
183
  version_requirements: !ruby/object:Gem::Requirement
177
184
  requirements:
178
185
  - - '>='
179
186
  - !ruby/object:Gem::Version
180
187
  version: '0'
181
- - !ruby/object:Gem::Dependency
182
- name: rspec
183
188
  requirement: !ruby/object:Gem::Requirement
184
189
  requirements:
185
190
  - - '>='
186
191
  - !ruby/object:Gem::Version
187
192
  version: '0'
188
- type: :development
189
193
  prerelease: false
194
+ type: :development
195
+ - !ruby/object:Gem::Dependency
196
+ name: simplecov
190
197
  version_requirements: !ruby/object:Gem::Requirement
191
198
  requirements:
192
199
  - - '>='
193
200
  - !ruby/object:Gem::Version
194
201
  version: '0'
195
- - !ruby/object:Gem::Dependency
196
- name: ruby-prof
197
202
  requirement: !ruby/object:Gem::Requirement
198
203
  requirements:
199
204
  - - '>='
200
205
  - !ruby/object:Gem::Version
201
206
  version: '0'
202
- type: :development
203
207
  prerelease: false
208
+ type: :development
209
+ - !ruby/object:Gem::Dependency
210
+ name: warbler
204
211
  version_requirements: !ruby/object:Gem::Requirement
205
212
  requirements:
206
213
  - - '>='
207
214
  - !ruby/object:Gem::Version
208
215
  version: '0'
209
- - !ruby/object:Gem::Dependency
210
- name: simplecov
211
216
  requirement: !ruby/object:Gem::Requirement
212
217
  requirements:
213
218
  - - '>='
214
219
  - !ruby/object:Gem::Version
215
220
  version: '0'
216
- type: :development
217
221
  prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - '>='
221
- - !ruby/object:Gem::Version
222
- version: '0'
222
+ type: :development
223
223
  description: CLI and Libraries for Mode Analytics
224
224
  email:
225
225
  - support@modeanalytics.com
@@ -236,6 +236,7 @@ files:
236
236
  - README.md
237
237
  - Rakefile
238
238
  - bin/mode
239
+ - lib/connect.rb
239
240
  - lib/mode.rb
240
241
  - lib/mode/api/form.rb
241
242
  - lib/mode/api/link.rb
@@ -257,9 +258,9 @@ files:
257
258
  - lib/mode/commands/import.rb
258
259
  - lib/mode/commands/login.rb
259
260
  - lib/mode/config.rb
260
- - lib/mode/configurable.rb
261
- - lib/mode/connector/config.rb
261
+ - lib/mode/connector/connect.rb
262
262
  - lib/mode/connector/daemon.rb
263
+ - lib/mode/connector/daemonizer.rb
263
264
  - lib/mode/connector/data_source.rb
264
265
  - lib/mode/connector/dataset.rb
265
266
  - lib/mode/connector/message.rb
@@ -285,8 +286,8 @@ files:
285
286
  - spec/commands/import_spec.rb
286
287
  - spec/commands/login_spec.rb
287
288
  - spec/config_spec.rb
288
- - spec/connector/config_spec.rb
289
289
  - spec/connector/daemon_spec.rb
290
+ - spec/connector/daemonizer_spec.rb
290
291
  - spec/connector/data_source_spec.rb
291
292
  - spec/connector/message_spec.rb
292
293
  - spec/connector/poller_spec.rb
@@ -311,7 +312,7 @@ homepage: http://www.modeanalytics.com/
311
312
  licenses:
312
313
  - MIT
313
314
  metadata: {}
314
- post_install_message:
315
+ post_install_message:
315
316
  rdoc_options: []
316
317
  require_paths:
317
318
  - lib
@@ -326,12 +327,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
326
327
  - !ruby/object:Gem::Version
327
328
  version: '0'
328
329
  requirements: []
329
- rubyforge_project:
330
- rubygems_version: 2.0.14
331
- signing_key:
330
+ rubyforge_project:
331
+ rubygems_version: 2.1.9
332
+ signing_key:
332
333
  specification_version: 4
333
- summary: Provides a command line interface and ruby libraries to the Mode Analytics
334
- Service
334
+ summary: Provides a command line interface and ruby libraries to the Mode Analytics Service
335
335
  test_files:
336
336
  - spec/api/form_spec.rb
337
337
  - spec/api/link_spec.rb
@@ -345,8 +345,8 @@ test_files:
345
345
  - spec/commands/import_spec.rb
346
346
  - spec/commands/login_spec.rb
347
347
  - spec/config_spec.rb
348
- - spec/connector/config_spec.rb
349
348
  - spec/connector/daemon_spec.rb
349
+ - spec/connector/daemonizer_spec.rb
350
350
  - spec/connector/data_source_spec.rb
351
351
  - spec/connector/message_spec.rb
352
352
  - spec/connector/poller_spec.rb