merb-core 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. data/Rakefile +61 -11
  2. data/bin/merb +5 -1
  3. data/lib/merb-core.rb +202 -25
  4. data/lib/merb-core/autoload.rb +19 -17
  5. data/lib/merb-core/bootloader.rb +84 -71
  6. data/lib/merb-core/config.rb +19 -14
  7. data/lib/merb-core/controller/abstract_controller.rb +16 -17
  8. data/lib/merb-core/controller/exceptions.rb +115 -70
  9. data/lib/merb-core/controller/merb_controller.rb +62 -38
  10. data/lib/merb-core/controller/mime.rb +1 -1
  11. data/lib/merb-core/controller/mixins/authentication.rb +87 -0
  12. data/lib/merb-core/controller/mixins/controller.rb +16 -15
  13. data/lib/merb-core/controller/mixins/render.rb +113 -19
  14. data/lib/merb-core/controller/mixins/responder.rb +8 -2
  15. data/lib/merb-core/controller/template.rb +1 -1
  16. data/lib/merb-core/core_ext.rb +1 -0
  17. data/lib/merb-core/core_ext/class.rb +113 -6
  18. data/lib/merb-core/core_ext/hash.rb +43 -39
  19. data/lib/merb-core/core_ext/kernel.rb +75 -38
  20. data/lib/merb-core/core_ext/mash.rb +4 -4
  21. data/lib/merb-core/core_ext/object.rb +18 -7
  22. data/lib/merb-core/core_ext/set.rb +9 -4
  23. data/lib/merb-core/core_ext/string.rb +29 -9
  24. data/lib/merb-core/core_ext/time.rb +13 -0
  25. data/lib/merb-core/dispatch/cookies.rb +1 -2
  26. data/lib/merb-core/dispatch/dispatcher.rb +18 -10
  27. data/lib/merb-core/dispatch/exceptions.html.erb +1 -1
  28. data/lib/merb-core/dispatch/request.rb +3 -0
  29. data/lib/merb-core/dispatch/router.rb +10 -7
  30. data/lib/merb-core/dispatch/router/behavior.rb +36 -27
  31. data/lib/merb-core/dispatch/router/route.rb +7 -2
  32. data/lib/merb-core/dispatch/session/cookie.rb +4 -4
  33. data/lib/merb-core/dispatch/session/memcached.rb +17 -5
  34. data/lib/merb-core/logger.rb +2 -2
  35. data/lib/merb-core/plugins.rb +16 -4
  36. data/lib/merb-core/rack/adapter/ebb.rb +4 -1
  37. data/lib/merb-core/rack/adapter/evented_mongrel.rb +2 -0
  38. data/lib/merb-core/rack/adapter/fcgi.rb +1 -0
  39. data/lib/merb-core/rack/adapter/mongrel.rb +1 -0
  40. data/lib/merb-core/rack/adapter/runner.rb +1 -0
  41. data/lib/merb-core/rack/adapter/thin.rb +3 -1
  42. data/lib/merb-core/rack/adapter/webrick.rb +1 -0
  43. data/lib/merb-core/rack/application.rb +17 -1
  44. data/lib/merb-core/server.rb +78 -28
  45. data/lib/merb-core/test/helpers/multipart_request_helper.rb +3 -3
  46. data/lib/merb-core/test/helpers/request_helper.rb +81 -27
  47. data/lib/merb-core/test/helpers/view_helper.rb +1 -1
  48. data/lib/merb-core/test/matchers/controller_matchers.rb +55 -5
  49. data/lib/merb-core/test/matchers/route_matchers.rb +8 -17
  50. data/lib/merb-core/test/matchers/view_matchers.rb +53 -11
  51. data/lib/merb-core/test/run_specs.rb +22 -14
  52. data/lib/merb-core/test/tasks/spectasks.rb +54 -33
  53. data/lib/merb-core/vendor/facets/inflect.rb +91 -2
  54. data/lib/merb-core/version.rb +2 -2
  55. data/spec/private/config/config_spec.rb +54 -26
  56. data/spec/private/core_ext/class_spec.rb +22 -0
  57. data/spec/private/core_ext/hash_spec.rb +70 -54
  58. data/spec/private/core_ext/kernel_spec.rb +149 -14
  59. data/spec/private/core_ext/object_spec.rb +92 -10
  60. data/spec/private/core_ext/string_spec.rb +162 -4
  61. data/spec/private/core_ext/time_spec.rb +16 -0
  62. data/spec/private/dispatch/bootloader_spec.rb +24 -0
  63. data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +1 -1
  64. data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +1 -1
  65. data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +1 -1
  66. data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +1 -1
  67. data/spec/private/dispatch/fixture/config/black_hole.rb +12 -0
  68. data/spec/private/dispatch/fixture/log/merb_test.log +138 -0
  69. data/spec/private/plugins/plugin_spec.rb +79 -8
  70. data/spec/private/rack/application_spec.rb +1 -1
  71. data/spec/public/abstract_controller/controllers/filters.rb +26 -0
  72. data/spec/public/abstract_controller/controllers/helpers.rb +2 -2
  73. data/spec/public/abstract_controller/controllers/partial.rb +2 -2
  74. data/spec/public/abstract_controller/controllers/render.rb +16 -4
  75. data/spec/public/abstract_controller/filter_spec.rb +8 -0
  76. data/spec/public/abstract_controller/render_spec.rb +12 -0
  77. data/spec/public/controller/authentication_spec.rb +103 -0
  78. data/spec/public/controller/base_spec.rb +4 -3
  79. data/spec/public/controller/controllers/authentication.rb +47 -0
  80. data/spec/public/controller/controllers/base.rb +1 -0
  81. data/spec/public/controller/controllers/display.rb +30 -0
  82. data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +1 -0
  83. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +1 -0
  84. data/spec/public/controller/display_spec.rb +17 -0
  85. data/spec/public/controller/spec_helper.rb +1 -0
  86. data/spec/public/controller/url_spec.rb +25 -7
  87. data/spec/public/core/merb_core_spec.rb +34 -0
  88. data/spec/public/directory_structure/directory/app/controllers/custom.rb +2 -2
  89. data/spec/public/directory_structure/directory/log/merb_test.log +48 -0
  90. data/spec/public/logger/logger_spec.rb +10 -4
  91. data/spec/public/reloading/directory/app/controllers/reload.rb +1 -1
  92. data/spec/public/reloading/directory/log/merb_test.log +13 -0
  93. data/spec/public/reloading/reload_spec.rb +23 -22
  94. data/spec/public/request/request_spec.rb +2 -0
  95. data/spec/public/router/nested_resources_spec.rb +7 -0
  96. data/spec/public/router/resources_spec.rb +46 -1
  97. data/spec/public/router/special_spec.rb +5 -1
  98. data/spec/public/test/controller_matchers_spec.rb +25 -1
  99. data/spec/public/test/controllers/spec_helper_controller.rb +8 -0
  100. data/spec/public/test/request_helper_spec.rb +52 -1
  101. data/spec/public/test/route_matchers_spec.rb +27 -25
  102. data/spec/public/test/view_helper_spec.rb +1 -1
  103. data/spec/public/test/view_matchers_spec.rb +148 -72
  104. metadata +23 -3
