diplomat 0.1.9 → 0.1.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d375c62cdbdf8190c936ef5da0b9072843da44b8
4
- data.tar.gz: 8a741e51bf5c356087ae1f5ca3becb5aded2a211
3
+ metadata.gz: a23e42c39267a3f6bff598a5775ec170787be1bf
4
+ data.tar.gz: 0778158f0ee8e2ba9210f1fc469b1a1b4fefff49
5
5
  SHA512:
6
- metadata.gz: 5b53bd12baab01f46776a0281f7f9fd916804f5f9acd94df001cf6686e4da1787001a2593f88b4ffde22f88d34e70b8fffd193f4ce7c528d78e335f884db4315
7
- data.tar.gz: ac4e242dec87848a8e7991d75670bcad81a1ead33e8c9c6169f89b0344fd5d0b98bdd1c4f1de5e3f0a693ec3d894956da4f09d1277976b3db2b2a91a209474d2
6
+ metadata.gz: 943740a0d4bb06217d8cb55d5a74cb7b72a2575f768f278f606a5aa2390992c7055424566a94043ae4a8bb81bda054ec587ab45419db326e983564d43c5a59f2
7
+ data.tar.gz: 976565fa6452fd2d96089297d5a312187461d09dedb49258f1856e25599d40ef607e5bdb866678ec745f0ae5c7e2511d2072476f690b8ed007af2df28eb1ce61
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ Gemfile.lock
1
2
  *.gem
2
3
  *.rbc
3
4
  /.config
data/.travis.yml CHANGED
@@ -5,4 +5,4 @@ rvm:
5
5
  - "2.1.0"
6
6
  addons:
7
7
  code_climate:
8
- repo_token: 17481039ac7b5ef8779ab644b28a4d95dd7523c3c1fee560311eb4af63de006f
8
+ repo_token: c910d8f8af55cc2d2f38170d5362be4e16be8ce232df9c565057985af264b7b
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # Diplomat
2
- [![Gem Version](https://badge.fury.io/rb/diplomat.svg)](http://badge.fury.io/rb/diplomat) [![Build Status](https://travis-ci.org/johnhamelink/diplomat.svg?branch=master)](https://travis-ci.org/johnhamelink/diplomat) [![Code Climate](https://codeclimate.com/github/johnhamelink/diplomat.png)](https://codeclimate.com/github/johnhamelink/diplomat)
2
+ [![Gem Version](https://badge.fury.io/rb/diplomat.svg)](http://badge.fury.io/rb/diplomat) [![Build Status](https://travis-ci.org/WeAreFarmGeek/diplomat.svg?branch=master)](https://travis-ci.org/WeAreFarmGeek/diplomat) [![Code Climate](https://codeclimate.com/github/johnhamelink/diplomat.png)](https://codeclimate.com/github/WeAreFarmGeek/diplomat)
3
3
  ### A HTTP Ruby API for [Consul](http://www.consul.io/)
4
4
 
5
5
  ![Diplomacy Boad Game](http://i.imgur.com/Nkuy4b7.jpg)
@@ -41,7 +41,7 @@ production:
41
41
 
42
42
  ## Usage
43
43
 
44
- [The most up to date place to read about the API is here.](http://rubydoc.info/github/johnhamelink/diplomat)
44
+ [The most up to date place to read about the API is here.](http://rubydoc.info/github/WeAreFarmGeek/diplomat)
45
45
 
46
46
  Here's a few examples of how diplomat works:
47
47
 
data/diplomat.gemspec CHANGED
@@ -24,6 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rspec", "~> 2.14"
25
25
  spec.add_development_dependency "fakes-rspec", "~> 1.0"
26
26
  spec.add_development_dependency "json", "~> 1.8"
27
- spec.add_development_dependency "codeclimate-test-reporter"
27
+ spec.add_development_dependency "codeclimate-test-reporter", "~> 0.3.0"
28
28
  spec.add_dependency "faraday", "~> 0.9"
29
29
  end
data/lib/diplomat.rb CHANGED
@@ -32,6 +32,6 @@ module Diplomat
32
32
 
33
33
 
34
34
 
35
- require_libs "rest_client", "kv", "service"
35
+ require_libs "rest_client", "kv", "service", "members", "check", "health"
36
36
 
37
37
  end
@@ -0,0 +1,127 @@
1
+ require 'base64'
2
+ require 'faraday'
3
+
4
+ module Diplomat
5
+ class Check < Diplomat::RestClient
6
+
7
+ # Get registered checks
8
+ # @return [OpenStruct] all data associated with the service
9
+ def checks
10
+ ret = @conn.get "/v1/agent/checks"
11
+ return JSON.parse(ret.body)
12
+ end
13
+
14
+ # Register a check
15
+ # @param check_id [String] the unique id of the check
16
+ # @param name [String] the name
17
+ # @param notes [String] notes about the check
18
+ # @param script [String] command to be run for check
19
+ # @param interval [String] frequency (with units) of the check execution
20
+ # @param ttl [String] time (with units) to mark a check down
21
+ # @return [Integer] Status code
22
+ def register_script check_id, name, notes, script, interval
23
+ json = JSON.generate(
24
+ {
25
+ "ID" => check_id,
26
+ "Name" => name,
27
+ "Notes" => notes,
28
+ "Script" => script,
29
+ "Interval" => interval
30
+ }
31
+ )
32
+
33
+ ret = @conn.put do |req|
34
+ req.url "/v1/agent/check/register"
35
+ req.body = json
36
+ end
37
+
38
+ return true if ret.status == 200
39
+ end
40
+
41
+ def register_ttl check_id, name, notes, ttl
42
+ json = JSON.generate(
43
+ {
44
+ "ID" => check_id,
45
+ "Name" => name,
46
+ "Notes" => notes,
47
+ "TTL" => ttl,
48
+ }
49
+ )
50
+
51
+ ret = @conn.put do |req|
52
+ req.url "/v1/agent/check/register"
53
+ req.body = json
54
+ end
55
+
56
+ return true if ret.status == 200
57
+ end
58
+
59
+ # Deregister a check
60
+ # @param check_id [String] the unique id of the check
61
+ # @return [Integer] Status code
62
+ def deregister check_id
63
+ ret = @conn.get "/v1/agent/check/deregister/#{check_id}"
64
+ return true if ret.status == 200
65
+ end
66
+
67
+ # Pass a check
68
+ # @param check_id [String] the unique id of the check
69
+ # @return [Integer] Status code
70
+ def pass check_id
71
+ ret = @conn.get "/v1/agent/check/pass/#{check_id}"
72
+ return true if ret.status == 200
73
+ end
74
+
75
+ # Warn a check
76
+ # @param check_id [String] the unique id of the check
77
+ # @return [Integer] Status code
78
+ def warn check_id
79
+ ret = @conn.get "/v1/agent/check/warn/#{check_id}"
80
+ return true if ret.status == 200
81
+ end
82
+
83
+ # Warn a check
84
+ # @param check_id [String] the unique id of the check
85
+ # @return [Integer] Status code
86
+ def fail check_id
87
+ ret = @conn.get "/v1/agent/check/fail/#{check_id}"
88
+ return true if ret.status == 200
89
+ end
90
+
91
+ # @note This is sugar, see (#checks)
92
+ def self.checks
93
+ Diplomat::Check.new.checks
94
+ end
95
+
96
+ # @note This is sugar, see (#register_script)
97
+ def self.register_script *args
98
+ Diplomat::Check.new.register_script *args
99
+ end
100
+
101
+ # @note This is sugar, see (#register_ttl)
102
+ def self.register_ttl *args
103
+ Diplomat::Check.new.register_ttl *args
104
+ end
105
+
106
+ # @note This is sugar, see (#deregister)
107
+ def self.deregister *args
108
+ Diplomat::Check.new.deregister *args
109
+ end
110
+
111
+ # @note This is sugar, see (#pass)
112
+ def self.pass *args
113
+ Diplomat::Check.new.pass *args
114
+ end
115
+
116
+ # @note This is sugar, see (#warn)
117
+ def self.warn *args
118
+ Diplomat::Check.new.warn *args
119
+ end
120
+
121
+ # @note This is sugar, see (#fail)
122
+ def self.fail *args
123
+ Diplomat::Check.new.fail *args
124
+ end
125
+
126
+ end
127
+ end
@@ -0,0 +1,101 @@
1
+ require 'base64'
2
+ require 'faraday'
3
+
4
+ module Diplomat
5
+ class Health < Diplomat::RestClient
6
+
7
+ # Get node health
8
+ # @param n [String] the node
9
+ # @return [OpenStruct] all data associated with the node
10
+ def node n
11
+ ret = @conn.get "/v1/health/node/#{n}"
12
+ return JSON.parse(ret.body)
13
+ end
14
+
15
+ # Get service checks
16
+ # @param s [String] the service
17
+ # @return [OpenStruct] all data associated with the node
18
+ def checks s
19
+ ret = @conn.get "/v1/health/checks/#{s}"
20
+ return JSON.parse(ret.body)
21
+ end
22
+
23
+ # Get service health
24
+ # @param s [String] the service
25
+ # @return [OpenStruct] all data associated with the node
26
+ def service s
27
+ ret = @conn.get "/v1/health/service/#{s}"
28
+ return JSON.parse(ret.body)
29
+ end
30
+
31
+ # Get service health
32
+ # @param s [String] the state ("unknown", "passing", "warning", or "critical")
33
+ # @return [OpenStruct] all data associated with the node
34
+ def state s
35
+ ret = @conn.get "/v1/health/state/#{s}"
36
+ return JSON.parse(ret.body)
37
+ end
38
+
39
+ # Convenience method to get services in unknown state
40
+ def unknown
41
+ state("unknown")
42
+ end
43
+
44
+ # Convenience method to get services in passing state
45
+ def passing
46
+ state("passing")
47
+ end
48
+
49
+ # Convenience method to get services in warning state
50
+ def warning
51
+ state("warning")
52
+ end
53
+
54
+ # Convenience method to get services in critical state
55
+ def critical
56
+ state("critical")
57
+ end
58
+
59
+
60
+ # @note This is sugar, see (#node)
61
+ def self.node *args
62
+ Diplomat::Health.new.node *args
63
+ end
64
+
65
+ # @note This is sugar, see (#checks)
66
+ def self.checks *args
67
+ Diplomat::Health.new.checks *args
68
+ end
69
+
70
+ # @note This is sugar, see (#service)
71
+ def self.service *args
72
+ Diplomat::Health.new.service *args
73
+ end
74
+
75
+ # @note This is sugar, see (#state)
76
+ def self.state *args
77
+ Diplomat::Health.new.state *args
78
+ end
79
+
80
+ # @note This is sugar, see (#unknown)
81
+ def self.unknown
82
+ Diplomat::Health.new.unknown
83
+ end
84
+
85
+ # @note This is sugar, see (#passing)
86
+ def self.passing
87
+ Diplomat::Health.new.passing
88
+ end
89
+
90
+ # @note This is sugar, see (#warning)
91
+ def self.warning
92
+ Diplomat::Health.new.warning
93
+ end
94
+
95
+ # @note This is sugar, see (#critical)
96
+ def self.critical
97
+ Diplomat::Health.new.critical
98
+ end
99
+
100
+ end
101
+ end
@@ -0,0 +1,20 @@
1
+ require 'base64'
2
+ require 'faraday'
3
+
4
+ module Diplomat
5
+ class Members < Diplomat::RestClient
6
+
7
+ # Get all members
8
+ # @return [OpenStruct] all data associated with the service
9
+ def get
10
+ ret = @conn.get "/v1/agent/members"
11
+ return JSON.parse(ret.body)
12
+ end
13
+
14
+ # @note This is sugar, see (#get)
15
+ def self.get
16
+ Diplomat::Members.new.get
17
+ end
18
+
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module Diplomat
2
- VERSION = "0.1.9"
2
+ VERSION = "0.1.10"
3
3
  end
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+ require 'base64'
4
+
5
+ describe Diplomat::Check do
6
+
7
+ let(:faraday) { fake }
8
+
9
+ context "check" do
10
+
11
+ it "checks" do
12
+ json = JSON.generate(
13
+ {
14
+ "service:redis"=> {
15
+ "Node"=>"foobar",
16
+ "CheckID"=>"service:redis",
17
+ "Name"=>"Service 'redis' check",
18
+ "Status"=>"passing",
19
+ "Notes"=>"",
20
+ "Output"=>"",
21
+ "ServiceID"=>"redis",
22
+ "ServiceName"=>"redis"}
23
+ }
24
+ )
25
+
26
+ faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
27
+
28
+ check = Diplomat::Check.new(faraday)
29
+
30
+ expect(check.checks["service:redis"]["Node"]).to eq("foobar")
31
+ end
32
+
33
+ it "register_script" do
34
+ faraday.stub(:put).and_return(OpenStruct.new({ body: '', status: 200 }))
35
+ check = Diplomat::Check.new(faraday)
36
+ expect(check.register_script("foobar-1", "Foobar", "Foobar test", "/script/test", "10s")).to eq(true)
37
+ end
38
+
39
+ it "register_ttl" do
40
+ faraday.stub(:put).and_return(OpenStruct.new({ body: '', status: 200 }))
41
+ check = Diplomat::Check.new(faraday)
42
+ expect(check.register_ttl("foobar-1", "Foobar", "Foobar test", "15s")).to eq(true)
43
+ end
44
+
45
+ it "deregister" do
46
+ faraday.stub(:get).and_return(OpenStruct.new({ body: '', status: 200 }))
47
+ check = Diplomat::Check.new(faraday)
48
+ expect(check.deregister("foobar-1")).to eq(true)
49
+ end
50
+
51
+ it "pass" do
52
+ faraday.stub(:get).and_return(OpenStruct.new({ body: '', status: 200 }))
53
+ check = Diplomat::Check.new(faraday)
54
+ expect(check.pass("foobar-1")).to eq(true)
55
+ end
56
+
57
+ it "warn" do
58
+ faraday.stub(:get).and_return(OpenStruct.new({ body: '', status: 200 }))
59
+ check = Diplomat::Check.new(faraday)
60
+ expect(check.warn("foobar-1")).to eq(true)
61
+ end
62
+
63
+ it "fail" do
64
+ faraday.stub(:get).and_return(OpenStruct.new({ body: '', status: 200 }))
65
+ check = Diplomat::Check.new(faraday)
66
+ expect(check.fail("foobar-1")).to eq(true)
67
+ end
68
+
69
+ end
70
+
71
+ end
@@ -0,0 +1,150 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+ require 'base64'
4
+
5
+ describe Diplomat::Health do
6
+
7
+ let(:faraday) { fake }
8
+
9
+ context "health" do
10
+
11
+ it "node" do
12
+ json = <<EOF
13
+ [
14
+ {
15
+ "Node": "foobar",
16
+ "CheckID": "serfHealth",
17
+ "Name": "Serf Health Status",
18
+ "Status": "passing",
19
+ "Notes": "",
20
+ "Output": "",
21
+ "ServiceID": "",
22
+ "ServiceName": ""
23
+ },
24
+ {
25
+ "Node": "foobar",
26
+ "CheckID": "service:redis",
27
+ "Name": "Service 'redis' check",
28
+ "Status": "passing",
29
+ "Notes": "",
30
+ "Output": "",
31
+ "ServiceID": "redis",
32
+ "ServiceName": "redis"
33
+ }
34
+ ]
35
+ EOF
36
+
37
+ faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
38
+
39
+ health = Diplomat::Health.new(faraday)
40
+
41
+ expect(health.node("foobar")[0]["Node"]).to eq("foobar")
42
+ end
43
+
44
+ it "checks" do
45
+ json = <<EOF
46
+ [
47
+ {
48
+ "Node": "foobar",
49
+ "CheckID": "service:redis",
50
+ "Name": "Service 'redis' check",
51
+ "Status": "passing",
52
+ "Notes": "",
53
+ "Output": "",
54
+ "ServiceID": "redis",
55
+ "ServiceName": "redis"
56
+ }
57
+ ]
58
+ EOF
59
+
60
+ faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
61
+
62
+ health = Diplomat::Health.new(faraday)
63
+
64
+ expect(health.checks("foobar")[0]["Node"]).to eq("foobar")
65
+ end
66
+
67
+ it "service" do
68
+ json = <<EOF
69
+ [
70
+ {
71
+ "Node": {
72
+ "Node": "foobar",
73
+ "Address": "10.1.10.12"
74
+ },
75
+ "Service": {
76
+ "ID": "redis",
77
+ "Service": "redis",
78
+ "Tags": null,
79
+ "Port": 8000
80
+ },
81
+ "Checks": [
82
+ {
83
+ "Node": "foobar",
84
+ "CheckID": "service:redis",
85
+ "Name": "Service 'redis' check",
86
+ "Status": "passing",
87
+ "Notes": "",
88
+ "Output": "",
89
+ "ServiceID": "redis",
90
+ "ServiceName": "redis"
91
+ },
92
+ {
93
+ "Node": "foobar",
94
+ "CheckID": "serfHealth",
95
+ "Name": "Serf Health Status",
96
+ "Status": "passing",
97
+ "Notes": "",
98
+ "Output": "",
99
+ "ServiceID": "",
100
+ "ServiceName": ""
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ EOF
106
+
107
+ faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
108
+
109
+ health = Diplomat::Health.new(faraday)
110
+
111
+ expect(health.service("foobar")[0]["Node"]["Node"]).to eq("foobar")
112
+ end
113
+
114
+ it "state" do
115
+ json = <<EOF
116
+ [
117
+ {
118
+ "Node": "foobar",
119
+ "CheckID": "serfHealth",
120
+ "Name": "Serf Health Status",
121
+ "Status": "passing",
122
+ "Notes": "",
123
+ "Output": "",
124
+ "ServiceID": "",
125
+ "ServiceName": ""
126
+ },
127
+ {
128
+ "Node": "foobar",
129
+ "CheckID": "service:redis",
130
+ "Name": "Service 'redis' check",
131
+ "Status": "passing",
132
+ "Notes": "",
133
+ "Output": "",
134
+ "ServiceID": "redis",
135
+ "ServiceName": "redis"
136
+ }
137
+ ]
138
+ EOF
139
+
140
+ faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
141
+
142
+ health = Diplomat::Health.new(faraday)
143
+
144
+ expect(health.state("foobar")[0]["Node"]).to eq("foobar")
145
+ end
146
+
147
+
148
+ end
149
+
150
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+ require 'base64'
4
+
5
+ describe Diplomat::Members do
6
+
7
+ let(:faraday) { fake }
8
+
9
+ context "member" do
10
+
11
+ it "GET" do
12
+ json = JSON.generate(
13
+ [{
14
+ "Name" => "foobar",
15
+ "Addr" => "10.1.10.12",
16
+ "Port" => 8301,
17
+ "Tags" => {
18
+ "bootstrap" => "1",
19
+ "dc" => "dc1",
20
+ "port" => 8300,
21
+ "role" => "consul",
22
+ },
23
+ "Status" => 1,
24
+ "ProtocolMin" => 1,
25
+ "ProtocolMax" => 2,
26
+ "ProtocolCur" => 2,
27
+ "DelegateMin" => 1,
28
+ "DelegateMax" => 3,
29
+ "DelegateCur" => 3
30
+ }]
31
+ )
32
+
33
+ faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
34
+
35
+ members = Diplomat::Members.new(faraday)
36
+
37
+ expect(members.get[0]["Name"]).to eq("foobar")
38
+ end
39
+
40
+ end
41
+
42
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diplomat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hamelink
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-19 00:00:00.000000000 Z
11
+ date: 2014-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: codeclimate-test-reporter
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 0.3.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 0.3.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: faraday
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -133,17 +133,22 @@ files:
133
133
  - ".rspec"
134
134
  - ".travis.yml"
135
135
  - Gemfile
136
- - Gemfile.lock
137
136
  - LICENSE
138
137
  - README.md
139
138
  - Rakefile
140
139
  - diplomat.gemspec
141
140
  - lib/diplomat.rb
141
+ - lib/diplomat/check.rb
142
+ - lib/diplomat/health.rb
142
143
  - lib/diplomat/kv.rb
144
+ - lib/diplomat/members.rb
143
145
  - lib/diplomat/rest_client.rb
144
146
  - lib/diplomat/service.rb
145
147
  - lib/diplomat/version.rb
148
+ - spec/check_spec.rb
149
+ - spec/health_spec.rb
146
150
  - spec/kv_spec.rb
151
+ - spec/members_spec.rb
147
152
  - spec/spec_helper.rb
148
153
  homepage: https://github.com/johnhamelink/diplomat
149
154
  licenses:
@@ -170,6 +175,9 @@ signing_key:
170
175
  specification_version: 4
171
176
  summary: Diplomat is a simple wrapper for Consul
172
177
  test_files:
178
+ - spec/check_spec.rb
179
+ - spec/health_spec.rb
173
180
  - spec/kv_spec.rb
181
+ - spec/members_spec.rb
174
182
  - spec/spec_helper.rb
175
183
  has_rdoc:
data/Gemfile.lock DELETED
@@ -1,55 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- diplomat (0.1.7)
5
- faraday (~> 0.9)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- codeclimate-test-reporter (0.3.0)
11
- simplecov (>= 0.7.1, < 1.0.0)
12
- coderay (1.1.0)
13
- diff-lcs (1.2.5)
14
- docile (1.1.3)
15
- fakes (1.1.4)
16
- fakes-rspec (1.0.5)
17
- fakes
18
- faraday (0.9.0)
19
- multipart-post (>= 1.2, < 3)
20
- json (1.8.1)
21
- method_source (0.8.2)
22
- multi_json (1.9.2)
23
- multipart-post (2.0.0)
24
- pry (0.9.12.6)
25
- coderay (~> 1.0)
26
- method_source (~> 0.8)
27
- slop (~> 3.4)
28
- rake (10.3.1)
29
- rspec (2.14.1)
30
- rspec-core (~> 2.14.0)
31
- rspec-expectations (~> 2.14.0)
32
- rspec-mocks (~> 2.14.0)
33
- rspec-core (2.14.8)
34
- rspec-expectations (2.14.5)
35
- diff-lcs (>= 1.1.3, < 2.0)
36
- rspec-mocks (2.14.6)
37
- simplecov (0.8.2)
38
- docile (~> 1.1.0)
39
- multi_json
40
- simplecov-html (~> 0.8.0)
41
- simplecov-html (0.8.0)
42
- slop (3.4.7)
43
-
44
- PLATFORMS
45
- ruby
46
-
47
- DEPENDENCIES
48
- bundler (~> 1.3)
49
- codeclimate-test-reporter
50
- diplomat!
51
- fakes-rspec (~> 1.0)
52
- json (~> 1.8)
53
- pry (~> 0.9)
54
- rake (~> 10.3)
55
- rspec (~> 2.14)