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 CHANGED
@@ -1,8 +1,9 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "daemons", "~> 1.1.0"
4
- gem "json_pure", "~> 1.4.6"
5
- gem "redis", "~> 2.1.1"
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.5.10"
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.3.7}
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.5.10"
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 http_request(method, url)
47
- uri = URI.parse("#{config.server_prefix}/#{url}")
48
- request_method = Net::HTTP.const_get method.to_s.capitalize
49
- request = request_method.new uri.request_uri
50
- request.add_field 'Authorization', config.api_key
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
- yield request if block_given?
41
+ log "#{options[:method]} #{config.server_prefix}/#{options[:path]}"
42
+ http.request(options)
43
+ end
53
44
 
54
- log "#{method.to_s.upcase} #{uri.to_s}"
55
- http.request request
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 = http_request(:get, "api/v1/commands.json")
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
- http_request(:put, "api/v1/commands/#{id}.json") do |request|
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
- http_request(:post, "api/v1/info.json") do |request|
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
- http_request(:post, "api/v1/monitor.json") do |request|
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
- WebMock.should have_requested(:get, "#{server}/api/v1/commands.json").
43
- with(:headers => {'Authorization' => api_key})
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
- WebMock.should have_requested(:put, "#{server}/api/v1/commands/42.json").
61
- with(:body => results, :headers => headers)
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
- WebMock.should have_requested(:put, "#{server}/api/v1/commands/43.json").
64
- with(:body => results, :headers => headers)
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
- stub_request(:get, "#{server}/api/v1/commands.json").to_return(:body => body)
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
- WebMock.stub_request(:any, /#{subject.config.server_prefix}.*/).to_raise(Timeout::Error)
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
- WebMock.stub_request(:any, /#{subject.config.server_prefix}.*/).to_return(:body => "{'bad':'json}")
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
- WebMock.should have_requested(:post, "#{server}/api/v1/info.json").
136
- with(:body => results.to_json, :headers => headers)
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"}.to_json }
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
- stub_request(:post, "#{server}/api/v1/info.json")
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
- WebMock.should have_requested(:post, "#{server}/api/v1/monitor.json").
180
- with(:body => payload.to_json, :headers => headers)
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
- stub_request(:post, "#{server}/api/v1/monitor.json")
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
- WebMock.should have_requested(:put, "#{server}/api/v1/commands/13.json").
234
- with(:body => {"response" => "[\"apples\", \"bananas\", \"carrots\"]"})
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
@@ -10,9 +10,6 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
10
  require 'timecop'
11
11
  require 'bourne'
12
12
 
13
- require 'webmock/rspec'
14
- WebMock.disable_net_connect!
15
-
16
13
  RSpec.configure do |config|
17
14
  config.mock_with :mocha
18
15
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daikon
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 7
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
- - 5
8
- - 10
9
- version: 0.5.10
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
- name: daemons
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
- version_requirements: *id001
51
+ name: excon
52
+ type: :runtime
35
53
  - !ruby/object:Gem::Dependency
36
- name: json_pure
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
- type: :runtime
65
+ requirement: *id003
48
66
  prerelease: false
49
- version_requirements: *id002
67
+ name: json_pure
68
+ type: :runtime
50
69
  - !ruby/object:Gem::Dependency
51
- name: redis
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
- type: :runtime
81
+ requirement: *id004
63
82
  prerelease: false
64
- version_requirements: *id003
83
+ name: redis
84
+ type: :runtime
65
85
  - !ruby/object:Gem::Dependency
66
- name: bourne
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
- type: :development
95
+ requirement: *id005
76
96
  prerelease: false
77
- version_requirements: *id004
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
- name: jeweler
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
- type: :development
109
+ requirement: *id006
102
110
  prerelease: false
103
- version_requirements: *id006
111
+ name: cucumber
112
+ type: :development
104
113
  - !ruby/object:Gem::Dependency
105
- name: rspec
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
- type: :development
123
+ requirement: *id007
115
124
  prerelease: false
116
- version_requirements: *id007
125
+ name: jeweler
126
+ type: :development
117
127
  - !ruby/object:Gem::Dependency
118
- name: timecop
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
- type: :development
137
+ requirement: *id008
128
138
  prerelease: false
129
- version_requirements: *id008
139
+ name: rspec
140
+ type: :development
130
141
  - !ruby/object:Gem::Dependency
131
- name: webmock
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
- type: :development
151
+ requirement: *id009
141
152
  prerelease: false
142
- version_requirements: *id009
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.3.7
221
+ rubygems_version: 1.4.1
209
222
  signing_key:
210
223
  specification_version: 3
211
224
  summary: daikon, a radishapp.com client
@@ -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-----