@@ -77,4 +77,12 @@ describe Merb::AbstractController, " should support before and after filters" do
77
77
  it "should throw an error" do
78
78
  running { dispatch_should_make_body("TestConditionalFilterWithNoProcOrSymbol", "") }.should raise_error(ArgumentError, /a Symbol or a Proc/)
79
79
  end
80
+
81
+ it "should support passing an argument to a before filter method" do
82
+ dispatch_should_make_body("TestBeforeFilterWithArgument", "index action")
83
+ end
84
+
85
+ it "should support passing arguments to a before filter method" do
86
+ dispatch_should_make_body("TestBeforeFilterWithArguments", "index action")
87
+ end
80
88
  end
@@ -46,6 +46,18 @@ describe Merb::AbstractController, " rendering templates" do
46
46
  it "should support rendering plain strings with the controller layout" do
47
47
  dispatch_should_make_body("RenderTemplateControllerLayout", "Controller: the index")
48
48
  end
49
+
50
+ it "should support rendering templates without any layout (even if the default layout exists)" do
51
+ dispatch_should_make_body("RenderNoDefaultAppLayout", "the index")
52
+ end
53
+
54
+ it "should inherit the layout setting from a parent controller class" do
55
+ dispatch_should_make_body("RenderNoDefaultAppLayoutInherited", "the index")
56
+ end
57
+
58
+ it "should support reverting to the default layout" do
59
+ dispatch_should_make_body("RenderDefaultAppLayoutInheritedOverride", "App: the index")
60
+ end
49
61
 
