captivity 0.0.1 → 0.0.2
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/README.rdoc +24 -2
- data/captivity.gemspec +2 -2
- data/lib/captivity.rb +8 -1
- data/test/test_captivity.rb +15 -0
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -1,7 +1,29 @@
|
|
1
1
|
= captivity
|
2
2
|
|
3
|
-
Captivity is a simplistick Rack middleware for capturing and logging exceptions
|
4
|
-
|
3
|
+
Captivity is a simplistick Rack middleware for capturing and logging exceptions and requests.
|
4
|
+
It atcs like a wrapper for the Rack CommonLogger, but it fixes it's incompatibility
|
5
|
+
with the Logger interface (request logs will be logged as INFO messages).
|
6
|
+
|
7
|
+
== Usage
|
8
|
+
|
9
|
+
In your rackup file, grab a logger (you can configure it dynamically) and feed it to the Captivity middleware
|
10
|
+
|
11
|
+
logger = if ENV['RACK_ENV'] == 'production'
|
12
|
+
Le.new('<YOUR_LOGENTRIES_KEY>', 'myserver/webapp1')
|
13
|
+
else
|
14
|
+
Logger.new(STDERR)
|
15
|
+
end
|
16
|
+
logger.level = Logger::INFO
|
17
|
+
use Captivity, logger
|
18
|
+
|
19
|
+
Then, in your app, use the passed Logger object by using the "captivity.logger" env variable:
|
20
|
+
|
21
|
+
def logger
|
22
|
+
env["captivity.logger"]
|
23
|
+
end
|
24
|
+
|
25
|
+
...
|
26
|
+
logger.warn("Bad things are-a happenin'!")
|
5
27
|
|
6
28
|
== Contributing to captivity
|
7
29
|
|
data/captivity.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "captivity"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Julik Tarkhanov"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-04-11"
|
13
13
|
s.description = "A simple logging wrapper for Rack"
|
14
14
|
s.email = "me@julik.nl"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/captivity.rb
CHANGED
@@ -3,7 +3,7 @@ require 'logger'
|
|
3
3
|
require 'rack/commonlogger'
|
4
4
|
|
5
5
|
class Captivity
|
6
|
-
VERSION = '0.0.
|
6
|
+
VERSION = '0.0.2'
|
7
7
|
|
8
8
|
# Rack::CommonLogger is so ingeniously put together that
|
9
9
|
# it does not honor the standard logger levels, it uses #write.
|
@@ -25,6 +25,7 @@ class Captivity
|
|
25
25
|
# the defined Logger object in the "captivity.logger" of the env hash
|
26
26
|
def call(env)
|
27
27
|
env["captivity.logger"] = @logger
|
28
|
+
set_active_record_logger_if_present!
|
28
29
|
@app.call(env)
|
29
30
|
rescue StandardError, LoadError, SyntaxError => exception
|
30
31
|
log_exception(exception)
|
@@ -34,6 +35,12 @@ class Captivity
|
|
34
35
|
|
35
36
|
private
|
36
37
|
|
38
|
+
def set_active_record_logger_if_present!
|
39
|
+
if defined?(ActiveRecord)
|
40
|
+
ActiveRecord::Base.logger = @logger
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
37
44
|
def log_exception(exception)
|
38
45
|
@logger.fatal(
|
39
46
|
"\t#{exception.class} (#{exception.message}):\n " +
|
data/test/test_captivity.rb
CHANGED
@@ -34,4 +34,19 @@ class TestCaptivity < Test::Unit::TestCase
|
|
34
34
|
assert_match /GET \/boom/, stream.string
|
35
35
|
end
|
36
36
|
|
37
|
+
def test_captivity_injects_env_variable
|
38
|
+
stream = StringIO.new
|
39
|
+
|
40
|
+
@app = Rack::Builder.app do
|
41
|
+
use Captivity, stream
|
42
|
+
inner = lambda do |env|
|
43
|
+
env["captivity.logger"].error("Variable is present!")
|
44
|
+
[200, {'Content-Type' => 'text/plain'}, 'OK']
|
45
|
+
end
|
46
|
+
run inner
|
47
|
+
end
|
48
|
+
|
49
|
+
get '/boom'
|
50
|
+
assert_match /Variable is present/, stream.string
|
51
|
+
end
|
37
52
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: captivity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-04-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -91,7 +91,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
91
91
|
version: '0'
|
92
92
|
segments:
|
93
93
|
- 0
|
94
|
-
hash:
|
94
|
+
hash: 2974344955014551893
|
95
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|