lilypad 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +17 -1
- data/gemspec.rb +1 -1
- data/lib/rack/lilypad.rb +16 -3
- data/spec/rack/lilypad_spec.rb +16 -3
- metadata +1 -1
data/README.markdown
CHANGED
@@ -15,7 +15,6 @@ Use it
|
|
15
15
|
|
16
16
|
<pre>
|
17
17
|
require 'rack/lilypad'
|
18
|
-
|
19
18
|
use Rack::Lilypad, 'fd48c7d26f724503a0280f808f44b339fc65fab8'
|
20
19
|
</pre>
|
21
20
|
|
@@ -27,6 +26,23 @@ use Rack::Lilypad, 'fd48c7d26f724503a0280f808f44b339fc65fab8' do |hoptoad|
|
|
27
26
|
end
|
28
27
|
</pre>
|
29
28
|
|
29
|
+
In Rails, you may need to do this:
|
30
|
+
|
31
|
+
<pre>
|
32
|
+
ENV['RACK_ENV'] = ENV['RAILS_ENV']
|
33
|
+
</pre>
|
34
|
+
|
35
|
+
Debug
|
36
|
+
-----
|
37
|
+
|
38
|
+
Use the log option to see what is happening:
|
39
|
+
|
40
|
+
<pre>
|
41
|
+
use Rack::Lilypad, 'fd48c7d26f724503a0280f808f44b339fc65fab8' do |hoptoad|
|
42
|
+
hoptoad.log = '/var/www/log/hoptoad.log'
|
43
|
+
end
|
44
|
+
</pre>
|
45
|
+
|
30
46
|
Thanks
|
31
47
|
------
|
32
48
|
|
data/gemspec.rb
CHANGED
data/lib/rack/lilypad.rb
CHANGED
@@ -6,13 +6,15 @@ module Rack
|
|
6
6
|
class Lilypad
|
7
7
|
|
8
8
|
attr_accessor :filters
|
9
|
+
attr_accessor :log
|
9
10
|
|
10
11
|
def initialize(app, api_key = nil)
|
11
12
|
@app = app
|
12
13
|
@filters = []
|
14
|
+
@log = false
|
13
15
|
yield self if block_given?
|
14
16
|
@filters.flatten!
|
15
|
-
@hoptoad = Hoptoad.new(api_key, @filters)
|
17
|
+
@hoptoad = Hoptoad.new(api_key, @filters, @log)
|
16
18
|
end
|
17
19
|
|
18
20
|
def call(env)
|
@@ -29,9 +31,10 @@ module Rack
|
|
29
31
|
|
30
32
|
class Hoptoad
|
31
33
|
|
32
|
-
def initialize(api_key
|
34
|
+
def initialize(api_key, filters, log)
|
33
35
|
@api_key = api_key
|
34
36
|
@filters = filters
|
37
|
+
@log = log
|
35
38
|
end
|
36
39
|
|
37
40
|
def backtrace(exception)
|
@@ -49,6 +52,10 @@ module Rack
|
|
49
52
|
end
|
50
53
|
end
|
51
54
|
|
55
|
+
def log(msg)
|
56
|
+
::File.open(@log, 'a') { |f| f.write(msg) } if @log
|
57
|
+
end
|
58
|
+
|
52
59
|
def post(exception, env)
|
53
60
|
return unless production?
|
54
61
|
uri = URI.parse("http://hoptoadapp.com/notices/")
|
@@ -59,11 +66,17 @@ module Rack
|
|
59
66
|
}
|
60
67
|
http.read_timeout = 5 # seconds
|
61
68
|
http.open_timeout = 2 # seconds
|
62
|
-
begin
|
69
|
+
response = begin
|
63
70
|
http.post uri.path, xml(exception, env), headers
|
64
71
|
env['hoptoad.notified'] = true
|
65
72
|
rescue TimeoutError => e
|
66
73
|
end
|
74
|
+
case response
|
75
|
+
when Net::HTTPSuccess then
|
76
|
+
log "Hoptoad Success: #{response.class}"
|
77
|
+
else
|
78
|
+
log "Hoptoad Failure: #{response.class}\n\n#{response.body if response.respond_to? :body}\n\n#{@@last_response}"
|
79
|
+
end
|
67
80
|
end
|
68
81
|
end
|
69
82
|
|
data/spec/rack/lilypad_spec.rb
CHANGED
@@ -10,21 +10,34 @@ describe Rack::Lilypad do
|
|
10
10
|
|
11
11
|
before(:each) do
|
12
12
|
ENV['RACK_ENV'] = 'production'
|
13
|
+
@app = lambda { |env| raise TestError, 'Test' }
|
14
|
+
@env = Rack::MockRequest.env_for("/raise")
|
13
15
|
@http = mock(:http)
|
14
16
|
@http.stub!(:read_timeout=)
|
15
17
|
@http.stub!(:open_timeout=)
|
16
|
-
@http.stub!(:post)
|
18
|
+
@http.stub!(:post).and_return Net::HTTPSuccess
|
17
19
|
Net::HTTP.stub!(:start).and_yield(@http)
|
18
20
|
end
|
19
21
|
|
20
|
-
it "
|
21
|
-
notifier = Rack::Lilypad.new(
|
22
|
+
it "should yield a configuration object to the block when created" do
|
23
|
+
notifier = Rack::Lilypad.new(@app, '') do |app|
|
22
24
|
app.filters << %w(T1 T2)
|
23
25
|
end
|
24
26
|
notifier.filters.should include('T1')
|
25
27
|
notifier.filters.should include('T2')
|
26
28
|
end
|
27
29
|
|
30
|
+
it "should write to a log if specified" do
|
31
|
+
path = "#{SPEC}/fixtures/hoptoad.log"
|
32
|
+
notifier = Rack::Lilypad.new(@app, '') do |app|
|
33
|
+
app.log = path
|
34
|
+
end
|
35
|
+
notifier.call(@env) rescue nil
|
36
|
+
File.exists?(path).should == true
|
37
|
+
File.delete path
|
38
|
+
File.exists?(path).should == false
|
39
|
+
end
|
40
|
+
|
28
41
|
it "should post an error to Hoptoad" do
|
29
42
|
@http.should_receive(:post)
|
30
43
|
get "/raise" rescue nil
|