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.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.travis.yml +1 -0
- data/bin/mode +3 -8
- data/lib/connect.rb +13 -0
- data/lib/mode.rb +18 -5
- data/lib/mode/api/link.rb +4 -0
- data/lib/mode/api/request.rb +20 -10
- data/lib/mode/auth/access_token.rb +16 -0
- data/lib/mode/cli/connect.rb +1 -1
- data/lib/mode/commands/analyze_field.rb +1 -3
- data/lib/mode/commands/connect.rb +24 -49
- data/lib/mode/commands/helpers.rb +23 -18
- data/lib/mode/commands/import.rb +2 -4
- data/lib/mode/commands/login.rb +88 -25
- data/lib/mode/config.rb +60 -2
- data/lib/mode/connector/connect.rb +11 -0
- data/lib/mode/connector/daemon.rb +54 -12
- data/lib/mode/connector/daemonizer.rb +107 -0
- data/lib/mode/connector/data_source.rb +36 -9
- data/lib/mode/connector/scheduler.rb +6 -5
- data/lib/mode/connector/uploader.rb +3 -4
- data/lib/mode/version.rb +1 -1
- data/mode.gemspec +7 -4
- data/spec/api/request_spec.rb +9 -6
- data/spec/commands/connect_spec.rb +45 -59
- data/spec/commands/helpers_spec.rb +9 -22
- data/spec/commands/import_spec.rb +5 -0
- data/spec/commands/login_spec.rb +87 -76
- data/spec/config_spec.rb +9 -0
- data/spec/connector/daemon_spec.rb +11 -6
- data/spec/connector/daemonizer_spec.rb +106 -0
- data/spec/connector/data_source_spec.rb +15 -17
- data/spec/connector/registrar_spec.rb +5 -6
- data/spec/connector/scheduler_spec.rb +3 -2
- data/spec/connector/uploader_spec.rb +9 -9
- metadata +65 -65
- data/lib/mode/configurable.rb +0 -46
- data/lib/mode/connector/config.rb +0 -31
- data/spec/connector/config_spec.rb +0 -46
data/spec/config_spec.rb
CHANGED
@@ -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(:
|
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
|
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
|
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
|
24
|
-
|
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
|
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(
|
45
|
-
source.connection.should ==
|
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(
|
51
|
-
source.connection.should ==
|
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
|
-
|
70
|
-
|
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(:
|
8
|
-
let(:config) { Mode::
|
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
|
-
|
26
|
-
|
27
|
-
|
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(:
|
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
|
-
|
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(:
|
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(
|
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(
|
30
|
+
uploader = Mode::Connector::Uploader.new(runs_path, dataset)
|
31
31
|
|
32
|
-
Mode::API::Request.should_receive(:put).with(
|
33
|
-
:
|
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(
|
47
|
-
:
|
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!,
|
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.
|
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-
|
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
|
-
|
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
|
-
|
141
|
+
version_requirements: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ~>
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '1.3'
|
146
|
-
|
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
|
-
|
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/
|
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.
|
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
|