samuel 0.3.2 → 0.3.3
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/.gitignore +1 -0
- data/Gemfile +6 -0
- data/LICENSE +1 -1
- data/README.rdoc +7 -8
- data/Rakefile +10 -29
- data/lib/samuel.rb +3 -3
- data/lib/samuel/diary.rb +7 -4
- data/lib/samuel/driver_patches/http_client.rb +4 -7
- data/lib/samuel/driver_patches/net_http.rb +6 -7
- data/lib/samuel/loader.rb +1 -2
- data/lib/samuel/log_entries/base.rb +2 -5
- data/lib/samuel/log_entries/http_client.rb +0 -2
- data/lib/samuel/log_entries/net_http.rb +0 -2
- data/samuel.gemspec +12 -28
- data/test/http_client_test.rb +2 -2
- data/test/loader_test.rb +0 -2
- data/test/net_http_test.rb +1 -3
- data/test/samuel_test.rb +2 -7
- data/test/test_helper.rb +3 -2
- data/test/thread_test.rb +0 -2
- metadata +113 -28
data/.gitignore
CHANGED
data/Gemfile
ADDED
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
|
@@ -12,13 +12,12 @@ automatically loading the correct logger for the HTTP client you're using.
|
|
|
12
12
|
|
|
13
13
|
== Usage
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
need to do is this:
|
|
15
|
+
If you're using Bundler, just add this to your Gemfile:
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
config.gem "samuel"
|
|
17
|
+
gem "samuel", "~> 0.3"
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
When Rails is loaded, Samuel configures itself to use Rails's logger and an
|
|
20
|
+
ActiveRecord-like format automatically, so you don't need to do anything else.
|
|
22
21
|
|
|
23
22
|
For non-Rails projects, you'll have to manually configure logging, like this:
|
|
24
23
|
|
|
@@ -76,9 +75,9 @@ Right now, there are three configuration changes you can make in either style:
|
|
|
76
75
|
these patterns as a substring by replacing the value with
|
|
77
76
|
<tt>[FILTERED]</tt> in your logs. By default, no filtering is enabled.
|
|
78
77
|
|
|
79
|
-
Samuel logs successful HTTP requests at the +INFO+ level; Failed requests log
|
|
80
|
-
the +WARN+ level. This isn't currently configurable, but it's on the list.
|
|
78
|
+
Samuel logs successful HTTP requests at the +INFO+ level; Failed requests log
|
|
79
|
+
at the +WARN+ level. This isn't currently configurable, but it's on the list.
|
|
81
80
|
|
|
82
81
|
== License
|
|
83
82
|
|
|
84
|
-
Copyright 2009–
|
|
83
|
+
Copyright 2009–2011 Chris Kampmeier. See +LICENSE+ for details.
|
data/Rakefile
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
require 'rubygems'
|
|
2
2
|
require 'rake'
|
|
3
3
|
|
|
4
|
+
task :check_dependencies do
|
|
5
|
+
begin
|
|
6
|
+
require "bundler"
|
|
7
|
+
rescue LoadError
|
|
8
|
+
abort "Samuel uses Bundler to manage development dependencies. Install it with `gem install bundler`."
|
|
9
|
+
end
|
|
10
|
+
system("bundle check") || abort
|
|
11
|
+
end
|
|
12
|
+
|
|
4
13
|
require 'rake/testtask'
|
|
5
14
|
Rake::TestTask.new(:test) do |test|
|
|
6
15
|
test.libs << 'lib' << 'test'
|
|
@@ -9,27 +18,7 @@ Rake::TestTask.new(:test) do |test|
|
|
|
9
18
|
test.warning = true
|
|
10
19
|
end
|
|
11
20
|
|
|
12
|
-
|
|
13
|
-
require 'jeweler'
|
|
14
|
-
Jeweler::Tasks.new do |gem|
|
|
15
|
-
gem.name = "samuel"
|
|
16
|
-
gem.version = "0.3.2"
|
|
17
|
-
gem.summary = %Q{An automatic logger for HTTP requests in Ruby}
|
|
18
|
-
gem.description = %Q{An automatic logger for HTTP requests in Ruby, supporting the Net::HTTP and HTTPClient client libraries.}
|
|
19
|
-
gem.email = "chris@kampers.net"
|
|
20
|
-
gem.homepage = "http://github.com/chrisk/samuel"
|
|
21
|
-
gem.authors = ["Chris Kampmeier"]
|
|
22
|
-
gem.rubyforge_project = "samuel"
|
|
23
|
-
gem.add_development_dependency "shoulda"
|
|
24
|
-
gem.add_development_dependency "mocha"
|
|
25
|
-
gem.add_development_dependency "httpclient"
|
|
26
|
-
gem.add_development_dependency "fakeweb"
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
task :test => :check_dependencies
|
|
30
|
-
rescue LoadError
|
|
31
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
|
32
|
-
end
|
|
21
|
+
task :default => [:check_dependencies, :test]
|
|
33
22
|
|
|
34
23
|
begin
|
|
35
24
|
require 'rcov/rcovtask'
|
|
@@ -42,18 +31,10 @@ begin
|
|
|
42
31
|
test.warning = true
|
|
43
32
|
end
|
|
44
33
|
rescue LoadError
|
|
45
|
-
task :rcov do
|
|
46
|
-
abort "RCov is not available. In order to run rcov, you must: gem install rcov"
|
|
47
|
-
end
|
|
48
34
|
end
|
|
49
35
|
|
|
50
|
-
task :default => :test
|
|
51
|
-
|
|
52
36
|
begin
|
|
53
37
|
require 'yard'
|
|
54
38
|
YARD::Rake::YardocTask.new
|
|
55
39
|
rescue LoadError
|
|
56
|
-
task :yardoc do
|
|
57
|
-
abort "YARD is not available. In order to run yardoc, you must: gem install yard"
|
|
58
|
-
end
|
|
59
40
|
end
|
data/lib/samuel.rb
CHANGED
|
@@ -13,7 +13,7 @@ require "samuel/log_entries/net_http"
|
|
|
13
13
|
module Samuel
|
|
14
14
|
extend self
|
|
15
15
|
|
|
16
|
-
VERSION = "0.3.
|
|
16
|
+
VERSION = "0.3.3"
|
|
17
17
|
|
|
18
18
|
attr_writer :logger, :config
|
|
19
19
|
|
|
@@ -21,8 +21,8 @@ module Samuel
|
|
|
21
21
|
@logger = nil if !defined?(@logger)
|
|
22
22
|
return @logger if !@logger.nil?
|
|
23
23
|
|
|
24
|
-
if defined?(
|
|
25
|
-
@logger =
|
|
24
|
+
if defined?(Rails) && Rails.respond_to?(:logger)
|
|
25
|
+
@logger = Rails.logger
|
|
26
26
|
else
|
|
27
27
|
@logger = Logger.new(STDOUT)
|
|
28
28
|
end
|
data/lib/samuel/diary.rb
CHANGED
|
@@ -2,18 +2,22 @@ module Samuel
|
|
|
2
2
|
module Diary
|
|
3
3
|
extend self
|
|
4
4
|
|
|
5
|
-
def record_request(http, request, time_requested)
|
|
5
|
+
def record_request(http, request, time_requested = current_time)
|
|
6
6
|
@requests ||= []
|
|
7
7
|
@requests.push({:request => request, :time_requested => time_requested})
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def record_response(http, request, response, time_responded)
|
|
10
|
+
def record_response(http, request, response, time_responded = current_time)
|
|
11
11
|
time_requested = @requests.detect { |r| r[:request] == request }[:time_requested]
|
|
12
12
|
@requests.reject! { |r| r[:request] == request }
|
|
13
13
|
log_request_and_response(http, request, response, time_requested, time_responded)
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
def current_time
|
|
17
|
+
Time.now
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
17
21
|
|
|
18
22
|
def log_request_and_response(http, request, response, time_started, time_ended)
|
|
19
23
|
log_entry_class = case http.class.to_s
|
|
@@ -24,6 +28,5 @@ module Samuel
|
|
|
24
28
|
log_entry = log_entry_class.new(http, request, response, time_started, time_ended)
|
|
25
29
|
log_entry.log!
|
|
26
30
|
end
|
|
27
|
-
|
|
28
31
|
end
|
|
29
32
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module Samuel
|
|
2
2
|
module DriverPatches
|
|
3
|
-
|
|
4
3
|
module HTTPClient
|
|
5
4
|
def self.included(klass)
|
|
6
5
|
methods_to_wrap = %w(initialize do_get_block do_get_stream)
|
|
@@ -19,7 +18,7 @@ module Samuel
|
|
|
19
18
|
begin
|
|
20
19
|
do_get_block_without_samuel(req, proxy, conn, &block)
|
|
21
20
|
rescue Exception => e
|
|
22
|
-
Samuel::Diary.record_response(self, req, e
|
|
21
|
+
Samuel::Diary.record_response(self, req, e)
|
|
23
22
|
raise
|
|
24
23
|
end
|
|
25
24
|
end
|
|
@@ -28,7 +27,7 @@ module Samuel
|
|
|
28
27
|
begin
|
|
29
28
|
do_get_stream_without_samuel(req, proxy, conn)
|
|
30
29
|
rescue Exception => e
|
|
31
|
-
Samuel::Diary.record_response(self, req, e
|
|
30
|
+
Samuel::Diary.record_response(self, req, e)
|
|
32
31
|
raise
|
|
33
32
|
end
|
|
34
33
|
end
|
|
@@ -39,16 +38,14 @@ module Samuel
|
|
|
39
38
|
end
|
|
40
39
|
|
|
41
40
|
def filter_request(request)
|
|
42
|
-
Samuel::Diary.record_request(@http_client_instance, request
|
|
41
|
+
Samuel::Diary.record_request(@http_client_instance, request)
|
|
43
42
|
end
|
|
44
43
|
|
|
45
44
|
def filter_response(request, response)
|
|
46
|
-
Samuel::Diary.record_response(@http_client_instance, request, response
|
|
45
|
+
Samuel::Diary.record_response(@http_client_instance, request, response)
|
|
47
46
|
nil # this returns command symbols like :retry, etc.
|
|
48
47
|
end
|
|
49
48
|
end
|
|
50
49
|
end
|
|
51
|
-
|
|
52
50
|
end
|
|
53
51
|
end
|
|
54
|
-
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module Samuel
|
|
2
2
|
module DriverPatches
|
|
3
|
-
|
|
4
3
|
module NetHTTP
|
|
5
4
|
def self.included(klass)
|
|
6
5
|
methods_to_wrap = %w(request connect)
|
|
@@ -11,16 +10,17 @@ module Samuel
|
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
def request_with_samuel(request, body = nil, &block)
|
|
14
|
-
Samuel::Diary.record_request(self, request, Time.now)
|
|
15
|
-
|
|
16
13
|
response, exception_raised = nil, false
|
|
14
|
+
request_time = Samuel::Diary.current_time
|
|
15
|
+
|
|
17
16
|
begin
|
|
18
17
|
response = request_without_samuel(request, body, &block)
|
|
19
18
|
rescue Exception => response
|
|
20
19
|
exception_raised = true
|
|
21
20
|
end
|
|
22
21
|
|
|
23
|
-
Samuel::Diary.
|
|
22
|
+
Samuel::Diary.record_request(self, request, request_time)
|
|
23
|
+
Samuel::Diary.record_response(self, request, response)
|
|
24
24
|
|
|
25
25
|
raise response if exception_raised
|
|
26
26
|
response
|
|
@@ -32,11 +32,10 @@ module Samuel
|
|
|
32
32
|
fake_request = Object.new
|
|
33
33
|
def fake_request.path; ""; end
|
|
34
34
|
def fake_request.method; "CONNECT"; end
|
|
35
|
-
Samuel::Diary.record_request(self, fake_request
|
|
36
|
-
Samuel::Diary.record_response(self, fake_request, response
|
|
35
|
+
Samuel::Diary.record_request(self, fake_request)
|
|
36
|
+
Samuel::Diary.record_response(self, fake_request, response)
|
|
37
37
|
raise
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
|
-
|
|
41
40
|
end
|
|
42
41
|
end
|
data/lib/samuel/loader.rb
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module Samuel
|
|
2
2
|
module LogEntries
|
|
3
|
-
|
|
4
3
|
class Base
|
|
5
4
|
def initialize(http, request, response, time_requested, time_responded)
|
|
6
5
|
@http, @request, @response = http, request, response
|
|
@@ -11,8 +10,7 @@ module Samuel
|
|
|
11
10
|
Samuel.logger.add(log_level, log_message)
|
|
12
11
|
end
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
protected
|
|
13
|
+
protected
|
|
16
14
|
|
|
17
15
|
def log_message
|
|
18
16
|
bold = "\e[1m"
|
|
@@ -73,6 +71,5 @@ module Samuel
|
|
|
73
71
|
end
|
|
74
72
|
end
|
|
75
73
|
end
|
|
76
|
-
|
|
77
74
|
end
|
|
78
|
-
end
|
|
75
|
+
end
|
data/samuel.gemspec
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
#
|
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
|
4
|
-
# -*- encoding: utf-8 -*-
|
|
1
|
+
# encoding: utf-8
|
|
5
2
|
|
|
6
3
|
Gem::Specification.new do |s|
|
|
7
4
|
s.name = %q{samuel}
|
|
8
|
-
s.version = "0.3.
|
|
5
|
+
s.version = "0.3.3"
|
|
9
6
|
|
|
10
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
8
|
s.authors = ["Chris Kampmeier"]
|
|
12
|
-
s.date = %q{
|
|
9
|
+
s.date = %q{2011-11-10}
|
|
13
10
|
s.description = %q{An automatic logger for HTTP requests in Ruby, supporting the Net::HTTP and HTTPClient client libraries.}
|
|
14
11
|
s.email = %q{chris@kampers.net}
|
|
15
12
|
s.extra_rdoc_files = [
|
|
@@ -19,6 +16,7 @@ Gem::Specification.new do |s|
|
|
|
19
16
|
s.files = [
|
|
20
17
|
".document",
|
|
21
18
|
".gitignore",
|
|
19
|
+
"Gemfile",
|
|
22
20
|
"LICENSE",
|
|
23
21
|
"README.rdoc",
|
|
24
22
|
"Rakefile",
|
|
@@ -52,27 +50,13 @@ Gem::Specification.new do |s|
|
|
|
52
50
|
"test/test_helper.rb",
|
|
53
51
|
"test/thread_test.rb"
|
|
54
52
|
]
|
|
53
|
+
s.specification_version = 3
|
|
55
54
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
s.add_development_dependency(%q<httpclient>, [">= 0"])
|
|
64
|
-
s.add_development_dependency(%q<fakeweb>, [">= 0"])
|
|
65
|
-
else
|
|
66
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
67
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
|
68
|
-
s.add_dependency(%q<httpclient>, [">= 0"])
|
|
69
|
-
s.add_dependency(%q<fakeweb>, [">= 0"])
|
|
70
|
-
end
|
|
71
|
-
else
|
|
72
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
73
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
|
74
|
-
s.add_dependency(%q<httpclient>, [">= 0"])
|
|
75
|
-
s.add_dependency(%q<fakeweb>, [">= 0"])
|
|
76
|
-
end
|
|
55
|
+
s.add_development_dependency("shoulda", ["2.11.3"])
|
|
56
|
+
s.add_development_dependency("mocha", ["0.10.0"])
|
|
57
|
+
s.add_development_dependency("httpclient", ["2.2.3"])
|
|
58
|
+
s.add_development_dependency("fakeweb", ["~> 1.3"])
|
|
59
|
+
s.add_development_dependency("rcov", ["0.9.11"])
|
|
60
|
+
s.add_development_dependency("yard", ["0.7.3"])
|
|
61
|
+
s.add_development_dependency("rake", ["0.9.2.2"])
|
|
77
62
|
end
|
|
78
|
-
|
data/test/http_client_test.rb
CHANGED
|
@@ -10,7 +10,7 @@ class HttpClientTest < Test::Unit::TestCase
|
|
|
10
10
|
context "to GET http://localhost:8000/, responding with a 200 in 53ms" do
|
|
11
11
|
setup do
|
|
12
12
|
now = Time.now
|
|
13
|
-
|
|
13
|
+
Samuel::Diary.stubs(:current_time).returns(now, now + 0.053)
|
|
14
14
|
HTTPClient.get("http://localhost:8000/")
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -63,6 +63,7 @@ class HttpClientTest < Test::Unit::TestCase
|
|
|
63
63
|
client = HTTPClient.new
|
|
64
64
|
connection = client.get_async("http://localhost:8001/")
|
|
65
65
|
sleep 0.1 until connection.finished?
|
|
66
|
+
connection.pop
|
|
66
67
|
rescue Errno::ECONNREFUSED => @exception
|
|
67
68
|
end
|
|
68
69
|
end
|
|
@@ -93,5 +94,4 @@ class HttpClientTest < Test::Unit::TestCase
|
|
|
93
94
|
should_log_including "[500 Internal Server Error]"
|
|
94
95
|
end
|
|
95
96
|
end
|
|
96
|
-
|
|
97
97
|
end
|
data/test/loader_test.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class LoaderTest < Test::Unit::TestCase
|
|
4
|
-
|
|
5
4
|
def capture_output(code = "")
|
|
6
5
|
requires = @requires.map { |lib| "require '#{lib}';" }.join(' ')
|
|
7
6
|
samuel_dir = "#{File.dirname(__FILE__)}/../lib"
|
|
@@ -59,5 +58,4 @@ class LoaderTest < Test::Unit::TestCase
|
|
|
59
58
|
end
|
|
60
59
|
end
|
|
61
60
|
end
|
|
62
|
-
|
|
63
61
|
end
|
data/test/net_http_test.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class RequestTest < Test::Unit::TestCase
|
|
4
|
-
|
|
5
4
|
context "making an HTTP request" do
|
|
6
5
|
setup { setup_test_logger
|
|
7
6
|
FakeWeb.clean_registry
|
|
@@ -12,7 +11,7 @@ class RequestTest < Test::Unit::TestCase
|
|
|
12
11
|
setup do
|
|
13
12
|
FakeWeb.register_uri(:get, "http://example.com/test", :status => [200, "OK"])
|
|
14
13
|
now = Time.now
|
|
15
|
-
|
|
14
|
+
Samuel::Diary.stubs(:current_time).returns(now, now + 0.053)
|
|
16
15
|
open "http://example.com/test"
|
|
17
16
|
end
|
|
18
17
|
|
|
@@ -221,5 +220,4 @@ class RequestTest < Test::Unit::TestCase
|
|
|
221
220
|
should_log_including "HTTP request"
|
|
222
221
|
end
|
|
223
222
|
end
|
|
224
|
-
|
|
225
223
|
end
|
data/test/samuel_test.rb
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class SamuelTest < Test::Unit::TestCase
|
|
4
|
-
|
|
5
4
|
context "logger configuration" do
|
|
6
5
|
setup do
|
|
7
6
|
Samuel.logger = nil
|
|
8
|
-
if Object.const_defined?(:
|
|
9
|
-
Object.send(:remove_const, :RAILS_DEFAULT_LOGGER)
|
|
10
|
-
end
|
|
7
|
+
Object.send(:remove_const, :Rails) if Object.const_defined?(:Rails)
|
|
11
8
|
end
|
|
12
9
|
|
|
13
10
|
teardown do
|
|
@@ -15,7 +12,7 @@ class SamuelTest < Test::Unit::TestCase
|
|
|
15
12
|
end
|
|
16
13
|
|
|
17
14
|
context "when Rails's logger is available" do
|
|
18
|
-
setup { Object.const_set(:
|
|
15
|
+
setup { Object.const_set(:Rails, stub(:logger => :mock_logger)) }
|
|
19
16
|
|
|
20
17
|
should "use the same logger" do
|
|
21
18
|
assert_equal :mock_logger, Samuel.logger
|
|
@@ -30,7 +27,6 @@ class SamuelTest < Test::Unit::TestCase
|
|
|
30
27
|
end
|
|
31
28
|
end
|
|
32
29
|
|
|
33
|
-
|
|
34
30
|
context ".reset_config" do
|
|
35
31
|
should "reset the config to default vaules" do
|
|
36
32
|
Samuel.config = {:foo => "bar"}
|
|
@@ -38,5 +34,4 @@ class SamuelTest < Test::Unit::TestCase
|
|
|
38
34
|
assert_equal({:label => nil, :labels => {}, :filtered_params => []}, Samuel.config)
|
|
39
35
|
end
|
|
40
36
|
end
|
|
41
|
-
|
|
42
37
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
require 'rubygems'
|
|
2
|
+
require 'bundler'
|
|
3
|
+
Bundler.setup
|
|
2
4
|
|
|
3
5
|
require 'shoulda'
|
|
4
6
|
require 'mocha'
|
|
5
|
-
|
|
6
7
|
require 'net/http'
|
|
7
8
|
require 'httpclient'
|
|
8
|
-
|
|
9
9
|
require 'open-uri'
|
|
10
10
|
require 'fakeweb'
|
|
11
11
|
require 'webrick'
|
|
@@ -45,6 +45,7 @@ class Test::Unit::TestCase
|
|
|
45
45
|
|
|
46
46
|
def self.should_raise_exception(klass)
|
|
47
47
|
should "raise an #{klass} exception" do
|
|
48
|
+
@exception = nil if !defined?(@exception)
|
|
48
49
|
assert @exception.is_a?(klass)
|
|
49
50
|
end
|
|
50
51
|
end
|
data/test/thread_test.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: samuel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
4
|
+
hash: 21
|
|
5
|
+
prerelease:
|
|
6
|
+
segments:
|
|
7
|
+
- 0
|
|
8
|
+
- 3
|
|
9
|
+
- 3
|
|
10
|
+
version: 0.3.3
|
|
5
11
|
platform: ruby
|
|
6
12
|
authors:
|
|
7
13
|
- Chris Kampmeier
|
|
@@ -9,49 +15,121 @@ autorequire:
|
|
|
9
15
|
bindir: bin
|
|
10
16
|
cert_chain: []
|
|
11
17
|
|
|
12
|
-
date:
|
|
18
|
+
date: 2011-11-10 00:00:00 -08:00
|
|
13
19
|
default_executable:
|
|
14
20
|
dependencies:
|
|
15
21
|
- !ruby/object:Gem::Dependency
|
|
16
22
|
name: shoulda
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
prerelease: false
|
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
20
26
|
requirements:
|
|
21
|
-
- - "
|
|
27
|
+
- - "="
|
|
22
28
|
- !ruby/object:Gem::Version
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
hash: 37
|
|
30
|
+
segments:
|
|
31
|
+
- 2
|
|
32
|
+
- 11
|
|
33
|
+
- 3
|
|
34
|
+
version: 2.11.3
|
|
35
|
+
type: :development
|
|
36
|
+
version_requirements: *id001
|
|
25
37
|
- !ruby/object:Gem::Dependency
|
|
26
38
|
name: mocha
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
39
|
+
prerelease: false
|
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
30
42
|
requirements:
|
|
31
|
-
- - "
|
|
43
|
+
- - "="
|
|
32
44
|
- !ruby/object:Gem::Version
|
|
33
|
-
|
|
34
|
-
|
|
45
|
+
hash: 55
|
|
46
|
+
segments:
|
|
47
|
+
- 0
|
|
48
|
+
- 10
|
|
49
|
+
- 0
|
|
50
|
+
version: 0.10.0
|
|
51
|
+
type: :development
|
|
52
|
+
version_requirements: *id002
|
|
35
53
|
- !ruby/object:Gem::Dependency
|
|
36
54
|
name: httpclient
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
55
|
+
prerelease: false
|
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
40
58
|
requirements:
|
|
41
|
-
- - "
|
|
59
|
+
- - "="
|
|
42
60
|
- !ruby/object:Gem::Version
|
|
43
|
-
|
|
44
|
-
|
|
61
|
+
hash: 1
|
|
62
|
+
segments:
|
|
63
|
+
- 2
|
|
64
|
+
- 2
|
|
65
|
+
- 3
|
|
66
|
+
version: 2.2.3
|
|
67
|
+
type: :development
|
|
68
|
+
version_requirements: *id003
|
|
45
69
|
- !ruby/object:Gem::Dependency
|
|
46
70
|
name: fakeweb
|
|
71
|
+
prerelease: false
|
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ~>
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
hash: 9
|
|
78
|
+
segments:
|
|
79
|
+
- 1
|
|
80
|
+
- 3
|
|
81
|
+
version: "1.3"
|
|
82
|
+
type: :development
|
|
83
|
+
version_requirements: *id004
|
|
84
|
+
- !ruby/object:Gem::Dependency
|
|
85
|
+
name: rcov
|
|
86
|
+
prerelease: false
|
|
87
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
|
88
|
+
none: false
|
|
89
|
+
requirements:
|
|
90
|
+
- - "="
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
hash: 45
|
|
93
|
+
segments:
|
|
94
|
+
- 0
|
|
95
|
+
- 9
|
|
96
|
+
- 11
|
|
97
|
+
version: 0.9.11
|
|
47
98
|
type: :development
|
|
48
|
-
|
|
49
|
-
|
|
99
|
+
version_requirements: *id005
|
|
100
|
+
- !ruby/object:Gem::Dependency
|
|
101
|
+
name: yard
|
|
102
|
+
prerelease: false
|
|
103
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
|
104
|
+
none: false
|
|
50
105
|
requirements:
|
|
51
|
-
- - "
|
|
106
|
+
- - "="
|
|
52
107
|
- !ruby/object:Gem::Version
|
|
53
|
-
|
|
54
|
-
|
|
108
|
+
hash: 5
|
|
109
|
+
segments:
|
|
110
|
+
- 0
|
|
111
|
+
- 7
|
|
112
|
+
- 3
|
|
113
|
+
version: 0.7.3
|
|
114
|
+
type: :development
|
|
115
|
+
version_requirements: *id006
|
|
116
|
+
- !ruby/object:Gem::Dependency
|
|
117
|
+
name: rake
|
|
118
|
+
prerelease: false
|
|
119
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
|
120
|
+
none: false
|
|
121
|
+
requirements:
|
|
122
|
+
- - "="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
hash: 11
|
|
125
|
+
segments:
|
|
126
|
+
- 0
|
|
127
|
+
- 9
|
|
128
|
+
- 2
|
|
129
|
+
- 2
|
|
130
|
+
version: 0.9.2.2
|
|
131
|
+
type: :development
|
|
132
|
+
version_requirements: *id007
|
|
55
133
|
description: An automatic logger for HTTP requests in Ruby, supporting the Net::HTTP and HTTPClient client libraries.
|
|
56
134
|
email: chris@kampers.net
|
|
57
135
|
executables: []
|
|
@@ -64,6 +142,7 @@ extra_rdoc_files:
|
|
|
64
142
|
files:
|
|
65
143
|
- .document
|
|
66
144
|
- .gitignore
|
|
145
|
+
- Gemfile
|
|
67
146
|
- LICENSE
|
|
68
147
|
- README.rdoc
|
|
69
148
|
- Rakefile
|
|
@@ -92,21 +171,27 @@ rdoc_options:
|
|
|
92
171
|
require_paths:
|
|
93
172
|
- lib
|
|
94
173
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
174
|
+
none: false
|
|
95
175
|
requirements:
|
|
96
176
|
- - ">="
|
|
97
177
|
- !ruby/object:Gem::Version
|
|
178
|
+
hash: 3
|
|
179
|
+
segments:
|
|
180
|
+
- 0
|
|
98
181
|
version: "0"
|
|
99
|
-
version:
|
|
100
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
|
+
none: false
|
|
101
184
|
requirements:
|
|
102
185
|
- - ">="
|
|
103
186
|
- !ruby/object:Gem::Version
|
|
187
|
+
hash: 3
|
|
188
|
+
segments:
|
|
189
|
+
- 0
|
|
104
190
|
version: "0"
|
|
105
|
-
version:
|
|
106
191
|
requirements: []
|
|
107
192
|
|
|
108
193
|
rubyforge_project: samuel
|
|
109
|
-
rubygems_version: 1.
|
|
194
|
+
rubygems_version: 1.6.2
|
|
110
195
|
signing_key:
|
|
111
196
|
specification_version: 3
|
|
112
197
|
summary: An automatic logger for HTTP requests in Ruby
|