daikon 0.5.10 → 0.6.0
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.
- 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-----
|