merb-core 0.9.7 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +136 -2
- data/CONTRIBUTORS +6 -0
- data/PUBLIC_CHANGELOG +38 -0
- data/Rakefile +38 -30
- data/lib/merb-core.rb +88 -23
- data/lib/merb-core/bootloader.rb +235 -51
- data/lib/merb-core/config.rb +121 -36
- data/lib/merb-core/controller/abstract_controller.rb +59 -36
- data/lib/merb-core/controller/exceptions.rb +2 -15
- data/lib/merb-core/controller/merb_controller.rb +44 -1
- data/lib/merb-core/controller/mime.rb +4 -0
- data/lib/merb-core/controller/mixins/controller.rb +38 -21
- data/lib/merb-core/controller/mixins/render.rb +44 -29
- data/lib/merb-core/controller/mixins/responder.rb +3 -31
- data/lib/merb-core/controller/template.rb +45 -21
- data/lib/merb-core/core_ext/kernel.rb +60 -32
- data/lib/merb-core/dispatch/default_exception/default_exception.rb +2 -2
- data/lib/merb-core/dispatch/default_exception/views/_css.html.erb +3 -1
- data/lib/merb-core/dispatch/default_exception/views/_javascript.html.erb +71 -67
- data/lib/merb-core/dispatch/default_exception/views/index.html.erb +7 -3
- data/lib/merb-core/dispatch/dispatcher.rb +3 -3
- data/lib/merb-core/dispatch/request.rb +56 -9
- data/lib/merb-core/dispatch/router.rb +159 -133
- data/lib/merb-core/dispatch/router/behavior.rb +462 -703
- data/lib/merb-core/dispatch/router/cached_proc.rb +3 -3
- data/lib/merb-core/dispatch/router/resources.rb +289 -0
- data/lib/merb-core/dispatch/router/route.rb +514 -294
- data/lib/merb-core/dispatch/session.rb +4 -2
- data/lib/merb-core/logger.rb +213 -202
- data/lib/merb-core/plugins.rb +9 -1
- data/lib/merb-core/rack.rb +3 -1
- data/lib/merb-core/rack/adapter.rb +7 -4
- data/lib/merb-core/rack/adapter/abstract.rb +188 -0
- data/lib/merb-core/rack/adapter/ebb.rb +12 -13
- data/lib/merb-core/rack/adapter/evented_mongrel.rb +2 -15
- data/lib/merb-core/rack/adapter/irb.rb +3 -2
- data/lib/merb-core/rack/adapter/mongrel.rb +22 -15
- data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +4 -16
- data/lib/merb-core/rack/adapter/thin.rb +21 -22
- data/lib/merb-core/rack/adapter/thin_turbo.rb +4 -11
- data/lib/merb-core/rack/adapter/webrick.rb +54 -18
- data/lib/merb-core/rack/application.rb +4 -4
- data/lib/merb-core/rack/handler/mongrel.rb +12 -13
- data/lib/merb-core/rack/middleware/csrf.rb +1 -1
- data/lib/merb-core/rack/stream_wrapper.rb +41 -0
- data/lib/merb-core/server.rb +157 -90
- data/lib/merb-core/tasks/gem_management.rb +267 -0
- data/lib/merb-core/tasks/merb.rb +1 -0
- data/lib/merb-core/tasks/merb_rake_helper.rb +48 -34
- data/lib/merb-core/tasks/stats.rake +1 -1
- data/lib/merb-core/test.rb +9 -3
- data/lib/merb-core/test/helpers.rb +1 -0
- data/lib/merb-core/test/helpers/mock_request_helper.rb +393 -0
- data/lib/merb-core/test/helpers/multipart_request_helper.rb +3 -2
- data/lib/merb-core/test/helpers/request_helper.rb +40 -372
- data/lib/merb-core/test/helpers/route_helper.rb +16 -2
- data/lib/merb-core/test/matchers.rb +1 -0
- data/lib/merb-core/test/matchers/controller_matchers.rb +4 -247
- data/lib/merb-core/test/matchers/request_matchers.rb +140 -0
- data/lib/merb-core/test/matchers/view_matchers.rb +22 -4
- data/lib/merb-core/test/run_specs.rb +118 -26
- data/lib/merb-core/test/test_ext/rspec.rb +181 -0
- data/lib/merb-core/version.rb +1 -9
- metadata +10 -342
- data/docs/bootloading.dox +0 -58
- data/docs/documentation_standards +0 -40
- data/docs/merb-core-call-stack-diagram.mmap +0 -0
- data/docs/merb-core-call-stack-diagram.pdf +0 -0
- data/docs/merb-core-call-stack-diagram.png +0 -0
- data/docs/new_render_api +0 -51
- data/lib/merb-core/vendor/facets.rb +0 -2
- data/lib/merb-core/vendor/facets/dictionary.rb +0 -433
- data/lib/merb-core/vendor/facets/inflect.rb +0 -342
- data/spec/private/config/adapter_spec.rb +0 -32
- data/spec/private/config/config_spec.rb +0 -202
- data/spec/private/config/environment_spec.rb +0 -13
- data/spec/private/config/merb_spec.rb +0 -34
- data/spec/private/config/spec_helper.rb +0 -1
- data/spec/private/core_ext/kernel_spec.rb +0 -159
- data/spec/private/dispatch/bootloader_spec.rb +0 -24
- data/spec/private/dispatch/fixture/app/controllers/application.rb +0 -4
- data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +0 -25
- data/spec/private/dispatch/fixture/app/controllers/foo.rb +0 -19
- data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +0 -8
- data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +0 -37
- data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +0 -216
- data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +0 -38
- data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +0 -40
- data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
- data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +0 -11
- data/spec/private/dispatch/fixture/config/black_hole.rb +0 -12
- data/spec/private/dispatch/fixture/config/environments/development.rb +0 -6
- data/spec/private/dispatch/fixture/config/environments/production.rb +0 -5
- data/spec/private/dispatch/fixture/config/environments/test.rb +0 -6
- data/spec/private/dispatch/fixture/config/init.rb +0 -45
- data/spec/private/dispatch/fixture/config/rack.rb +0 -11
- data/spec/private/dispatch/fixture/config/router.rb +0 -35
- data/spec/private/dispatch/fixture/log/merb_test.log +0 -8839
- data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
- data/spec/private/dispatch/fixture/public/merb.fcgi +0 -4
- data/spec/private/dispatch/fixture/public/stylesheets/master.css +0 -119
- data/spec/private/dispatch/route_params_spec.rb +0 -23
- data/spec/private/dispatch/spec_helper.rb +0 -1
- data/spec/private/router/behavior_spec.rb +0 -60
- data/spec/private/router/fixture/log/merb_test.log +0 -35
- data/spec/private/router/route_spec.rb +0 -418
- data/spec/private/router/router_spec.rb +0 -183
- data/spec/private/vendor/facets/plural_spec.rb +0 -564
- data/spec/private/vendor/facets/singular_spec.rb +0 -489
- data/spec/public/DEFINITIONS +0 -11
- data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/cousins.rb +0 -41
- data/spec/public/abstract_controller/controllers/display.rb +0 -60
- data/spec/public/abstract_controller/controllers/filters.rb +0 -260
- data/spec/public/abstract_controller/controllers/helpers.rb +0 -41
- data/spec/public/abstract_controller/controllers/partial.rb +0 -121
- data/spec/public/abstract_controller/controllers/render.rb +0 -113
- data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/helpers/capture_eq/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/helpers/capture_with_args/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/layout/alt.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/layout/custom.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_app_layout/index.erb +0 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_custom_layout/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_two_throw_contents/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/_collection.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
- data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +0 -1
- data/spec/public/abstract_controller/display_spec.rb +0 -37
- data/spec/public/abstract_controller/filter_spec.rb +0 -136
- data/spec/public/abstract_controller/helper_spec.rb +0 -21
- data/spec/public/abstract_controller/partial_spec.rb +0 -61
- data/spec/public/abstract_controller/render_spec.rb +0 -90
- data/spec/public/abstract_controller/spec_helper.rb +0 -31
- data/spec/public/boot_loader/boot_loader_spec.rb +0 -33
- data/spec/public/boot_loader/spec_helper.rb +0 -1
- data/spec/public/controller/authentication_spec.rb +0 -174
- data/spec/public/controller/base_spec.rb +0 -88
- data/spec/public/controller/conditional_get_spec.rb +0 -100
- data/spec/public/controller/config/init.rb +0 -6
- data/spec/public/controller/controllers/authentication.rb +0 -74
- data/spec/public/controller/controllers/base.rb +0 -65
- data/spec/public/controller/controllers/conditional_get.rb +0 -35
- data/spec/public/controller/controllers/cookies.rb +0 -36
- data/spec/public/controller/controllers/dispatcher.rb +0 -35
- data/spec/public/controller/controllers/display.rb +0 -118
- data/spec/public/controller/controllers/redirect.rb +0 -36
- data/spec/public/controller/controllers/responder.rb +0 -93
- data/spec/public/controller/controllers/url.rb +0 -7
- data/spec/public/controller/controllers/views/layout/custom.html.erb +0 -1
- data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +0 -1
- data/spec/public/controller/controllers/views/layout/custom_arg.json.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.xml.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/no_layout.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +0 -1
- data/spec/public/controller/cookies_spec.rb +0 -95
- data/spec/public/controller/dispatcher_spec.rb +0 -410
- data/spec/public/controller/display_spec.rb +0 -84
- data/spec/public/controller/redirect_spec.rb +0 -33
- data/spec/public/controller/responder_spec.rb +0 -169
- data/spec/public/controller/spec_helper.rb +0 -13
- data/spec/public/controller/url_spec.rb +0 -255
- data/spec/public/core/merb_core_spec.rb +0 -45
- data/spec/public/core_ext/fixtures/core_ext_dependency.rb +0 -2
- data/spec/public/core_ext/kernel_spec.rb +0 -88
- data/spec/public/core_ext/spec_helper.rb +0 -1
- data/spec/public/directory_structure/directory/app/controllers/application.rb +0 -3
- data/spec/public/directory_structure/directory/app/controllers/base.rb +0 -13
- data/spec/public/directory_structure/directory/app/controllers/custom.rb +0 -19
- data/spec/public/directory_structure/directory/app/views/base/template.html.erb +0 -1
- data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +0 -1
- data/spec/public/directory_structure/directory/config/router.rb +0 -3
- data/spec/public/directory_structure/directory/log/merb_test.log +0 -4588
- data/spec/public/directory_structure/directory_spec.rb +0 -43
- data/spec/public/logger/logger_spec.rb +0 -181
- data/spec/public/logger/spec_helper.rb +0 -1
- data/spec/public/rack/conditinal_get_middleware_spec.rb +0 -127
- data/spec/public/rack/csrf_middleware_spec.rb +0 -70
- data/spec/public/rack/rack_middleware_spec.rb +0 -99
- data/spec/public/rack/shared_example_groups.rb +0 -35
- data/spec/public/reloading/directory/app/controllers/application.rb +0 -3
- data/spec/public/reloading/directory/app/controllers/reload.rb +0 -6
- data/spec/public/reloading/directory/config/init.rb +0 -2
- data/spec/public/reloading/directory/log/merb_test.log +0 -288231
- data/spec/public/reloading/reload_spec.rb +0 -103
- data/spec/public/request/multipart_spec.rb +0 -41
- data/spec/public/request/request_spec.rb +0 -250
- data/spec/public/router/default_spec.rb +0 -21
- data/spec/public/router/deferred_spec.rb +0 -22
- data/spec/public/router/fixation_spec.rb +0 -49
- data/spec/public/router/fixture/log/merb_test.log +0 -524
- data/spec/public/router/namespace_spec.rb +0 -113
- data/spec/public/router/nested_matches_spec.rb +0 -97
- data/spec/public/router/nested_resources_spec.rb +0 -41
- data/spec/public/router/resource_spec.rb +0 -37
- data/spec/public/router/resources_spec.rb +0 -82
- data/spec/public/router/spec_helper.rb +0 -90
- data/spec/public/router/special_spec.rb +0 -61
- data/spec/public/router/string_spec.rb +0 -61
- data/spec/public/session/controllers/sessions.rb +0 -56
- data/spec/public/session/cookie_session_spec.rb +0 -73
- data/spec/public/session/memcached_session_spec.rb +0 -31
- data/spec/public/session/memory_session_spec.rb +0 -28
- data/spec/public/session/multiple_sessions_spec.rb +0 -74
- data/spec/public/session/no_session_spec.rb +0 -12
- data/spec/public/session/session_spec.rb +0 -106
- data/spec/public/template/template_spec.rb +0 -104
- data/spec/public/template/templates/error.html.erb +0 -2
- data/spec/public/template/templates/template.html.erb +0 -1
- data/spec/public/template/templates/template.html.myt +0 -1
- data/spec/public/test/controller_matchers_spec.rb +0 -412
- data/spec/public/test/controllers/controller_assertion_mock.rb +0 -7
- data/spec/public/test/controllers/dispatch_controller.rb +0 -11
- data/spec/public/test/controllers/spec_helper_controller.rb +0 -39
- data/spec/public/test/multipart_request_helper_spec.rb +0 -159
- data/spec/public/test/multipart_upload_text_file.txt +0 -1
- data/spec/public/test/request_helper_spec.rb +0 -269
- data/spec/public/test/route_helper_spec.rb +0 -78
- data/spec/public/test/route_matchers_spec.rb +0 -166
- data/spec/public/test/view_helper_spec.rb +0 -96
- data/spec/public/test/view_matchers_spec.rb +0 -183
- data/spec/spec_helper.rb +0 -121
@@ -1,13 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
-
|
3
|
-
describe Merb::Config do
|
4
|
-
it "should apply environment from the command line option --environment" do
|
5
|
-
Merb.start %w( --environment performance_testing )
|
6
|
-
Merb.environment.should == "performance_testing"
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should apply environment from the command line option -e" do
|
10
|
-
Merb.start %w( -e selenium )
|
11
|
-
Merb.environment.should == "selenium"
|
12
|
-
end
|
13
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
-
|
3
|
-
describe Merb, '#orm' do
|
4
|
-
it "it should be :none by default" do
|
5
|
-
Merb.orm.should == :none
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should be changeable" do
|
9
|
-
Merb.orm = :datamapper
|
10
|
-
Merb.orm.should == :datamapper
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
describe Merb, '#test_framework' do
|
15
|
-
it "it should be :rspec by default" do
|
16
|
-
Merb.test_framework.should == :rspec
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should be changeable" do
|
20
|
-
Merb.test_framework = :test_unit
|
21
|
-
Merb.test_framework.should == :test_unit
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe Merb, '#template_engine' do
|
26
|
-
it "it should be :erb by default" do
|
27
|
-
Merb.template_engine.should == :erb
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should be changeable" do
|
31
|
-
Merb.template_engine = :haml
|
32
|
-
Merb.template_engine.should == :haml
|
33
|
-
end
|
34
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
@@ -1,159 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
|
3
|
-
describe "Kernel#require" do
|
4
|
-
before do
|
5
|
-
@logger = StringIO.new
|
6
|
-
Merb.logger = Merb::Logger.new(@logger)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should be able to require and throw a useful error message" do
|
10
|
-
Kernel.stub!(:require).with("redcloth").and_raise(LoadError)
|
11
|
-
Merb.logger.should_receive(:error!).with("foo")
|
12
|
-
Kernel.rescue_require("redcloth", "foo")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
describe "Kernel#caller" do
|
19
|
-
it "should be able to determine caller info" do
|
20
|
-
__caller_info__.should be_kind_of(Array)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should be able to get caller lines" do
|
24
|
-
i = 0
|
25
|
-
__caller_lines__(__caller_info__[0], __caller_info__[1], 4) { i += 1 }
|
26
|
-
i.should == 9
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
describe "Kernel#extract_options_from_args!" do
|
33
|
-
it "should extract options from args" do
|
34
|
-
args = ["foo", "bar", {:baz => :bar}]
|
35
|
-
Kernel.extract_options_from_args!(args).should == {:baz => :bar}
|
36
|
-
args.should == ["foo", "bar"]
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
describe "Kernel#debugger" do
|
43
|
-
it "should throw a useful error if there's no debugger" do
|
44
|
-
Merb.logger.should_receive(:info!).with "\n***** Debugger requested, but was not " +
|
45
|
-
"available: Start server with --debugger " +
|
46
|
-
"to enable *****\n"
|
47
|
-
Kernel.debugger
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
|
52
|
-
describe "Kernel#load_dependency" do
|
53
|
-
before :each do
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
it "DOES NOT add dependency to the list" do
|
58
|
-
lambda {
|
59
|
-
begin
|
60
|
-
load_dependency("rspec", ">= 1.1.2")
|
61
|
-
rescue LoadError => e
|
62
|
-
# some people may have no RSpec gem
|
63
|
-
end
|
64
|
-
}.should_not change(Merb::BootLoader::Dependencies.dependencies, :size)
|
65
|
-
end
|
66
|
-
|
67
|
-
it "DOES NOT defer load to boot loader run and requires it right away" do
|
68
|
-
self.should_receive(:require)
|
69
|
-
|
70
|
-
begin
|
71
|
-
load_dependency("rspec", ">= 1.1.2")
|
72
|
-
rescue LoadError => e
|
73
|
-
# some people may have no RSpec gem
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
it "logs on events using info level" do
|
78
|
-
self.should_receive(:require)
|
79
|
-
Merb.logger.should_receive(:info!)
|
80
|
-
|
81
|
-
begin
|
82
|
-
load_dependency("rspec", ">= 1.1.2")
|
83
|
-
rescue LoadError => e
|
84
|
-
# some people may have no RSpec gem
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
describe "Kernel#dependencies" do
|
92
|
-
it "deferres load of dependencies given as String" do
|
93
|
-
self.should_receive(:dependency).with("hpricot").and_return(true)
|
94
|
-
|
95
|
-
begin
|
96
|
-
dependencies("hpricot")
|
97
|
-
rescue LoadError => e
|
98
|
-
# sanity check, should never happen
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
it "deferres load of dependencies given as Array" do
|
103
|
-
self.should_receive(:dependency).with("hpricot").and_return(true)
|
104
|
-
self.should_receive(:dependency).with("rake").and_return(true)
|
105
|
-
|
106
|
-
begin
|
107
|
-
dependencies("hpricot", "rake")
|
108
|
-
rescue LoadError => e
|
109
|
-
# sanity check, should never happen
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
it "deferres load of dependencies given as Hash" do
|
114
|
-
self.should_receive(:dependency).with("hpricot", "0.6").and_return(true)
|
115
|
-
self.should_receive(:dependency).with("rake", "0.8.1").and_return(true)
|
116
|
-
|
117
|
-
begin
|
118
|
-
dependencies("hpricot" => "0.6", "rake" => "0.8.1")
|
119
|
-
rescue LoadError => e
|
120
|
-
# sanity check, should never happen
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
describe "Kernel#load_dependencies" do
|
128
|
-
it "loads dependencies given as String immediately" do
|
129
|
-
self.should_receive(:load_dependency).with("hpricot").and_return(true)
|
130
|
-
|
131
|
-
begin
|
132
|
-
load_dependencies("hpricot")
|
133
|
-
rescue LoadError => e
|
134
|
-
# sanity check, should never happen
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
it "loads dependencies given as Array immediately" do
|
139
|
-
self.should_receive(:load_dependency).with("hpricot").and_return(true)
|
140
|
-
self.should_receive(:load_dependency).with("rake").and_return(true)
|
141
|
-
|
142
|
-
begin
|
143
|
-
load_dependencies("hpricot", "rake")
|
144
|
-
rescue LoadError => e
|
145
|
-
# sanity check, should never happen
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
it "loads dependencies given as Hash immediately" do
|
150
|
-
self.should_receive(:load_dependency).with("hpricot", "0.6").and_return(true)
|
151
|
-
self.should_receive(:load_dependency).with("rake", "0.8.1").and_return(true)
|
152
|
-
|
153
|
-
begin
|
154
|
-
load_dependencies("hpricot" => "0.6", "rake" => "0.8.1")
|
155
|
-
rescue LoadError => e
|
156
|
-
# sanity check, should never happen
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
-
|
3
|
-
describe Merb::BootLoader::RackUpApplication do
|
4
|
-
|
5
|
-
it "should default to rack config (rack.rb)" do
|
6
|
-
options = {:merb_root => File.dirname(__FILE__) / 'fixture'}
|
7
|
-
Merb::Config.setup(options)
|
8
|
-
app = Merb::BootLoader::RackUpApplication.run
|
9
|
-
app.class.should == Merb::Rack::Static
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should use rackup config that we specified" do
|
13
|
-
options = {:rackup => File.dirname(__FILE__) / 'fixture' / 'config' / 'black_hole.rb'}
|
14
|
-
Merb::Config.setup(options)
|
15
|
-
app = Merb::BootLoader::RackUpApplication.run
|
16
|
-
app.class.should == Rack::Adapter::BlackHole
|
17
|
-
|
18
|
-
env = Rack::MockRequest.env_for("/black_hole")
|
19
|
-
status, header, body = app.call(env)
|
20
|
-
status.should == 200
|
21
|
-
header.should == { "Content-Type" => "text/plain" }
|
22
|
-
body.should == ""
|
23
|
-
end
|
24
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class Exceptions < Application
|
2
|
-
|
3
|
-
attr_reader :handler
|
4
|
-
|
5
|
-
# handle NotFound exceptions (404)
|
6
|
-
|
7
|
-
def not_found
|
8
|
-
@handler = :not_found
|
9
|
-
render :format => :html
|
10
|
-
end
|
11
|
-
|
12
|
-
# handle NotAcceptable exceptions (406)
|
13
|
-
|
14
|
-
def not_acceptable
|
15
|
-
@handler = :not_acceptable
|
16
|
-
render "Handled by: not_acceptable"
|
17
|
-
end
|
18
|
-
|
19
|
-
# # Any client error (400 series)
|
20
|
-
def client_error
|
21
|
-
@handler = :client_error
|
22
|
-
render "Handled by: client_error"
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
<div id="container">
|
2
|
-
<div id="header-container">
|
3
|
-
<img src="/images/merb.jpg">
|
4
|
-
<!-- <h1>Mongrel + Erb</h1> -->
|
5
|
-
<h2>pocket rocket web framework</h2>
|
6
|
-
<hr />
|
7
|
-
</div>
|
8
|
-
|
9
|
-
<div id="left-container">
|
10
|
-
<h3>Exception:</h3>
|
11
|
-
<p><%= params[:exception] %></p>
|
12
|
-
</div>
|
13
|
-
|
14
|
-
<div id="main-container">
|
15
|
-
<h3>Why am I seeing this page?</h3>
|
16
|
-
<p>
|
17
|
-
An unexpected "client error" has occurred. That means something in your request
|
18
|
-
was not allowed, but the server does not have any more specific information.
|
19
|
-
</p>
|
20
|
-
|
21
|
-
<h3>Where can I find help?</h3>
|
22
|
-
<p>If you have any questions or if you can't figure something out, please take a
|
23
|
-
look at our <a href="http://merb.devjavu.com/"> project development page</a> or,
|
24
|
-
feel free to come chat at irc.freenode.net, channel #merb.</p>
|
25
|
-
|
26
|
-
<h3>How do I edit this page?</h3>
|
27
|
-
<p>You can change what people see when this happens byy editing <tt>app/views/exceptions/not_found.html.erb</tt>.</p>
|
28
|
-
|
29
|
-
</div>
|
30
|
-
|
31
|
-
<div id="footer-container">
|
32
|
-
<hr />
|
33
|
-
<div class="left"></div>
|
34
|
-
<div class="right">© 2008 the merb dev team</div>
|
35
|
-
<p> </p>
|
36
|
-
</div>
|
37
|
-
</div>
|
@@ -1,216 +0,0 @@
|
|
1
|
-
<html>
|
2
|
-
<head>
|
3
|
-
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
4
|
-
<title><%= @exception_name %></title>
|
5
|
-
<style type="text/css" media="screen">
|
6
|
-
body {
|
7
|
-
font-family:arial;
|
8
|
-
font-size:11px;
|
9
|
-
}
|
10
|
-
h1 {
|
11
|
-
font-size:48px;
|
12
|
-
letter-spacing:-4px;
|
13
|
-
margin:0;
|
14
|
-
line-height:36px;
|
15
|
-
color:#333;
|
16
|
-
}
|
17
|
-
h1 sup {
|
18
|
-
font-size: 0.5em;
|
19
|
-
}
|
20
|
-
h1 sup.error_500, h1 sup.error_400 {
|
21
|
-
color:#990E05;
|
22
|
-
}
|
23
|
-
h1 sup.error_100, h1 sup.error_200 {
|
24
|
-
color:#00BF10;
|
25
|
-
}
|
26
|
-
h1 sup.error_300 {
|
27
|
-
/* pretty sure you cant 'see' status 300
|
28
|
-
errors but if you could I think they
|
29
|
-
would be blue */
|
30
|
-
color:#1B2099;
|
31
|
-
}
|
32
|
-
h2 {
|
33
|
-
font-size:36px;
|
34
|
-
letter-spacing:-3px;
|
35
|
-
margin:0;
|
36
|
-
line-height:28px;
|
37
|
-
color:#444;
|
38
|
-
}
|
39
|
-
a, a:visited {
|
40
|
-
color:#00BF10;
|
41
|
-
}
|
42
|
-
.internalError {
|
43
|
-
width:800px;
|
44
|
-
margin:50px auto;
|
45
|
-
}
|
46
|
-
.header {
|
47
|
-
border-bottom:10px solid #333;
|
48
|
-
margin-bottom:1px;
|
49
|
-
background-image: url("data:image/gif;base64,R0lGODlhAwADAIAAAP///8zMzCH5BAAAAAAALAAAAAADAAMAAAIEBHIJBQA7");
|
50
|
-
padding:20px;
|
51
|
-
}
|
52
|
-
table.trace {
|
53
|
-
width:100%;
|
54
|
-
font-family:courier, monospace;
|
55
|
-
letter-spacing:-1px;
|
56
|
-
border-collapse: collapse;
|
57
|
-
border-spacing:0;
|
58
|
-
}
|
59
|
-
table.trace tr td{
|
60
|
-
padding:0;
|
61
|
-
height:26px;
|
62
|
-
font-size:13px;
|
63
|
-
vertical-align:middle;
|
64
|
-
}
|
65
|
-
table.trace tr.file{
|
66
|
-
border-top:2px solid #fff;
|
67
|
-
background-color:#F3F3F3;
|
68
|
-
}
|
69
|
-
table.trace tr.source {
|
70
|
-
background-color:#F8F8F8;
|
71
|
-
display:none;
|
72
|
-
}
|
73
|
-
table.trace .open tr.source {
|
74
|
-
display:table-row;
|
75
|
-
}
|
76
|
-
table.trace tr.file td.expand {
|
77
|
-
width:23px;
|
78
|
-
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAIAAABvSEP3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdVJREFUeNqMVL+TwUAYxaRIOlEhlZHGDAUzzOQ61+AqXMV1lJSU7q/QRqm8KFUcJTNn5qJkaPyoKKVz7y4mF8na5Kt29tt9+/Z97/u81+vVQ4r9frdarS6Xi7ETDIZisRjxMGPfmk4niNPpZE+xLAugbPaZ53nzvtfMBe/3+/3dbuehBrAKhZdUKkVAWa9Xsiybv0CPZDJZLr/qa5/BwgwRjYqOKIvFYjQa/aNommZh0Ww2K5UqzwfoQOPxaLPZ3FAmk0+7lplMpt1u53J5OpBOR0eZEE9wHJfP5zud93g88QhluwWbjW+5VOmKBgKBer3eaDTDYeGBQF8+x7rqIYoiPgixWJazpA6HA+MSxRArkUgMh0M409g8Ho8+9wYxxCqVSq1W26EDHGM2m4HOHQrEc38f/Yn7cLmlIRhBENzcx8cVRZnPZ/YUep2BWkjTIfA+PKVpZAXR5QxsjiqCKvGEqqp443w+0dvy17swqD0HB3S73V5PpkNg1qBqt8kwGCjmPkinM0QJbIoEa7U6UG6ToVgs4V9G2g0ESoP5Aoi7KYX5oCgf8IKbkvn9/mr1LRQKESamzgJy0g0tSZIuB3nuGqRU9Vv9C4sKkUhEkp4soxvxI8AAhWrrtXa3X8EAAAAASUVORK5CYII=);
|
79
|
-
background-position:top left;
|
80
|
-
background-repeat:no-repeat;
|
81
|
-
}
|
82
|
-
table.trace .open tr.file td.expand {
|
83
|
-
width:19px;
|
84
|
-
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXZJREFUeNrslK1ywkAUhcMOBomEOiSdqLxEBJX0NaijOsjyHGGmCGyQQYaiiiw4gktkcOmZbpsuuzQ/M5XnqJ2d3S/n3nM3rTzPLUP7/Tt0+pLcGQwG3W53OLyHzPMtjYL7q9UqSRLrD4E1Gj1orCvKYuFHUWTVkOM44/HjDcp8/lL4r6NerzeZPMm1KFw0QkDn83m5fP2lHA4fNQvRtNvtjsfDd0WzmSfb2e/fdTqdOvdh/HLJZLOn0+d2HJ+KRGzbdl23EpFlmed5cp2maRzHQq1lvQ5KMi6EUZBGfup6E1pTfd+vrGW7jbQ2C9hTt9BpqNyIWaAwAy6xg2eBz5iRC/NomiZhGN5sqmnkauo0BUGgVQoBjQ80oCACgNQdZHfTYBkF2mxCtWWAqunWpahxIDUt3QYUxIFQpJHyIWpXjinabKbbwItMHT+NyjchrP8QKaSQQgoppJBCCimkkEIKKaSQQgoppJBCCimkkEIKKaSo+hRgAEFD17X08O2NAAAAAElFTkSuQmCC);
|
85
|
-
background-position:top left;
|
86
|
-
background-repeat:no-repeat;
|
87
|
-
}
|
88
|
-
table.trace tr.source td.collapse {
|
89
|
-
width:19px;
|
90
|
-
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrs0zFygkAUBmBlUkgJHdABlQwVkVJKKUxBYWbkALTxMJwhltyDFkss03IF8pudIcwaDaDl/6pd2P327b7d+eHwMXs4lNkzggoVKlSoUKFChQoVKlSoUKFChQoVKlSoUKFChQqVEYqm6ft9+qiSJEkYho7jTlcw2fd9NOI4nq4gEdFwXXe1Cqco63VkWVbXRTqLhTpOwQRpF7quR1E0TgGhqvLKUFCyoQqG/rks3O6kZKW/eRFpevOCoGTXVTcMQ5EyxyDEkML1c5RzuZOICIyXqn7JBVez6282MWrx731HOv2qB8Hri2lamNk0DfpVVdV1Peodappmmua8bdvzuc7zfNprzrLMth1FnGh/X8MjCAIQv/cFz/+65PcDh7rbvYv2ZUfdj+PxsyzLgVl0hKwgTqeqKApx2LeOc7t98zyv/1FWOgvx9RPii23bmL9cetJ8Ed8CDAC6aFW8bCzFhwAAAABJRU5ErkJggg==);
|
91
|
-
background-position:bottom left;
|
92
|
-
background-repeat:no-repeat;
|
93
|
-
background-color:#6F706F;
|
94
|
-
}
|
95
|
-
table.trace tr td.path {
|
96
|
-
padding-left:10px;
|
97
|
-
}
|
98
|
-
table.trace tr td.code {
|
99
|
-
padding-left:35px;
|
100
|
-
white-space: pre;
|
101
|
-
line-height:9px;
|
102
|
-
padding-bottom:10px;
|
103
|
-
}
|
104
|
-
table.trace tr td.code em {
|
105
|
-
font-weight:bold;
|
106
|
-
color:#00BF10;
|
107
|
-
}
|
108
|
-
table.trace tr td.code a {
|
109
|
-
width: 20px;
|
110
|
-
float: left;
|
111
|
-
}
|
112
|
-
table.trace tr td.code .more {
|
113
|
-
color:#666;
|
114
|
-
}
|
115
|
-
table.trace tr td.line {
|
116
|
-
width:30px;
|
117
|
-
text-align:right;
|
118
|
-
padding-right:4px;
|
119
|
-
}
|
120
|
-
.footer {
|
121
|
-
margin-top:5px;
|
122
|
-
font-size:11px;
|
123
|
-
color:#444;
|
124
|
-
text-align:right;
|
125
|
-
}
|
126
|
-
</style>
|
127
|
-
</head>
|
128
|
-
<body>
|
129
|
-
<div class="internalError">
|
130
|
-
|
131
|
-
<div class="header">
|
132
|
-
<h1><%= @exception_name %> <sup class="error_<%= @exception.class.status %>"><%= @exception.class.status %></sup></h1>
|
133
|
-
<% if show_details = ::Merb::Config[:exception_details] -%>
|
134
|
-
<h2><%= @exception.message %></h2>
|
135
|
-
<% else -%>
|
136
|
-
<h2>Sorry about that...</h2>
|
137
|
-
<% end -%>
|
138
|
-
<h3>Parameters</h3>
|
139
|
-
<ul>
|
140
|
-
<% params[:original_params].each do |param, value| %>
|
141
|
-
<li><strong><%= param %>:</strong> <%= value.inspect %></li>
|
142
|
-
<% end %>
|
143
|
-
<%= "<li>None</li>" if params[:original_params].empty? %>
|
144
|
-
</ul>
|
145
|
-
|
146
|
-
<h3>Session</h3>
|
147
|
-
<ul>
|
148
|
-
<% params[:original_session].each do |param, value| %>
|
149
|
-
<li><strong><%= param %>:</strong> <%= value.inspect %></li>
|
150
|
-
<% end %>
|
151
|
-
<%= "<li>None</li>" if params[:original_session].empty? %>
|
152
|
-
</ul>
|
153
|
-
|
154
|
-
<h3>Cookies</h3>
|
155
|
-
<ul>
|
156
|
-
<% params[:original_cookies].each do |param, value| %>
|
157
|
-
<li><strong><%= param %>:</strong> <%= value.inspect %></li>
|
158
|
-
<% end %>
|
159
|
-
<%= "<li>None</li>" if params[:original_cookies].empty? %>
|
160
|
-
</ul>
|
161
|
-
</div>
|
162
|
-
|
163
|
-
<% if show_details %>
|
164
|
-
<table class="trace">
|
165
|
-
<% @exception.backtrace.each_with_index do |line, index| %>
|
166
|
-
<tbody class="close">
|
167
|
-
<tr class="file">
|
168
|
-
<td class="expand">
|
169
|
-
</td>
|
170
|
-
<td class="path">
|
171
|
-
<%= (line.match(/^([^:]+)/)[1] rescue 'unknown').sub(/\/((opt|usr)\/local\/lib\/(ruby\/)?(gems\/)?(1.8\/)?(gems\/)?|.+\/app\/)/, '') %>
|
172
|
-
<% unless line.match(/\.erb:/) %>
|
173
|
-
in "<strong><%= line.match(/:in `(.+)'$/)[1] rescue '?' %></strong>"
|
174
|
-
<% else %>
|
175
|
-
(<strong>ERB Template</strong>)
|
176
|
-
<% end %>
|
177
|
-
</td>
|
178
|
-
<td class="line">
|
179
|
-
<a href="txmt://open?url=file://<%=file = (line.match(/^([^:]+)/)[1] rescue 'unknown')%>&line=<%= lineno = line.match(/:([0-9]+):/)[1] rescue '?' %>"><%=lineno%></a>
|
180
|
-
</td>
|
181
|
-
</tr>
|
182
|
-
<tr class="source">
|
183
|
-
<td class="collapse">
|
184
|
-
</td>
|
185
|
-
<td class="code" colspan="2"><% (__caller_lines__(file, lineno, 5) rescue []).each do |llineno, lcode, lcurrent| %>
|
186
|
-
<a href="txmt://open?url=file://<%=file%>&line=<%=llineno%>"><%= llineno %></a><%='<em>' if llineno==lineno.to_i %><%= lcode.size > 90 ? Erubis::XmlHelper.html_escape(lcode[0..90])+'<span class="more">......</span>' : Erubis::XmlHelper.html_escape(lcode) %><%='</em>' if llineno==lineno.to_i %>
|
187
|
-
<% end %>
|
188
|
-
|
189
|
-
</td>
|
190
|
-
</tr>
|
191
|
-
</tbody>
|
192
|
-
<% end %>
|
193
|
-
</table>
|
194
|
-
<script type="text/javascript" charset="utf-8">
|
195
|
-
// swop the open & closed classes
|
196
|
-
els = document.getElementsByTagName('td');
|
197
|
-
for(i=0; i<els.length; i++){
|
198
|
-
if(els[i].className=='expand' || els[i].className=='collapse'){
|
199
|
-
els[i].onclick = function(e){
|
200
|
-
tbody = this.parentNode.parentNode;
|
201
|
-
if(tbody.className=='open'){
|
202
|
-
tbody.className='closed';
|
203
|
-
}else{
|
204
|
-
tbody.className='open';
|
205
|
-
}
|
206
|
-
}
|
207
|
-
}
|
208
|
-
}
|
209
|
-
</script>
|
210
|
-
<% end %>
|
211
|
-
<div class="footer">
|
212
|
-
lots of love, from <a href="#">merb</a>
|
213
|
-
</div>
|
214
|
-
</div>
|
215
|
-
</body>
|
216
|
-
</html>
|