fozzie 0.0.22 → 0.0.23

Sign up to get free protection for your applications and to get access to all the features.
data/fozzie.gemspec CHANGED
@@ -5,7 +5,7 @@ require "fozzie/version"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "fozzie"
7
7
  s.version = Fozzie::VERSION
8
- s.authors = ["Marc Watts", "Mark Barger"]
8
+ s.authors = ["Marc Watts", "Mark Barger", "Dave Nolan"]
9
9
  s.email = ["marc.watts@lonelyplanet.co.uk"]
10
10
  s.summary = %q{Statsd Ruby gem from Lonely Planet Online}
11
11
  s.description = %q{
@@ -9,12 +9,14 @@ module Fozzie
9
9
 
10
10
  # Generates the statistics key for the current path
11
11
  def generate_key(env)
12
- path_str = env['PATH_INFO']
12
+ path_str = env['PATH_INFO']
13
+ request_method = env['REQUEST_METHOD']
14
+
13
15
  return nil unless path_str
14
16
 
15
17
  begin
16
18
  routing = routing_lookup
17
- path = routing.recognize_path(path_str)
19
+ path = routing.recognize_path(path_str, :method => request_method)
18
20
  stat = [path[:controller], path[:action], "render"].join('.')
19
21
  stat
20
22
  rescue => exc
@@ -34,4 +36,4 @@ module Fozzie
34
36
  end
35
37
 
36
38
  end
37
- end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Fozzie
2
- VERSION = "0.0.22"
2
+ VERSION = "0.0.23"
3
3
  end
@@ -2,80 +2,124 @@ require 'spec_helper'
2
2
  require 'action_controller'
3
3
 
4
4
  describe Fozzie::Rails::Middleware do
5
- let(:path_info) { '/somewhere/railsy' }
6
- let(:fake_env) { ({ 'PATH_INFO' => path_info }) }
7
- let(:routing) { mock 'routing' }
5
+ let(:routes) { mock "routes" }
8
6
 
9
7
  subject do
10
8
  RailsApp = Class.new do
11
9
  def call(env); env end
12
10
  end unless defined?(RailsApp)
13
- Rails = RailsApp unless defined?(Rails)
14
11
  Fozzie::Rails::Middleware.new RailsApp.new
15
12
  end
16
13
 
17
- describe "subject" do
18
- it "returns env on call for testing" do
19
- subject.call({}).should == {}
20
- end
14
+ before do
15
+ Rails = rails unless defined?(Rails)
21
16
  end
17
+
18
+ describe "#rails_version" do
19
+ let(:version) { "10.9.8" }
20
+ let(:rails) { mock "rails" }
22
21
 
23
- describe "rails 2" do
24
- let!(:version) { RailsApp.stubs(:version).returns("2.3.1") }
25
-
26
- it "#generate_key" do
27
- subject.stubs(:routing_lookup).returns(routing)
28
- routing.expects(:recognize_path)
29
- .with(path_info)
30
- .returns({:controller => 'somewhere', :action => 'railsy'})
31
-
32
- subject.generate_key(fake_env).should == 'somewhere.railsy.render'
22
+ before do
23
+ ::Rails.stubs(:version).returns(version)
33
24
  end
34
-
35
- it "returns nil on routing error" do
36
- subject.stubs(:routing_lookup).returns(routing)
37
- routing.expects(:recognize_path)
38
- .with(path_info)
39
- .raises(RuntimeError)
40
-
41
- subject.generate_key(fake_env).should == nil
25
+
26
+ it "returns the major version from Rails.version" do
27
+ subject.rails_version.should == 10
42
28
  end
43
-
44
29
  end
45
-
46
- describe "rails 3" do
47
- let!(:rails) { RailsApp.stubs(:application).returns(Class.new) }
48
- let!(:version) { RailsApp.stubs(:version).returns("3.1.1") }
49
-
50
- it "#generate_key" do
51
- subject.stubs(:routing_lookup).returns(routing)
52
- routing.expects(:recognize_path)
53
- .with(path_info)
54
- .returns({:controller => 'somewhere', :action => 'railsy'})
55
-
56
- subject.generate_key(fake_env).should == 'somewhere.railsy.render'
30
+
31
+ describe "#routing_lookup" do
32
+ context "when #rails_version == 3" do
33
+ let(:app) { mock "app" }
34
+
35
+ before do
36
+ subject.stubs(:rails_version).returns(3)
37
+ end
38
+
39
+ it "returns Rails.application.routes" do
40
+ Rails.expects(:application).returns(app)
41
+ app.expects(:routes).returns(routes)
42
+ subject.routing_lookup.should eq routes
43
+ end
57
44
  end
58
-
59
- it "returns nil on error" do
60
- subject.stubs(:routing_lookup).returns(routing)
61
- routing.expects(:recognize_path)
62
- .with(path_info)
63
- .raises(RuntimeError)
64
-
65
- subject.generate_key(fake_env).should == nil
45
+
46
+ context "when #rails_version does not == 3" do
47
+ before do
48
+ if defined?(ActionController::Routing::Routes)
49
+
50
+ @old_routes_const = ActionController::Routing::Routes
51
+ ActionController::Routing.send(:remove_const, :Routes)
52
+ end
53
+ ActionController::Routing::Routes = routes
54
+ end
55
+
56
+ after do
57
+ if @old_routes_const
58
+ ActionController::Routing.send(:remove_const, :Routes)
59
+ ActionController::Routing::Routes = @old_routes_const
60
+ end
61
+ end
62
+
63
+ it "returns ActionController::Routing::Routes" do
64
+ subject.routing_lookup.should eq routes
65
+ end
66
66
  end
67
+ end
67
68
 
68
- it "returns nil on routing error" do
69
- subject.stubs(:routing_lookup).returns(routing)
70
- routing.expects(:recognize_path)
71
- .with(path_info)
72
- .raises(RuntimeError)
69
+ describe "#generate_key" do
70
+ let(:env) { mock "env" }
71
+ let(:path) { mock "path" }
72
+ let(:request_method) { mock "request_method" }
73
+
74
+ it "gets the path_info and request method from env parameter" do
75
+ env.expects(:[]).with("PATH_INFO")
76
+ env.expects(:[]).with("REQUEST_METHOD")
77
+ subject.generate_key(env)
78
+ end
73
79
 
74
- S.expects(:increment).with('routing.error')
80
+ context "when path_info is nil" do
81
+ let(:env) { { "PATH_INFO" => nil } }
82
+
83
+ it "does not lookup routing" do
84
+ subject.expects(:routing_lookup).never
85
+ subject.generate_key(env)
86
+ end
87
+
88
+ it "does not register any stats" do
89
+ S.expects(:increment).never
90
+ end
91
+
92
+ it "returns nil" do
93
+ subject.generate_key(env).should be_nil
94
+ end
95
+ end
75
96
 
76
- subject.generate_key(fake_env).should == nil
97
+ context "when path info is not nil" do
98
+ let(:env) { { "PATH_INFO" => path, "REQUEST_METHOD" => request_method } }
99
+
100
+ before do
101
+ subject.stubs(:routing_lookup).returns(routes)
102
+ routes.stubs(:recognize_path).returns({ :controller => "controller",
103
+ :action => "action" })
104
+ end
105
+
106
+ it "looks up controller and action for the path and request method" do
107
+ subject.expects(:routing_lookup).returns(routes)
108
+ routes.expects(:recognize_path).with(path, :method => request_method)
109
+ subject.generate_key(env)
110
+ end
111
+
112
+ it "returns a bucket generated from the controller, action, and 'render'" do
113
+ subject.generate_key(env).should eq "controller.action.render"
114
+ end
77
115
  end
116
+ end
78
117
 
118
+
119
+ describe "subject" do
120
+ it "returns env on call for testing" do
121
+ subject.call({}).should == {}
122
+ end
79
123
  end
80
124
 
81
- end
125
+ end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fozzie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.23
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Marc Watts
9
9
  - Mark Barger
10
+ - Dave Nolan
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2012-05-31 00:00:00.000000000 Z
14
+ date: 2012-06-06 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: sys-uname
@@ -278,7 +279,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
278
279
  version: '0'
279
280
  segments:
280
281
  - 0
281
- hash: 1130845935272544581
282
+ hash: 3531054699927461571
282
283
  required_rubygems_version: !ruby/object:Gem::Requirement
283
284
  none: false
284
285
  requirements:
@@ -287,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
287
288
  version: '0'
288
289
  segments:
289
290
  - 0
290
- hash: 1130845935272544581
291
+ hash: 3531054699927461571
291
292
  requirements: []
292
293
  rubyforge_project: fozzie
293
294
  rubygems_version: 1.8.24