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 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-----