50
62
  it "should support rendering templates with a custom location" do
51
63
  dispatch_should_make_body("RenderTemplateCustomLocation", "Wonderful")
@@ -0,0 +1,103 @@
1
+ require File.join(File.dirname(__FILE__), "spec_helper")
2
+
3
+ describe "basic_authentication in general", :shared => true do
4
+
5
+ it "should halt the filter chain and return a 401 status code if no authentication is sent" do
6
+ response = dispatch_to(Merb::Test::Fixtures::Controllers::BasicAuthentication, :index)
7
+ response.body.should == "HTTP Basic: Access denied.\n"
8
+ response.status.should == 401
9
+ end
10
+
11
+ it "should halt the filter chain and return a 401 status code on invalid username and password" do
12
+ u, p = "John", "password"
13
+ response = dispatch_with_basic_authentication_to(Merb::Test::Fixtures::Controllers::BasicAuthentication, :index, u, p)
14
+ response.body.should == "HTTP Basic: Access denied.\n"
15
+ response.status.should == 401
16
+ end
17
+
18
+ it "should halt the filter chain and return a 401 status code on invalid username and valid password" do
19
+ u, p = "John", "secret"
20
+ response = dispatch_with_basic_authentication_to(Merb::Test::Fixtures::Controllers::BasicAuthentication, :index, u, p)
21
+ response.body.should == "HTTP Basic: Access denied.\n"
22
+ response.status.should == 401
23
+ end
24
+
25
+ it "should halt the filter chain and return a 401 status code on valid username and invalid password" do
26
+ u, p = "Fred", "password"
27
+ response = dispatch_with_basic_authentication_to(Merb::Test::Fixtures::Controllers::BasicAuthentication, :index, u, p)
28
+ response.body.should == "HTTP Basic: Access denied.\n"
29
+ response.status.should == 401
30
+ end
31
+
32
+ it "should call the action on valid username and password" do
33
+ u, p = "Fred", "secret"
34
+ response = dispatch_with_basic_authentication_to(Merb::Test::Fixtures::Controllers::BasicAuthentication, :index, u, p)
35
+ response.body.should == "authenticated"
36
+ response.status.should == 200
37
+ end
38
+
39
+ end
40
+
41
+ describe Merb::Controller, "#basic_authentication with no realm" do
42
+
43
+ it_should_behave_like "basic_authentication in general"
44
+
45
+ it "should have a default WWW-Authenticate realm of 'Application' if no authentication is sent" do
46
+ response = dispatch_to(Merb::Test::Fixtures::Controllers::BasicAuthentication, :index)
47
+ response.headers['WWW-Authenticate'] = 'Basic realm="Application"'
48
+ end
49
+
50
+ it "should have a default WWW-Authenticate realm of 'Application' if incorrect authentication is sent" do
51
+ u, p = "John", "password"
52
+ response = dispatch_with_basic_authentication_to(Merb::Test::Fixtures::Controllers::BasicAuthentication, :index, u, p)
53
+ response.headers['WWW-Authenticate'] = 'Basic realm="Application"'
54
+ end
55
+
56
+ end
57
+
58
+ describe Merb::Controller, "#basic_authentication with realm" do
59
+
60
+ it_should_behave_like "basic_authentication in general"
61
+
62
+ it "should set the WWW-Authenticate realm if no authentication is sent" do
63
+ response = dispatch_to(Merb::Test::Fixtures::Controllers::BasicAuthenticationWithRealm, :index)
64
+ response.headers['WWW-Authenticate'] = 'Basic realm="My SuperApp"'
65
+ end
66
+
67
+ it "should set the WWW-Authenticate realm if incorrect authentication is sent" do
68
+ u, p = "John", "password"
69
+ response = dispatch_with_basic_authentication_to(Merb::Test::Fixtures::Controllers::BasicAuthenticationWithRealm, :index, u, p)
70
+ response.headers['WWW-Authenticate'] = 'Basic realm="My SuperApp"'
71
+ end
72
+
73
+ end
74
+
75
+ describe Merb::Controller, "#basic_authentication.authenticate" do
76
+
77
+ it "should pass in the username and password and return the result of the block" do
78
+ u, p = "Fred", "secret"
79
+ response = dispatch_with_basic_authentication_to(Merb::Test::Fixtures::Controllers::AuthenticateBasicAuthentication, :index, u, p)
80
+ response.body.should == "Fred:secret"
81
+ end
82
+
83
+ end
84
+
85
+ describe Merb::Controller, "#basic_authentication.request" do
86
+
87
+ it "should halt the filter chain and return a 401 status code" do
88
+ response = dispatch_to(Merb::Test::Fixtures::Controllers::RequestBasicAuthentication, :index)
89
+ response.body.should == "HTTP Basic: Access denied.\n"
90
+ response.status.should == 401
91
+ end
92
+
93
+ it "should have a default WWW-Authenticate realm of 'Application'" do
94
+ response = dispatch_to(Merb::Test::Fixtures::Controllers::RequestBasicAuthentication, :index)
95
+ response.headers['WWW-Authenticate'].should == 'Basic realm="Application"'
96
+ end
97
+
98
+ it "should set the WWW-Authenticate realm" do
99
+ response = dispatch_to(Merb::Test::Fixtures::Controllers::RequestBasicAuthenticationWithRealm, :index)
100
+ response.headers['WWW-Authenticate'].should == 'Basic realm="My SuperApp"'
101
+ end
102
+
103
+ end
@@ -10,7 +10,9 @@ describe Merb::Controller, " callable actions" do
10
10
  end
