samuel 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,7 +29,7 @@ If you don't assign a logger, Samuel will configure a default logger on +STDOUT+
29
29
  There are two ways to specify configuration options for Samuel: global and
30
30
  inline. Global configs look like this:
31
31
 
32
- Samuel.config[:label] = "Twitter API"
32
+ Samuel.config[:labels] = {"example.com" => "Example API"}
33
33
  Samuel.config[:filtered_params] = :password
34
34
 
35
35
  You should put global configuration somewhere early-on in your program. If
@@ -42,12 +42,20 @@ configuration for a set of HTTP requests:
42
42
  Net::HTTP.start("twitter.com") { |http| http.get("/help/test") }
43
43
  end
44
44
 
45
- Right now, there are two configuration changes you can make in either style:
46
-
47
- * +:label+ - This is the very first part of each log entry, and it gets
48
- <tt>"Request"</tt> appended to it. By default, it's <tt>"HTTP"</tt> -- but if
49
- you want your log to say +Twitter API Request+ instead of the default +HTTP
50
- Request+, set this to <tt>"Twitter API"</tt>.
45
+ Right now, there are three configuration changes you can make in either style:
46
+
47
+ * +:labels+ - This is a hash with domain substrings as keys and log labels as
48
+ values. If a request domain includes one of the domain substrings, the
49
+ corresponding label will be used for the first part of that log entry. By
50
+ default this is set to <tt>\{"" => "HTTP"}</tt>, so that all requests are
51
+ labeled with <tt>"HTTP Request"</tt>.
52
+ * +:label+ - As an alternative to the +:labels+ hash, this is simply a string.
53
+ If set, it takes precedence over any +:labels+ (by default, it's not set). It
54
+ gets <tt>"Request"</tt> appended to it as well -- so if you want your log to
55
+ always say +Twitter API Request+ instead of the default +HTTP Request+, you
56
+ can set this to <tt>"Twitter API"</tt>. I'd recommend using this setting
57
+ globally if you're only making requests to one service, or inline if you just
58
+ need to temporarily override the global +:labels+.
51
59
  * +:filtered_params+ - This works just like Rails's +filter_parameter_logging+
52
60
  method. Set it to a symbol, string, or array of them, and Samuel will filter
53
61
  the value of query parameters that have any of these patterns as a substring
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -29,7 +29,7 @@ module Samuel
29
29
 
30
30
  def log_request(http, request, &block)
31
31
  request = Request.new(http, request, block)
32
- request.execute_and_log!
32
+ request.perform_and_log!
33
33
  request.response
34
34
  end
35
35
 
@@ -44,7 +44,7 @@ module Samuel
44
44
 
45
45
  def reset_config
46
46
  Thread.current[:__samuel_config] = nil
47
- @config = {:label => "HTTP", :filtered_params => []}
47
+ @config = {:label => nil, :labels => {"" => "HTTP"}, :filtered_params => []}
48
48
  end
49
49
 
50
50
  end
@@ -7,7 +7,7 @@ module Samuel
7
7
  @http, @request, @proc = http, request, proc
8
8
  end
9
9
 
10
- def execute_and_log!
10
+ def perform_and_log!
11
11
  # If an exception is raised in the Benchmark block, it'll interrupt the
12
12
  # benchmark. Instead, use an inner block to record it as the "response"
13
13
  # for raising after the benchmark (and logging) is done.
@@ -25,7 +25,6 @@ module Samuel
25
25
  blue = "\e[34m"
26
26
  underline = "\e[4m"
27
27
  reset = "\e[0m"
28
- label = Samuel.config[:label]
29
28
  " #{bold}#{blue}#{underline}#{label} request (#{milliseconds}ms) " +
30
29
  "#{response_summary}#{reset} #{method} #{uri}"
31
30
  end
@@ -69,6 +68,13 @@ module Samuel
69
68
  @request.method.to_s.upcase
70
69
  end
71
70
 
71
+ def label
72
+ return Samuel.config[:label] if Samuel.config[:label]
73
+
74
+ pair = Samuel.config[:labels].detect { |domain, label| @http.address.include?(domain) }
75
+ pair[1] if pair
76
+ end
77
+
72
78
  def response_summary
73
79
  if response.is_a?(Exception)
74
80
  response.class
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{samuel}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Chris Kampmeier"]
12
- s.date = %q{2009-09-13}
12
+ s.date = %q{2009-09-15}
13
13
  s.description = %q{An automatic logger for HTTP requests in Ruby. Adds Net::HTTP request logging to your Rails logs, and more.}
14
14
  s.email = %q{chris@kampers.net}
15
15
  s.extra_rdoc_files = [
@@ -96,7 +96,8 @@ class RequestTest < Test::Unit::TestCase
96
96
  end
97
97
 
98
98
  should_log_including "Example request"
99
- should_have_config_afterwards_including :label => "HTTP"
99
+ should_have_config_afterwards_including :labels => {"" => "HTTP"},
100
+ :label => nil
100
101
  end
101
102
 
102
103
  context "inside a configuration block with :filter_params" do
@@ -111,7 +112,7 @@ class RequestTest < Test::Unit::TestCase
111
112
  should_log_including "http://example.com/test?password=[FILTERED]&username=chrisk"
112
113
  end
113
114
 
114
- context "=> :ass" do
115
+ context "=> :as" do
115
116
  setup { Samuel.with_config(:filtered_params => :ass) { open @uri } }
116
117
  should_log_including "http://example.com/test?password=[FILTERED]&username=chrisk"
117
118
  end
@@ -130,7 +131,8 @@ class RequestTest < Test::Unit::TestCase
130
131
  end
131
132
 
132
133
  should_log_including "Example request"
133
- should_have_config_afterwards_including :label => "Example"
134
+ should_have_config_afterwards_including :labels => {"" => "HTTP"},
135
+ :label => "Example"
134
136
  end
135
137
 
136
138
  context "with a global config including :label => 'Example' but inside config block that changes it to 'Example 2'" do
@@ -141,7 +143,8 @@ class RequestTest < Test::Unit::TestCase
141
143
  end
142
144
 
143
145
  should_log_including "Example 2 request"
144
- should_have_config_afterwards_including :label => "Example"
146
+ should_have_config_afterwards_including :labels => {"" => "HTTP"},
147
+ :label => "Example"
145
148
  end
146
149
 
147
150
  context "inside a config block of :label => 'Example 2' nested inside a config block of :label => 'Example'" do
@@ -155,13 +158,14 @@ class RequestTest < Test::Unit::TestCase
155
158
  end
156
159
 
157
160
  should_log_including "Example 2 request"
158
- should_have_config_afterwards_including :label => "HTTP"
161
+ should_have_config_afterwards_including :labels => {"" => "HTTP"},
162
+ :label => nil
159
163
  end
160
164
 
161
- context "wth a global config including :label => 'Example' but inside a config block of :label => 'Example 3' nested inside a config block of :label => 'Example 2'" do
165
+ context "wth a global config including :labels => {'example.com' => 'Example'} but inside a config block of :label => 'Example 3' nested inside a config block of :label => 'Example 2'" do
162
166
  setup do
163
167
  FakeWeb.register_uri(:get, "http://example.com/test", :status => [200, "OK"])
164
- Samuel.config[:label] = "Example"
168
+ Samuel.config[:labels] = {'example.com' => 'Example'}
165
169
  Samuel.with_config :label => "Example 2" do
166
170
  Samuel.with_config :label => "Example 3" do
167
171
  open "http://example.com/test"
@@ -170,7 +174,18 @@ class RequestTest < Test::Unit::TestCase
170
174
  end
171
175
 
172
176
  should_log_including "Example 3 request"
173
- should_have_config_afterwards_including :label => "Example"
177
+ should_have_config_afterwards_including :labels => {'example.com' => 'Example'},
178
+ :label => nil
179
+ end
180
+
181
+ context "with a global config including :labels => {'example.com' => 'Example API'}" do
182
+ setup do
183
+ FakeWeb.register_uri(:get, "http://example.com/test", :status => [200, "OK"])
184
+ Samuel.config[:labels] = {'example.com' => 'Example API'}
185
+ open "http://example.com/test"
186
+ end
187
+
188
+ should_log_including "Example API request"
174
189
  end
175
190
 
176
191
  end
@@ -35,7 +35,7 @@ class SamuelTest < Test::Unit::TestCase
35
35
  should "reset the config to default vaules" do
36
36
  Samuel.config = {:foo => "bar"}
37
37
  Samuel.reset_config
38
- assert_equal({:label => "HTTP", :filtered_params => []}, Samuel.config)
38
+ assert_equal({:label => nil, :labels => {"" => "HTTP"}, :filtered_params => []}, Samuel.config)
39
39
  end
40
40
  end
41
41
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samuel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Kampmeier
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-13 00:00:00 -07:00
12
+ date: 2009-09-15 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency