daikon 0.5.10 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -4
- data/Gemfile.lock +2 -6
- data/daikon.gemspec +5 -7
- data/lib/daikon.rb +2 -2
- data/lib/daikon/client.rb +19 -36
- data/spec/client_spec.rb +42 -25
- data/spec/spec_helper.rb +0 -3
- metadata +62 -49
- data/lib/daikon/heroku.crt +0 -36
data/Gemfile
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
gem "daemons",
|
4
|
-
gem "
|
5
|
-
gem "
|
3
|
+
gem "daemons", "~> 1.1.0"
|
4
|
+
gem "excon", "~> 0.3.8"
|
5
|
+
gem "json_pure", "~> 1.4.6"
|
6
|
+
gem "redis", "~> 2.1.1"
|
6
7
|
|
7
8
|
group :development do
|
8
9
|
gem "bourne"
|
@@ -10,5 +11,4 @@ group :development do
|
|
10
11
|
gem "jeweler"
|
11
12
|
gem "rspec"
|
12
13
|
gem "timecop"
|
13
|
-
gem "webmock"
|
14
14
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
addressable (2.2.2)
|
5
4
|
bourne (1.0)
|
6
5
|
mocha (= 0.9.8)
|
7
6
|
builder (2.1.2)
|
8
|
-
crack (0.1.8)
|
9
7
|
cucumber (0.9.4)
|
10
8
|
builder (~> 2.1.2)
|
11
9
|
diff-lcs (~> 1.1.2)
|
@@ -14,6 +12,7 @@ GEM
|
|
14
12
|
term-ansicolor (~> 1.0.5)
|
15
13
|
daemons (1.1.0)
|
16
14
|
diff-lcs (1.1.2)
|
15
|
+
excon (0.3.8)
|
17
16
|
gherkin (2.2.9)
|
18
17
|
json (~> 1.4.6)
|
19
18
|
term-ansicolor (~> 1.0.5)
|
@@ -38,9 +37,6 @@ GEM
|
|
38
37
|
rspec-mocks (2.1.0)
|
39
38
|
term-ansicolor (1.0.5)
|
40
39
|
timecop (0.3.5)
|
41
|
-
webmock (1.6.1)
|
42
|
-
addressable (>= 2.2.2)
|
43
|
-
crack (>= 0.1.7)
|
44
40
|
|
45
41
|
PLATFORMS
|
46
42
|
ruby
|
@@ -49,9 +45,9 @@ DEPENDENCIES
|
|
49
45
|
bourne
|
50
46
|
cucumber
|
51
47
|
daemons (~> 1.1.0)
|
48
|
+
excon (~> 0.3.8)
|
52
49
|
jeweler
|
53
50
|
json_pure (~> 1.4.6)
|
54
51
|
redis (~> 2.1.1)
|
55
52
|
rspec
|
56
53
|
timecop
|
57
|
-
webmock
|
data/daikon.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{daikon}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.6.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nick Quaranto"]
|
@@ -34,7 +34,6 @@ Gem::Specification.new do |s|
|
|
34
34
|
"lib/daikon/client.rb",
|
35
35
|
"lib/daikon/configuration.rb",
|
36
36
|
"lib/daikon/daemon.rb",
|
37
|
-
"lib/daikon/heroku.crt",
|
38
37
|
"lib/daikon/monitor.rb",
|
39
38
|
"lib/daikon/namespace_tools.rb",
|
40
39
|
"lib/daikon/redis_hacks.rb",
|
@@ -49,7 +48,7 @@ Gem::Specification.new do |s|
|
|
49
48
|
s.licenses = ["MIT"]
|
50
49
|
s.require_paths = ["lib"]
|
51
50
|
s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
|
52
|
-
s.rubygems_version = %q{1.
|
51
|
+
s.rubygems_version = %q{1.4.1}
|
53
52
|
s.summary = %q{daikon, a radishapp.com client}
|
54
53
|
s.test_files = [
|
55
54
|
"spec/client_spec.rb",
|
@@ -61,11 +60,11 @@ Gem::Specification.new do |s|
|
|
61
60
|
]
|
62
61
|
|
63
62
|
if s.respond_to? :specification_version then
|
64
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
65
63
|
s.specification_version = 3
|
66
64
|
|
67
65
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
68
66
|
s.add_runtime_dependency(%q<daemons>, ["~> 1.1.0"])
|
67
|
+
s.add_runtime_dependency(%q<excon>, ["~> 0.3.8"])
|
69
68
|
s.add_runtime_dependency(%q<json_pure>, ["~> 1.4.6"])
|
70
69
|
s.add_runtime_dependency(%q<redis>, ["~> 2.1.1"])
|
71
70
|
s.add_development_dependency(%q<bourne>, [">= 0"])
|
@@ -73,9 +72,9 @@ Gem::Specification.new do |s|
|
|
73
72
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
74
73
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
75
74
|
s.add_development_dependency(%q<timecop>, [">= 0"])
|
76
|
-
s.add_development_dependency(%q<webmock>, [">= 0"])
|
77
75
|
else
|
78
76
|
s.add_dependency(%q<daemons>, ["~> 1.1.0"])
|
77
|
+
s.add_dependency(%q<excon>, ["~> 0.3.8"])
|
79
78
|
s.add_dependency(%q<json_pure>, ["~> 1.4.6"])
|
80
79
|
s.add_dependency(%q<redis>, ["~> 2.1.1"])
|
81
80
|
s.add_dependency(%q<bourne>, [">= 0"])
|
@@ -83,10 +82,10 @@ Gem::Specification.new do |s|
|
|
83
82
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
84
83
|
s.add_dependency(%q<rspec>, [">= 0"])
|
85
84
|
s.add_dependency(%q<timecop>, [">= 0"])
|
86
|
-
s.add_dependency(%q<webmock>, [">= 0"])
|
87
85
|
end
|
88
86
|
else
|
89
87
|
s.add_dependency(%q<daemons>, ["~> 1.1.0"])
|
88
|
+
s.add_dependency(%q<excon>, ["~> 0.3.8"])
|
90
89
|
s.add_dependency(%q<json_pure>, ["~> 1.4.6"])
|
91
90
|
s.add_dependency(%q<redis>, ["~> 2.1.1"])
|
92
91
|
s.add_dependency(%q<bourne>, [">= 0"])
|
@@ -94,7 +93,6 @@ Gem::Specification.new do |s|
|
|
94
93
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
95
94
|
s.add_dependency(%q<rspec>, [">= 0"])
|
96
95
|
s.add_dependency(%q<timecop>, [">= 0"])
|
97
|
-
s.add_dependency(%q<webmock>, [">= 0"])
|
98
96
|
end
|
99
97
|
end
|
100
98
|
|
data/lib/daikon.rb
CHANGED
@@ -6,9 +6,9 @@ require 'shellwords'
|
|
6
6
|
require 'socket'
|
7
7
|
require 'stringio'
|
8
8
|
|
9
|
+
require 'excon'
|
9
10
|
require 'daemons'
|
10
11
|
require 'json'
|
11
|
-
require 'net/https'
|
12
12
|
require 'redis'
|
13
13
|
|
14
14
|
__DIR__ = File.dirname(__FILE__)
|
@@ -25,5 +25,5 @@ require 'daikon/monitor'
|
|
25
25
|
require 'daikon/redis_hacks'
|
26
26
|
|
27
27
|
module Daikon
|
28
|
-
VERSION = "0.
|
28
|
+
VERSION = "0.6.0"
|
29
29
|
end
|
data/lib/daikon/client.rb
CHANGED
@@ -6,9 +6,6 @@ module Daikon
|
|
6
6
|
Errno::EINVAL,
|
7
7
|
Errno::ECONNRESET,
|
8
8
|
EOFError,
|
9
|
-
Net::HTTPBadResponse,
|
10
|
-
Net::HTTPHeaderSyntaxError,
|
11
|
-
Net::ProtocolError,
|
12
9
|
JSON::ParserError]
|
13
10
|
|
14
11
|
attr_accessor :redis, :logger, :config, :http, :monitor
|
@@ -18,15 +15,7 @@ module Daikon
|
|
18
15
|
self.logger = logger
|
19
16
|
self.redis = connect
|
20
17
|
self.monitor = Monitor.new(connect, logger)
|
21
|
-
|
22
|
-
server_uri = URI.parse(config.server_prefix)
|
23
|
-
self.http = Net::HTTP.new(server_uri.host, server_uri.port)
|
24
|
-
|
25
|
-
if server_uri.scheme == "https"
|
26
|
-
self.http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
27
|
-
self.http.use_ssl = true
|
28
|
-
self.http.ca_file = File.join(File.dirname(__FILE__), "heroku.crt")
|
29
|
-
end
|
18
|
+
self.http = Excon.new(config.server_prefix)
|
30
19
|
|
31
20
|
log "Started Daikon v#{VERSION}"
|
32
21
|
end
|
@@ -43,20 +32,26 @@ module Daikon
|
|
43
32
|
logger.info message if logger
|
44
33
|
end
|
45
34
|
|
46
|
-
def
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
35
|
+
def request(method, path, options = {})
|
36
|
+
options[:method] = method.to_s.upcase
|
37
|
+
options[:path] = path
|
38
|
+
options[:headers] ||= {}
|
39
|
+
options[:headers]['Authorization'] = config.api_key
|
51
40
|
|
52
|
-
|
41
|
+
log "#{options[:method]} #{config.server_prefix}/#{options[:path]}"
|
42
|
+
http.request(options)
|
43
|
+
end
|
53
44
|
|
54
|
-
|
55
|
-
|
45
|
+
def push(method, path, body)
|
46
|
+
json = body.to_json
|
47
|
+
request(method, path,
|
48
|
+
:body => json,
|
49
|
+
:headers => {"Content-Length" => json.size.to_s,
|
50
|
+
"Content-Type" => "application/json"})
|
56
51
|
end
|
57
52
|
|
58
53
|
def fetch_commands
|
59
|
-
raw_commands =
|
54
|
+
raw_commands = request(:get, "/api/v1/commands.json")
|
60
55
|
commands = JSON.parse(raw_commands.body)
|
61
56
|
|
62
57
|
commands.each do |id, command|
|
@@ -64,22 +59,14 @@ module Daikon
|
|
64
59
|
pretty = StringIO.new
|
65
60
|
PP.pp(result, pretty)
|
66
61
|
|
67
|
-
|
68
|
-
request.body = {"response" => pretty.string.strip}.to_json
|
69
|
-
request.add_field "Content-Length", request.body.size.to_s
|
70
|
-
request.add_field "Content-Type", "application/json"
|
71
|
-
end
|
62
|
+
push :put, "/api/v1/commands/#{id}.json", {"response" => pretty.string.strip}
|
72
63
|
end
|
73
64
|
rescue *EXCEPTIONS => ex
|
74
65
|
log ex.to_s
|
75
66
|
end
|
76
67
|
|
77
68
|
def report_info
|
78
|
-
|
79
|
-
request.body = redis.info.to_json
|
80
|
-
request.add_field "Content-Length", request.body.size.to_s
|
81
|
-
request.add_field "Content-Type", "application/json"
|
82
|
-
end
|
69
|
+
push :post, "/api/v1/info.json", redis.info
|
83
70
|
rescue *EXCEPTIONS => ex
|
84
71
|
log ex.to_s
|
85
72
|
end
|
@@ -87,11 +74,7 @@ module Daikon
|
|
87
74
|
def rotate_monitor
|
88
75
|
lines = monitor.rotate
|
89
76
|
|
90
|
-
|
91
|
-
request.body = {"lines" => lines}.to_json
|
92
|
-
request.add_field "Content-Length", request.body.size.to_s
|
93
|
-
request.add_field "Content-Type", "application/json"
|
94
|
-
end
|
77
|
+
push :post, "/api/v1/monitor.json", {"lines" => lines}
|
95
78
|
rescue *EXCEPTIONS => ex
|
96
79
|
log ex.to_s
|
97
80
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -39,8 +39,10 @@ end
|
|
39
39
|
|
40
40
|
shared_examples_for "a command api consumer" do
|
41
41
|
it "sends a request for commands" do
|
42
|
-
|
43
|
-
|
42
|
+
http.should have_received(:request).with(
|
43
|
+
:method => "GET",
|
44
|
+
:path => "/api/v1/commands.json",
|
45
|
+
:headers => {"Authorization" => api_key})
|
44
46
|
end
|
45
47
|
|
46
48
|
it "processes each command" do
|
@@ -57,22 +59,28 @@ shared_examples_for "a command api consumer" do
|
|
57
59
|
"Content-Type" => "application/json"
|
58
60
|
}
|
59
61
|
|
60
|
-
|
61
|
-
|
62
|
+
http.should have_received(:request).with(
|
63
|
+
:method => "PUT",
|
64
|
+
:path => "/api/v1/commands/42.json",
|
65
|
+
:body => results,
|
66
|
+
:headers => headers)
|
62
67
|
|
63
|
-
|
64
|
-
|
68
|
+
http.should have_received(:request).with(
|
69
|
+
:method => "PUT",
|
70
|
+
:path => "/api/v1/commands/43.json",
|
71
|
+
:body => results,
|
72
|
+
:headers => headers)
|
65
73
|
end
|
66
74
|
end
|
67
75
|
|
68
76
|
describe Daikon::Client, "fetching commands" do
|
69
77
|
subject { Daikon::Client.new }
|
70
78
|
let(:body) { {"42" => "INCR foo", "43" => "DECR foo"}.to_json }
|
79
|
+
let(:http) { stub("http", :request => Excon::Response.new(:body => body)) }
|
71
80
|
|
72
81
|
before do
|
73
82
|
subject.stubs(:evaluate_redis => 9999)
|
74
|
-
|
75
|
-
stub_request(:put, %r{#{server}/api/v1/commands/\d+\.json})
|
83
|
+
subject.stubs(:http => http)
|
76
84
|
|
77
85
|
subject.setup(config)
|
78
86
|
subject.fetch_commands
|
@@ -99,7 +107,9 @@ describe Daikon::Client, "when server is down" do
|
|
99
107
|
subject { Daikon::Client.new }
|
100
108
|
before do
|
101
109
|
subject.setup(Daikon::Configuration.new)
|
102
|
-
|
110
|
+
http = stub("http")
|
111
|
+
http.stubs(:request).raises(Timeout::Error)
|
112
|
+
subject.stubs(:http => http)
|
103
113
|
end
|
104
114
|
|
105
115
|
it "does not commit suicide" do
|
@@ -113,7 +123,8 @@ describe Daikon::Client, "when it returns bad json" do
|
|
113
123
|
subject { Daikon::Client.new }
|
114
124
|
before do
|
115
125
|
subject.setup(Daikon::Configuration.new)
|
116
|
-
|
126
|
+
http = stub("http", :request => Excon::Response.new(:body => "{'bad':'json}"))
|
127
|
+
subject.stubs(:http => http)
|
117
128
|
end
|
118
129
|
|
119
130
|
it "does not commit suicide" do
|
@@ -125,26 +136,28 @@ end
|
|
125
136
|
|
126
137
|
shared_examples_for "a info api consumer" do
|
127
138
|
it "shoots the results back to radish" do
|
128
|
-
|
129
139
|
headers = {
|
130
140
|
"Authorization" => api_key,
|
131
141
|
"Content-Length" => results.to_json.size.to_s,
|
132
142
|
"Content-Type" => "application/json"
|
133
143
|
}
|
134
144
|
|
135
|
-
|
136
|
-
|
145
|
+
http.should have_received(:request).with(
|
146
|
+
:method => "POST",
|
147
|
+
:path => "/api/v1/info.json",
|
148
|
+
:body => results.to_json,
|
149
|
+
:headers => headers)
|
137
150
|
end
|
138
151
|
end
|
139
152
|
|
140
153
|
describe Daikon::Client, "report info" do
|
141
154
|
subject { Daikon::Client.new }
|
142
|
-
let(:results) { {"connected_clients"=>"1", "used_cpu_sys_childrens"=>"0.00"}
|
155
|
+
let(:results) { {"connected_clients"=>"1", "used_cpu_sys_childrens"=>"0.00"} }
|
143
156
|
let(:redis) { stub("redis instance", :info => results) }
|
157
|
+
let(:http) { stub("http", :request => Excon::Response.new) }
|
144
158
|
|
145
159
|
before do
|
146
|
-
|
147
|
-
subject.stubs(:redis => redis)
|
160
|
+
subject.stubs(:redis => redis, :http => http)
|
148
161
|
subject.setup(config)
|
149
162
|
subject.report_info
|
150
163
|
end
|
@@ -172,12 +185,15 @@ shared_examples_for "a monitor api consumer" do
|
|
172
185
|
|
173
186
|
headers = {
|
174
187
|
"Authorization" => api_key,
|
175
|
-
"Content-Length" => payload.to_json.size,
|
188
|
+
"Content-Length" => payload.to_json.size.to_s,
|
176
189
|
"Content-Type" => "application/json"
|
177
190
|
}
|
178
191
|
|
179
|
-
|
180
|
-
|
192
|
+
http.should have_received(:request).with(
|
193
|
+
:method => "POST",
|
194
|
+
:path => "/api/v1/monitor.json",
|
195
|
+
:body => payload.to_json,
|
196
|
+
:headers => headers)
|
181
197
|
end
|
182
198
|
end
|
183
199
|
|
@@ -185,13 +201,14 @@ describe Daikon::Client, "rotate monitor" do
|
|
185
201
|
subject { Daikon::Client.new }
|
186
202
|
let(:results) { %{1290289048.96581 "info"\n1290289053.568815 "info"} }
|
187
203
|
let(:redis) { stub("redis instance", :info => results) }
|
204
|
+
let(:http) { stub("http", :request => Excon::Response.new) }
|
188
205
|
let(:lines) do
|
189
206
|
[{"at" => 1290289048.96581, "command" => "info"},
|
190
207
|
{"at" => 1290289053.568815, "command" => "info"}]
|
191
208
|
end
|
192
209
|
|
193
210
|
before do
|
194
|
-
|
211
|
+
subject.stubs(:http => http)
|
195
212
|
subject.setup(config)
|
196
213
|
subject.monitor = stub("monitor", :rotate => lines)
|
197
214
|
subject.rotate_monitor
|
@@ -220,17 +237,17 @@ describe Daikon::Client, "pretty printing results" do
|
|
220
237
|
let(:list) { %w[apples bananas carrots] }
|
221
238
|
let(:server) { "https://radish.heroku.com" }
|
222
239
|
let(:config) { Daikon::Configuration.new }
|
240
|
+
let(:http) { stub("http", :request => Excon::Response.new(:body => body)) }
|
223
241
|
|
224
242
|
before do
|
225
|
-
subject.stubs(:evaluate_redis => list)
|
226
|
-
stub_request(:get, "#{server}/api/v1/commands.json").to_return(:body => body)
|
227
|
-
stub_request(:put, %r{#{server}/api/v1/commands/\d+\.json})
|
243
|
+
subject.stubs(:evaluate_redis => list, :http => http)
|
228
244
|
subject.setup(config)
|
229
245
|
subject.fetch_commands
|
230
246
|
end
|
231
247
|
|
232
248
|
it "returns pretty printed results" do
|
233
|
-
|
234
|
-
|
249
|
+
http.should have_received(:request).with(has_entry(
|
250
|
+
:body => {"response" => "[\"apples\", \"bananas\", \"carrots\"]"}.to_json
|
251
|
+
))
|
235
252
|
end
|
236
253
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daikon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 7
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
8
|
+
- 6
|
9
|
+
- 0
|
10
|
+
version: 0.6.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Nick Quaranto
|
@@ -18,128 +19,139 @@ date: 2011-01-10 00:00:00 -05:00
|
|
18
19
|
default_executable: daikon
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
23
|
none: false
|
24
24
|
requirements:
|
25
25
|
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
+
hash: 19
|
27
28
|
segments:
|
28
29
|
- 1
|
29
30
|
- 1
|
30
31
|
- 0
|
31
32
|
version: 1.1.0
|
33
|
+
requirement: *id001
|
34
|
+
prerelease: false
|
35
|
+
name: daemons
|
32
36
|
type: :runtime
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
- 3
|
47
|
+
- 8
|
48
|
+
version: 0.3.8
|
49
|
+
requirement: *id002
|
33
50
|
prerelease: false
|
34
|
-
|
51
|
+
name: excon
|
52
|
+
type: :runtime
|
35
53
|
- !ruby/object:Gem::Dependency
|
36
|
-
|
37
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
54
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
38
55
|
none: false
|
39
56
|
requirements:
|
40
57
|
- - ~>
|
41
58
|
- !ruby/object:Gem::Version
|
59
|
+
hash: 11
|
42
60
|
segments:
|
43
61
|
- 1
|
44
62
|
- 4
|
45
63
|
- 6
|
46
64
|
version: 1.4.6
|
47
|
-
|
65
|
+
requirement: *id003
|
48
66
|
prerelease: false
|
49
|
-
|
67
|
+
name: json_pure
|
68
|
+
type: :runtime
|
50
69
|
- !ruby/object:Gem::Dependency
|
51
|
-
|
52
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
70
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
53
71
|
none: false
|
54
72
|
requirements:
|
55
73
|
- - ~>
|
56
74
|
- !ruby/object:Gem::Version
|
75
|
+
hash: 9
|
57
76
|
segments:
|
58
77
|
- 2
|
59
78
|
- 1
|
60
79
|
- 1
|
61
80
|
version: 2.1.1
|
62
|
-
|
81
|
+
requirement: *id004
|
63
82
|
prerelease: false
|
64
|
-
|
83
|
+
name: redis
|
84
|
+
type: :runtime
|
65
85
|
- !ruby/object:Gem::Dependency
|
66
|
-
|
67
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
86
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
68
87
|
none: false
|
69
88
|
requirements:
|
70
89
|
- - ">="
|
71
90
|
- !ruby/object:Gem::Version
|
91
|
+
hash: 3
|
72
92
|
segments:
|
73
93
|
- 0
|
74
94
|
version: "0"
|
75
|
-
|
95
|
+
requirement: *id005
|
76
96
|
prerelease: false
|
77
|
-
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: cucumber
|
80
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ">="
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
version: "0"
|
97
|
+
name: bourne
|
88
98
|
type: :development
|
89
|
-
prerelease: false
|
90
|
-
version_requirements: *id005
|
91
99
|
- !ruby/object:Gem::Dependency
|
92
|
-
|
93
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
94
101
|
none: false
|
95
102
|
requirements:
|
96
103
|
- - ">="
|
97
104
|
- !ruby/object:Gem::Version
|
105
|
+
hash: 3
|
98
106
|
segments:
|
99
107
|
- 0
|
100
108
|
version: "0"
|
101
|
-
|
109
|
+
requirement: *id006
|
102
110
|
prerelease: false
|
103
|
-
|
111
|
+
name: cucumber
|
112
|
+
type: :development
|
104
113
|
- !ruby/object:Gem::Dependency
|
105
|
-
|
106
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
114
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
107
115
|
none: false
|
108
116
|
requirements:
|
109
117
|
- - ">="
|
110
118
|
- !ruby/object:Gem::Version
|
119
|
+
hash: 3
|
111
120
|
segments:
|
112
121
|
- 0
|
113
122
|
version: "0"
|
114
|
-
|
123
|
+
requirement: *id007
|
115
124
|
prerelease: false
|
116
|
-
|
125
|
+
name: jeweler
|
126
|
+
type: :development
|
117
127
|
- !ruby/object:Gem::Dependency
|
118
|
-
|
119
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
128
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
120
129
|
none: false
|
121
130
|
requirements:
|
122
131
|
- - ">="
|
123
132
|
- !ruby/object:Gem::Version
|
133
|
+
hash: 3
|
124
134
|
segments:
|
125
135
|
- 0
|
126
136
|
version: "0"
|
127
|
-
|
137
|
+
requirement: *id008
|
128
138
|
prerelease: false
|
129
|
-
|
139
|
+
name: rspec
|
140
|
+
type: :development
|
130
141
|
- !ruby/object:Gem::Dependency
|
131
|
-
|
132
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
142
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
133
143
|
none: false
|
134
144
|
requirements:
|
135
145
|
- - ">="
|
136
146
|
- !ruby/object:Gem::Version
|
147
|
+
hash: 3
|
137
148
|
segments:
|
138
149
|
- 0
|
139
150
|
version: "0"
|
140
|
-
|
151
|
+
requirement: *id009
|
141
152
|
prerelease: false
|
142
|
-
|
153
|
+
name: timecop
|
154
|
+
type: :development
|
143
155
|
description: daikon, a radishapp.com client
|
144
156
|
email: nick@quaran.to
|
145
157
|
executables:
|
@@ -165,7 +177,6 @@ files:
|
|
165
177
|
- lib/daikon/client.rb
|
166
178
|
- lib/daikon/configuration.rb
|
167
179
|
- lib/daikon/daemon.rb
|
168
|
-
- lib/daikon/heroku.crt
|
169
180
|
- lib/daikon/monitor.rb
|
170
181
|
- lib/daikon/namespace_tools.rb
|
171
182
|
- lib/daikon/redis_hacks.rb
|
@@ -189,6 +200,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
200
|
requirements:
|
190
201
|
- - ">="
|
191
202
|
- !ruby/object:Gem::Version
|
203
|
+
hash: 57
|
192
204
|
segments:
|
193
205
|
- 1
|
194
206
|
- 8
|
@@ -199,13 +211,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
211
|
requirements:
|
200
212
|
- - ">="
|
201
213
|
- !ruby/object:Gem::Version
|
214
|
+
hash: 3
|
202
215
|
segments:
|
203
216
|
- 0
|
204
217
|
version: "0"
|
205
218
|
requirements: []
|
206
219
|
|
207
220
|
rubyforge_project:
|
208
|
-
rubygems_version: 1.
|
221
|
+
rubygems_version: 1.4.1
|
209
222
|
signing_key:
|
210
223
|
specification_version: 3
|
211
224
|
summary: daikon, a radishapp.com client
|
data/lib/daikon/heroku.crt
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIGLjCCBRagAwIBAgIQBW45cqDTT/6c02Tq4xlhcTANBgkqhkiG9w0BAQUFADBm
|
3
|
-
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
4
|
-
d3cuZGlnaWNlcnQuY29tMSUwIwYDVQQDExxEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
|
5
|
-
ZSBDQS0zMB4XDTEwMDgyNjAwMDAwMFoXDTEzMDgyOTIzNTk1OVowaDELMAkGA1UE
|
6
|
-
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
|
7
|
-
Y28xFTATBgNVBAoTDEhlcm9rdSwgSW5jLjEVMBMGA1UEAxQMKi5oZXJva3UuY29t
|
8
|
-
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFNwvpUS9ZWlQrnZzLht9DT4s2
|
9
|
-
nSnjxBoL9k4HN6zag0OrkcJS4bcr1l6/WiPDYzBESRoRW0nZlhA6oHVJY0eeyfLY
|
10
|
-
7F9FQxJ/EXz8inC17nquEey7H7+enD/NLZL+Vzc3pZWYp0+dTRs6k9oe7ClCU9pB
|
11
|
-
RPfmeoh/qKj9tR6VWQIDAQABo4IDWDCCA1QwHwYDVR0jBBgwFoAUUOpzidsp+xCP
|
12
|
-
nuUBINTeeZlIg/cwHQYDVR0OBBYEFL8FTPxKuZKTrYKeRZQ7j4HifKSZMCMGA1Ud
|
13
|
-
EQQcMBqCDCouaGVyb2t1LmNvbYIKaGVyb2t1LmNvbTB/BggrBgEFBQcBAQRzMHEw
|
14
|
-
JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcw
|
15
|
-
AoY9aHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ0FDZXJ0cy9EaWdpQ2VydEhpZ2hB
|
16
|
-
c3N1cmFuY2VDQS0zLmNydDAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADBl
|
17
|
-
BgNVHR8EXjBcMCygKqAohiZodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vY2EzLTIw
|
18
|
-
MTBmLmNybDAsoCqgKIYmaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL2NhMy0yMDEw
|
19
|
-
Zi5jcmwwggHGBgNVHSAEggG9MIIBuTCCAbUGC2CGSAGG/WwBAwABMIIBpDA6Bggr
|
20
|
-
BgEFBQcCARYuaHR0cDovL3d3dy5kaWdpY2VydC5jb20vc3NsLWNwcy1yZXBvc2l0
|
21
|
-
b3J5Lmh0bTCCAWQGCCsGAQUFBwICMIIBVh6CAVIAQQBuAHkAIAB1AHMAZQAgAG8A
|
22
|
-
ZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMAYQB0AGUAIABjAG8AbgBzAHQA
|
23
|
-
aQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4AYwBlACAAbwBmACAAdABoAGUA
|
24
|
-
IABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAAUwAgAGEAbgBkACAAdABoAGUA
|
25
|
-
IABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAAQQBnAHIAZQBlAG0AZQBuAHQA
|
26
|
-
IAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkAYQBiAGkAbABpAHQAeQAgAGEA
|
27
|
-
bgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIAYQB0AGUAZAAgAGgAZQByAGUA
|
28
|
-
aQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUALjAdBgNVHSUEFjAUBggrBgEF
|
29
|
-
BQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQADggEBACjkMtcOy1q1bYdStzy5
|
30
|
-
5LTeSNv7rYXhQS3I5/Ukv8vcseHglN7PvAwj7QhegKyzGxdv1mCL8ZHkLEqkRS+w
|
31
|
-
VgVB6CULi9RVBOLcFZW/bGFF++7HGpaJXRDS5eQP/e5qCfdtHvWiX+6ATIGSMg2F
|
32
|
-
ZAMPAo0wVmrMYkQaVNpmxEmyYdEJp8oxjyMahjVsDUptCPqMTmY2nFm7bRM89D/6
|
33
|
-
fIqWtKWH1nfGK3IIYlQN13GIN5p26GrF139Hq9Ndu5ABl/oLFkaM+qu6CyDY5Y26
|
34
|
-
KNE9hEj2Zvtw2btKLtP0w2ROlxU+AIQb1mbYrldVIkYMmuHfDt8MUI4TwR+Ip6uT
|
35
|
-
638=
|
36
|
-
-----END CERTIFICATE-----
|