11
11
 
12
12
  it "should dispatch to callable actions" do
13
- dispatch_to(Merb::Test::Fixtures::Controllers::Base, :index).body.should == "index"
13
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::Base, :index)
14
+ controller.body.should == "index"
15
+ controller.status.should == 200
14
16
  end
15
17
 
16
18
  it "should not dispatch to hidden actions" do
@@ -26,6 +28,5 @@ describe Merb::Controller, " callable actions" do
26
28
  calling { dispatch_to(Merb::Test::Fixtures::Controllers::Base, :bat) }.
27
29
  should raise_error(Merb::ControllerExceptions::ActionNotFound)
28
30
  end
29
-
30
-
31
+
31
32
  end
@@ -0,0 +1,47 @@
1
+ module Merb::Test::Fixtures::Controllers
2
+
3
+ class Testing < Merb::Controller
4
+ self._template_root = File.dirname(__FILE__) / "views"
5
+ end
6
+
7
+ class BasicAuthentication < Testing
8
+
9
+ before :authenticate, :only => :index
10
+
11
+ def index
12
+ "authenticated"
13
+ end
14
+
15
+ protected
16
+
17
+ def authenticate
18
+ basic_authentication { |u, p| u == "Fred" && p == "secret" }
19
+ end
20
+
21
+ end
22
+
23
+ class BasicAuthenticationWithRealm < BasicAuthentication
24
+ def authenticate
25
+ basic_authentication("My Super App") { |u, p| u == "Fred" && p == "secret" }
26
+ end
27
+ end
28
+
29
+ class AuthenticateBasicAuthentication < Testing
30
+ def index
31
+ basic_authentication.authenticate { |u, p| "Fred:secret" }
32
+ end
33
+ end
34
+
35
+ class RequestBasicAuthentication < BasicAuthentication
36
+ def authenticate
37
+ basic_authentication.request
38
+ end
39
+ end
40
+
41
+ class RequestBasicAuthenticationWithRealm < BasicAuthentication
42
+ def authenticate
43
+ basic_authentication("My SuperApp").request
44
+ end
45
+ end
46
+
47
+ end
@@ -28,6 +28,7 @@ module Merb::Test::Fixtures
28
28
  include Inclusion
29
29
 
30
30
  def index
31
+ self.status = :ok
31
32
  "index"
32
33
  end
33
34
 
@@ -4,6 +4,11 @@ module Merb::Test::Fixtures::Controllers
4
4
 
5
5
  class SomeModel
6
6
  def to_xml; "<XML:Model />" end
7
+ def to_json(options = {})
8
+ includes = options[:include].join(', ') rescue ""
9
+ excludes = options[:except].first rescue ""
10
+ "{ 'include': '#{includes}', 'exclude': '#{excludes}' }"
11
+ end
7
12
  end
8
13
 
9
14
  class Testing < Merb::Controller
@@ -37,4 +42,29 @@ module Merb::Test::Fixtures::Controllers
37
42
  layout :custom
38
43
  end
39
44
 
45
+ class DisplayWithTemplateArgument < Display
46
+ def index
47
+ @obj = SomeModel.new
48
+ display @obj, :layout => :custom_arg
49
+ end
50
+
51
+ def index_by_arg
52
+ @obj = SomeModel.new
53
+ display @obj, "merb/test/fixtures/controllers/display_with_template_argument/index.html"
54
+ end
55
+ end
56
+
57
+ class DisplayWithSerializationOptions < Display
58
+ provides :json
59
+
60
+ def index
61
+ @obj = SomeModel.new
62
+ display @obj, :include => [:beer, :jazz], :except => [:idiots]
63
+ end
64
+
65
+ def index_that_passes_empty_hash
66
+ @obj = SomeModel.new
67
+ display @obj, {}
68
+ end
69
+ end
40
70
  end
@@ -0,0 +1 @@
1
+ Custom Arg: <%= catch_content(:for_layout) %>
@@ -15,6 +15,14 @@ describe Merb::Controller, " displaying objects based on mime type" do
15
15
  it "should use a template if specified" do
16
16
  dispatch_to(Merb::Test::Fixtures::Controllers::DisplayWithTemplate, :index).body.should == "Custom: Template"
17
17
  end
18
+
19
+ it "should accept a layout argument" do
20
+ dispatch_to(Merb::Test::Fixtures::Controllers::DisplayWithTemplateArgument, :index).body.should == "Custom Arg: Template"
21
+ end
22
+
23
+ it "should accept a template path argument" do
24
+ dispatch_to(Merb::Test::Fixtures::Controllers::DisplayWithTemplateArgument, :index_by_arg).body.should == "Template"
25
+ end
18
26
 
19
27
  it "should use other mime-types if they are provided on the class level" do
20
28
  controller = dispatch_to(Merb::Test::Fixtures::Controllers::DisplayClassProvides, :index, {}, :http_accept => "application/xml")
@@ -31,4 +39,13 @@ describe Merb::Controller, " displaying objects based on mime type" do
31
39
  controller.body.should == "<XML:Model />"
32
40
  end
33
41
 
42
+ it "passes all options to serialization method like :to_json" do
43
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::DisplayWithSerializationOptions, :index, {}, :http_accept => "application/json")
44
+ controller.body.should == "{ 'include': 'beer, jazz', 'exclude': 'idiots' }"
45
+ end
46
+
47
+ it "passes single argument to serialization method like :to_json" do
48
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::DisplayWithSerializationOptions, :index_that_passes_empty_hash, {}, :http_accept => "application/json")
49
+ controller.body.should == "{ 'include': '', 'exclude': '' }"
50
+ end
34
51
  end
@@ -5,5 +5,6 @@ require File.join(__DIR__, "..", "..", "spec_helper")
5
5
  require File.join(__DIR__, "controllers", "base")
6
6
  require File.join(__DIR__, "controllers", "responder")
7
7
  require File.join(__DIR__, "controllers", "display")
8
+ require File.join(__DIR__, "controllers", "authentication")
8
9
 
9
10
  Merb.start :environment => 'test'
@@ -74,6 +74,14 @@ describe Merb::Controller, " url" do
74
74
  @controller.url(:person, :name => 'david', :color => 'blue').should eql("/people/david?color=blue")
75
75
  end
76
76
 
77
+ it "should match with a :format" do
78
+ @controller.url(:person, :name => 'david', :format => :xml).should eql("/people/david.xml")
79
+ end
80
+
81
+ it "should match with an additional param and :format" do
82
+ @controller.url(:person, :name => 'david', :color => 'blue', :format => :xml).should eql("/people/david.xml?color=blue")
83
+ end
84
+
77
85
  it "should match with additional params" do
78
86
  url = @controller.url(:person, :name => 'david', :smell => 'funky', :color => 'blue')
79
87
  url.should match(%r{/people/david?.*color=blue})
@@ -96,6 +104,16 @@ describe Merb::Controller, " url" do
96
104
  it "should match with a fixnum as second arg" do
97
105
  @controller.url(:monkey, 3).should == "/monkeys/3"
98
106
  end
107
+
108
+ it "should match with an object and :format" do
109
+ @monkey = Monkey.new
110
+ @controller.url(:monkey, :id => @monkey, :format => :xml).should == "/monkeys/45.xml"
111
+ end
112
+
113
+ it "should match with an object, :format and additional options" do
114
+ @monkey = Monkey.new
115
+ @controller.url(:monkey, :id => @monkey, :format => :xml, :color => "blue").should == "/monkeys/45.xml?color=blue"
116
+ end
99
117
 
100
118
  it "should match the delete_monkey route" do
101
119
  @monkey = Monkey.new
@@ -114,23 +132,23 @@ describe Merb::Controller, " url" do
114
132
 
115
133
  it "should match a nested resources show action" do
116
134
  @blue = Blue.new
117
- @controller.url(:monkey_blue,@blue).should == "/monkeys/45/blues/13"
135
+ @controller.url(:monkey_blue, @blue).should == "/monkeys/45/blues/13"
118
136
  end
119
137
 
120
138
  it "should match the index action of nested resource with parent object" do
121
139
  @blue = Blue.new
122
140
  @monkey = Monkey.new
123
- @controller.url(:monkey_blues,:monkey_id => @monkey).should == "/monkeys/45/blues"
141
+ @controller.url(:monkey_blues, :monkey_id => @monkey).should == "/monkeys/45/blues"
124
142
  end
125
143
 
126
144
  it "should match the index action of nested resource with parent id as string" do
127
145
  @blue = Blue.new
128
- @controller.url(:monkey_blues,:monkey_id => '1').should == "/monkeys/1/blues"
146
+ @controller.url(:monkey_blues, :monkey_id => '1').should == "/monkeys/1/blues"
129
147
  end
130
148
 
131
149
  it "should match the edit action of nested resource" do
132
150
  @blue = Blue.new
133
- @controller.url(:edit_monkey_blue,@blue).should == "/monkeys/45/blues/13/edit"
151
+ @controller.url(:edit_monkey_blue, @blue).should == "/monkeys/45/blues/13/edit"
134
152
  end
135
153
 
136
154
  it "should match the index action of resources nested under a resource" do
@@ -140,13 +158,13 @@ describe Merb::Controller, " url" do
140
158
 
141
159
  it "should match resource that has been nested multiple times" do
142
160
  @blue = Blue.new
143
- @controller.url(:donkey_blue,@blue).should == "/donkeys/19/blues/13"
144
- @controller.url(:monkey_blue,@blue).should == "/monkeys/45/blues/13"
161
+ @controller.url(:donkey_blue, @blue).should == "/donkeys/19/blues/13"
162
+ @controller.url(:monkey_blue, @blue).should == "/monkeys/45/blues/13"
145
163
  end
146
164
 
147
165
  it "should match resources nested more than one level deep" do
148
166
  @pink = Pink.new
149
- @controller.url(:monkey_blue_pink,@pink).should == "/monkeys/45/blues/13/pinks/22"
167
+ @controller.url(:monkey_blue_pink, @pink).should == "/monkeys/45/blues/13/pinks/22"
150
168
  end
151
169
 
152
170
  end
@@ -0,0 +1,34 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
2
+
3
+ describe "Merb.env helpers" do
4
+ before(:all) do
5
+ @orig_env = Merb.environment
6
+ end
7
+ after(:all) do
8
+ Merb.environment = @orig_env
9
+ end
10
+
11
+ it "should pickup the environment from env" do
12
+ %w(development test production staging demo).each do |e|
13
+ Merb.environment = e
14
+ Merb.env.should == e
15
+ end
16
+ end
17
+
18
+ it "should correctly answer the question about which env it's in with symbol or string" do
19
+ %w(development test production staging demo custom).each do |e|
20
+ Merb.environment = e
21
+ Merb.env?(e).should be true
22
+ Merb.env?(e.to_sym).should be_true
23
+ end
24
+ end
25
+
26
+ it "should answer false if asked for an environment that is not current" do
27
+ %w(development test production staging demo custom).each do |e|
28
+ Merb.environment = e
29
+ Merb.env?(:not_it).should be_false
30
+ end
31
+ end
32
+
33
+
34
+ end
@@ -12,8 +12,8 @@ class Custom < Application
12
12
 
13
13
  private
14
14
 
15
- def _template_location(action, type = nil, controller = controller_name)
16
- "wonderful/#{action}"
15
+ def _template_location(context, type = nil, controller = controller_name)
16
+ "wonderful/#{context}"
17
17
  end
18
18
 
19
19
  end
@@ -263,3 +263,51 @@ Mon, 25 Feb 2008 23:13:20 GMT ~ {:action_time=>0.000562, :after_filters_time=>6.
263
263
  ~ {:before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06, :action_time=>7.4e-05}
264
264
  ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000615}
265
265
  ~ {:before_filters_time=>6.0e-06, :after_filters_time=>7.0e-06, :action_time=>0.000601}
266
+ ~ Not Using Sessions
267
+ ~ {:before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06, :action_time=>7.5e-05}
268
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000618}
269
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000588}
270
+ ~ Not Using Sessions
271
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>7.8e-05}
272
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000597}
273
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000574}
274
+ ~ Not Using Sessions
275
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>7.3e-05}
276
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000596}
277
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000571}
278
+ ~ Not Using Sessions
279
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>7.5e-05}
280
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000594}
281
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000576}
282
+ ~ Not Using Sessions
283
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>7.5e-05}
284
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000843}
285
+ ~ {:before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000735}
286
+ ~ Not Using Sessions
287
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>7.9e-05}
288
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000935}
289
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000656}
290
+ ~ Not Using Sessions
291
+ ~ {:before_filters_time=>9.0e-06, :after_filters_time=>6.0e-06, :action_time=>8.9e-05}
292
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000826}
293
+ ~ {:before_filters_time=>3.5e-05, :after_filters_time=>7.0e-06, :action_time=>0.000879}
294
+ ~ Not Using Sessions
295
+ ~ {:before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06, :action_time=>8.8e-05}
296
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000823}
297
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>7.0e-06, :action_time=>0.000841}
298
+ ~ Not Using Sessions
299
+ ~ {:action_time=>8.9e-05, :before_filters_time=>8.0e-06, :after_filters_time=>7.0e-06}
300
+ ~ {:action_time=>0.000828, :before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06}
301
+ ~ {:action_time=>0.00083, :before_filters_time=>8.0e-06, :after_filters_time=>7.0e-06}
302
+ ~ Not Using Sessions
303
+ ~ {:action_time=>0.000145, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
304
+ ~ {:action_time=>0.000796, :before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06}
305
+ ~ {:action_time=>0.000761, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
306
+ ~ Not Using Sessions
307
+ ~ {:action_time=>0.000146, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
308
+ ~ {:action_time=>0.000797, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
309
+ ~ {:action_time=>0.000771, :before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06}
310
+ ~ Not Using Sessions
311
+ ~ {:action_time=>0.000149, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
312
+ ~ {:action_time=>0.000813, :before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06}
313
+ ~ {:action_time=>0.000787, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}