thorero 0.9.4.4 → 0.9.4.5
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/LICENSE +1 -1
- data/README +21 -0
- data/Rakefile +275 -108
- data/TODO +0 -0
- data/bin/merb +12 -0
- data/bin/merb-specs +5 -0
- data/docs/bootloading.dox +58 -0
- data/docs/documentation_standards +40 -0
- 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 +51 -0
- data/lib/merb-core.rb +603 -0
- data/lib/merb-core/autoload.rb +32 -0
- data/lib/merb-core/bootloader.rb +708 -0
- data/lib/merb-core/config.rb +303 -0
- data/lib/merb-core/constants.rb +43 -0
- data/lib/merb-core/controller/abstract_controller.rb +578 -0
- data/lib/merb-core/controller/exceptions.rb +302 -0
- data/lib/merb-core/controller/merb_controller.rb +256 -0
- data/lib/merb-core/controller/mime.rb +106 -0
- data/lib/merb-core/controller/mixins/authentication.rb +87 -0
- data/lib/merb-core/controller/mixins/controller.rb +290 -0
- data/lib/merb-core/controller/mixins/render.rb +481 -0
- data/lib/merb-core/controller/mixins/responder.rb +472 -0
- data/lib/merb-core/controller/template.rb +254 -0
- data/lib/merb-core/core_ext.rb +8 -0
- data/lib/merb-core/core_ext/kernel.rb +319 -0
- data/lib/merb-core/dispatch/cookies.rb +91 -0
- data/lib/merb-core/dispatch/dispatcher.rb +278 -0
- data/lib/merb-core/dispatch/exceptions.html.erb +303 -0
- data/lib/merb-core/dispatch/request.rb +603 -0
- data/lib/merb-core/dispatch/router.rb +179 -0
- data/lib/merb-core/dispatch/router/behavior.rb +867 -0
- data/lib/merb-core/dispatch/router/cached_proc.rb +52 -0
- data/lib/merb-core/dispatch/router/route.rb +321 -0
- data/lib/merb-core/dispatch/session.rb +78 -0
- data/lib/merb-core/dispatch/session/cookie.rb +168 -0
- data/lib/merb-core/dispatch/session/memcached.rb +184 -0
- data/lib/merb-core/dispatch/session/memory.rb +241 -0
- data/lib/merb-core/dispatch/worker.rb +28 -0
- data/lib/merb-core/gem_ext/erubis.rb +77 -0
- data/lib/{extlib → merb-core}/logger.rb +2 -2
- data/lib/merb-core/plugins.rb +59 -0
- data/lib/merb-core/rack.rb +21 -0
- data/lib/merb-core/rack/adapter.rb +44 -0
- data/lib/merb-core/rack/adapter/ebb.rb +25 -0
- data/lib/merb-core/rack/adapter/evented_mongrel.rb +26 -0
- data/lib/merb-core/rack/adapter/fcgi.rb +17 -0
- data/lib/merb-core/rack/adapter/irb.rb +118 -0
- data/lib/merb-core/rack/adapter/mongrel.rb +26 -0
- data/lib/merb-core/rack/adapter/runner.rb +28 -0
- data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +26 -0
- data/lib/merb-core/rack/adapter/thin.rb +39 -0
- data/lib/merb-core/rack/adapter/thin_turbo.rb +24 -0
- data/lib/merb-core/rack/adapter/webrick.rb +36 -0
- data/lib/merb-core/rack/application.rb +18 -0
- data/lib/merb-core/rack/handler/mongrel.rb +97 -0
- data/lib/merb-core/rack/middleware.rb +26 -0
- data/lib/merb-core/rack/middleware/path_prefix.rb +31 -0
- data/lib/merb-core/rack/middleware/profiler.rb +19 -0
- data/lib/merb-core/rack/middleware/static.rb +45 -0
- data/lib/merb-core/server.rb +252 -0
- data/lib/merb-core/tasks/audit.rake +68 -0
- data/lib/merb-core/tasks/merb.rb +1 -0
- data/lib/merb-core/tasks/merb_rake_helper.rb +12 -0
- data/lib/merb-core/test.rb +11 -0
- data/lib/merb-core/test/helpers.rb +9 -0
- data/lib/merb-core/test/helpers/controller_helper.rb +8 -0
- data/lib/merb-core/test/helpers/multipart_request_helper.rb +175 -0
- data/lib/merb-core/test/helpers/request_helper.rb +344 -0
- data/lib/merb-core/test/helpers/route_helper.rb +33 -0
- data/lib/merb-core/test/helpers/view_helper.rb +121 -0
- data/lib/merb-core/test/matchers.rb +9 -0
- data/lib/merb-core/test/matchers/controller_matchers.rb +319 -0
- data/lib/merb-core/test/matchers/route_matchers.rb +136 -0
- data/lib/merb-core/test/matchers/view_matchers.rb +335 -0
- data/lib/merb-core/test/run_specs.rb +47 -0
- data/lib/merb-core/test/tasks/spectasks.rb +68 -0
- data/lib/merb-core/test/test_ext/hpricot.rb +32 -0
- data/lib/merb-core/test/test_ext/object.rb +14 -0
- data/lib/merb-core/test/test_ext/string.rb +14 -0
- data/lib/merb-core/vendor/facets.rb +2 -0
- data/lib/merb-core/vendor/facets/dictionary.rb +433 -0
- data/lib/merb-core/vendor/facets/inflect.rb +345 -0
- data/lib/merb-core/version.rb +11 -0
- data/spec/private/config/adapter_spec.rb +32 -0
- data/spec/private/config/config_spec.rb +202 -0
- data/spec/private/config/environment_spec.rb +13 -0
- data/spec/private/config/spec_helper.rb +1 -0
- data/spec/private/core_ext/kernel_spec.rb +169 -0
- data/spec/private/dispatch/bootloader_spec.rb +24 -0
- data/spec/private/dispatch/cookies_spec.rb +107 -0
- data/spec/private/dispatch/dispatch_spec.rb +35 -0
- data/spec/private/dispatch/fixture/app/controllers/application.rb +4 -0
- data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +27 -0
- data/spec/private/dispatch/fixture/app/controllers/foo.rb +21 -0
- data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +8 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +37 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +216 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +38 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +40 -0
- data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
- data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +11 -0
- data/spec/private/dispatch/fixture/config/black_hole.rb +12 -0
- data/spec/private/dispatch/fixture/config/environments/development.rb +6 -0
- data/spec/private/dispatch/fixture/config/environments/production.rb +5 -0
- data/spec/private/dispatch/fixture/config/environments/test.rb +6 -0
- data/spec/private/dispatch/fixture/config/init.rb +45 -0
- data/spec/private/dispatch/fixture/config/rack.rb +11 -0
- data/spec/private/dispatch/fixture/config/router.rb +35 -0
- data/spec/private/dispatch/fixture/log/merb_test.log +1874 -0
- data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
- data/spec/private/dispatch/fixture/public/merb.fcgi +4 -0
- data/spec/private/dispatch/fixture/public/stylesheets/master.css +119 -0
- data/spec/private/dispatch/route_params_spec.rb +24 -0
- data/spec/private/dispatch/session_mixin_spec.rb +47 -0
- data/spec/private/dispatch/spec_helper.rb +1 -0
- data/spec/private/plugins/plugin_spec.rb +166 -0
- data/spec/private/rack/application_spec.rb +49 -0
- data/spec/private/router/behavior_spec.rb +60 -0
- data/spec/private/router/fixture/log/merb_test.log +139 -0
- data/spec/private/router/route_spec.rb +414 -0
- data/spec/private/router/router_spec.rb +175 -0
- data/spec/private/vendor/facets/plural_spec.rb +564 -0
- data/spec/private/vendor/facets/singular_spec.rb +489 -0
- data/spec/public/DEFINITIONS +11 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/cousins.rb +41 -0
- data/spec/public/abstract_controller/controllers/display.rb +54 -0
- data/spec/public/abstract_controller/controllers/filters.rb +193 -0
- data/spec/public/abstract_controller/controllers/helpers.rb +41 -0
- data/spec/public/abstract_controller/controllers/partial.rb +121 -0
- data/spec/public/abstract_controller/controllers/render.rb +113 -0
- data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/helpers/capture_eq/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/helpers/capture_with_args/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/layout/alt.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/layout/custom.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +1 -0
- 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 +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_two_throw_contents/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
- data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +1 -0
- data/spec/public/abstract_controller/display_spec.rb +33 -0
- data/spec/public/abstract_controller/filter_spec.rb +106 -0
- data/spec/public/abstract_controller/helper_spec.rb +21 -0
- data/spec/public/abstract_controller/partial_spec.rb +61 -0
- data/spec/public/abstract_controller/render_spec.rb +90 -0
- data/spec/public/abstract_controller/spec_helper.rb +31 -0
- data/spec/public/boot_loader/boot_loader_spec.rb +33 -0
- data/spec/public/boot_loader/spec_helper.rb +1 -0
- data/spec/public/controller/authentication_spec.rb +103 -0
- data/spec/public/controller/base_spec.rb +36 -0
- data/spec/public/controller/controllers/authentication.rb +45 -0
- data/spec/public/controller/controllers/base.rb +36 -0
- data/spec/public/controller/controllers/display.rb +118 -0
- data/spec/public/controller/controllers/redirect.rb +30 -0
- data/spec/public/controller/controllers/responder.rb +93 -0
- data/spec/public/controller/controllers/url.rb +7 -0
- data/spec/public/controller/controllers/views/layout/custom.html.erb +1 -0
- data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +1 -0
- data/spec/public/controller/controllers/views/layout/custom_arg.json.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.xml.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/no_layout.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +1 -0
- data/spec/public/controller/display_spec.rb +84 -0
- data/spec/public/controller/redirect_spec.rb +27 -0
- data/spec/public/controller/responder_spec.rb +163 -0
- data/spec/public/controller/spec_helper.rb +11 -0
- data/spec/public/controller/url_spec.rb +180 -0
- data/spec/public/core/merb_core_spec.rb +45 -0
- data/spec/public/core_ext/class_spec.rb +91 -0
- data/spec/public/core_ext/fixtures/core_ext_dependency.rb +2 -0
- data/spec/public/core_ext/kernel_spec.rb +9 -0
- data/spec/public/core_ext/spec_helper.rb +1 -0
- data/spec/public/directory_structure/directory/app/controllers/application.rb +3 -0
- data/spec/public/directory_structure/directory/app/controllers/base.rb +13 -0
- data/spec/public/directory_structure/directory/app/controllers/custom.rb +19 -0
- data/spec/public/directory_structure/directory/app/views/base/template.html.erb +1 -0
- data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +1 -0
- data/spec/public/directory_structure/directory/config/router.rb +3 -0
- data/spec/public/directory_structure/directory/log/merb_test.log +562 -0
- data/spec/public/directory_structure/directory_spec.rb +44 -0
- data/spec/public/logger/logger_spec.rb +181 -0
- data/spec/public/logger/spec_helper.rb +1 -0
- data/spec/public/reloading/directory/app/controllers/application.rb +3 -0
- data/spec/public/reloading/directory/app/controllers/reload.rb +6 -0
- data/spec/public/reloading/directory/config/init.rb +2 -0
- data/spec/public/reloading/directory/log/merb_test.log +138 -0
- data/spec/public/reloading/reload_spec.rb +103 -0
- data/spec/public/request/multipart_spec.rb +41 -0
- data/spec/public/request/request_spec.rb +228 -0
- data/spec/public/router/default_spec.rb +21 -0
- data/spec/public/router/deferred_spec.rb +22 -0
- data/spec/public/router/fixation_spec.rb +27 -0
- data/spec/public/router/fixture/log/merb_test.log +1556 -0
- data/spec/public/router/namespace_spec.rb +113 -0
- data/spec/public/router/nested_matches_spec.rb +97 -0
- data/spec/public/router/nested_resources_spec.rb +41 -0
- data/spec/public/router/resource_spec.rb +37 -0
- data/spec/public/router/resources_spec.rb +82 -0
- data/spec/public/router/spec_helper.rb +90 -0
- data/spec/public/router/special_spec.rb +61 -0
- data/spec/public/router/string_spec.rb +61 -0
- data/spec/public/template/template_spec.rb +104 -0
- data/spec/public/template/templates/error.html.erb +2 -0
- data/spec/public/template/templates/template.html.erb +1 -0
- data/spec/public/template/templates/template.html.myt +1 -0
- data/spec/public/test/controller_matchers_spec.rb +402 -0
- data/spec/public/test/controllers/controller_assertion_mock.rb +7 -0
- data/spec/public/test/controllers/dispatch_controller.rb +11 -0
- data/spec/public/test/controllers/spec_helper_controller.rb +38 -0
- data/spec/public/test/multipart_request_helper_spec.rb +159 -0
- data/spec/public/test/multipart_upload_text_file.txt +1 -0
- data/spec/public/test/request_helper_spec.rb +221 -0
- data/spec/public/test/route_helper_spec.rb +71 -0
- data/spec/public/test/route_matchers_spec.rb +162 -0
- data/spec/public/test/view_helper_spec.rb +96 -0
- data/spec/public/test/view_matchers_spec.rb +183 -0
- data/spec/spec_helper.rb +68 -0
- metadata +493 -41
- data/README.txt +0 -3
- data/lib/extlib.rb +0 -32
- data/lib/extlib/assertions.rb +0 -8
- data/lib/extlib/blank.rb +0 -42
- data/lib/extlib/class.rb +0 -175
- data/lib/extlib/hash.rb +0 -410
- data/lib/extlib/hook.rb +0 -366
- data/lib/extlib/inflection.rb +0 -141
- data/lib/extlib/lazy_array.rb +0 -106
- data/lib/extlib/mash.rb +0 -143
- data/lib/extlib/module.rb +0 -37
- data/lib/extlib/object.rb +0 -165
- data/lib/extlib/object_space.rb +0 -13
- data/lib/extlib/pathname.rb +0 -5
- data/lib/extlib/pooling.rb +0 -233
- data/lib/extlib/rubygems.rb +0 -38
- data/lib/extlib/simple_set.rb +0 -39
- data/lib/extlib/string.rb +0 -132
- data/lib/extlib/struct.rb +0 -8
- data/lib/extlib/tasks/release.rb +0 -9
- data/lib/extlib/time.rb +0 -12
- data/lib/extlib/version.rb +0 -3
- data/lib/extlib/virtual_file.rb +0 -10
@@ -0,0 +1,13 @@
|
|
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
|
@@ -0,0 +1 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
@@ -0,0 +1,169 @@
|
|
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
|
+
__caller_lines__(__caller_info__[0], __caller_info__[1], 4).length.should == 9
|
25
|
+
__caller_lines__(__caller_info__[0], __caller_info__[1], 4).should be_kind_of(Array)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
describe "Kernel#extract_options_from_args!" do
|
32
|
+
it "should extract options from args" do
|
33
|
+
args = ["foo", "bar", {:baz => :bar}]
|
34
|
+
Kernel.extract_options_from_args!(args).should == {:baz => :bar}
|
35
|
+
args.should == ["foo", "bar"]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
describe "Kernel#debugger" do
|
42
|
+
it "should throw a useful error if there's no debugger" do
|
43
|
+
Merb.logger.should_receive(:info!).with "\n***** Debugger requested, but was not " +
|
44
|
+
"available: Start server with --debugger " +
|
45
|
+
"to enable *****\n"
|
46
|
+
Kernel.debugger
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
describe "Kernel#load_dependency" do
|
52
|
+
before :each do
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
it "DOES NOT add dependency to the list" do
|
57
|
+
lambda {
|
58
|
+
begin
|
59
|
+
load_dependency("rspec", ">= 1.1.2")
|
60
|
+
rescue LoadError => e
|
61
|
+
# some people may have no RSpec gem
|
62
|
+
end
|
63
|
+
}.should_not change(Merb::BootLoader::Dependencies.dependencies, :size)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "DOES NOT defer load to boot loader run and requires it right away" do
|
67
|
+
self.should_receive(:require)
|
68
|
+
|
69
|
+
begin
|
70
|
+
load_dependency("rspec", ">= 1.1.2")
|
71
|
+
rescue LoadError => e
|
72
|
+
# some people may have no RSpec gem
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
it "logs on events using info level" do
|
77
|
+
self.should_receive(:require)
|
78
|
+
Merb.logger.should_receive(:info!)
|
79
|
+
|
80
|
+
begin
|
81
|
+
load_dependency("rspec", ">= 1.1.2")
|
82
|
+
rescue LoadError => e
|
83
|
+
# some people may have no RSpec gem
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
it "tries to be smart by checking if Merb is frozen" do
|
88
|
+
self.should_receive(:require)
|
89
|
+
Merb.should_receive(:frozen?).and_return(true)
|
90
|
+
|
91
|
+
begin
|
92
|
+
load_dependency("merb-core")
|
93
|
+
rescue LoadError => e
|
94
|
+
# some people may have no RSpec gem
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
describe "Kernel#dependencies" do
|
102
|
+
it "deferres load of dependencies given as String" do
|
103
|
+
self.should_receive(:dependency).with("hpricot").and_return(true)
|
104
|
+
|
105
|
+
begin
|
106
|
+
dependencies("hpricot")
|
107
|
+
rescue LoadError => e
|
108
|
+
# sanity check, should never happen
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
it "deferres load of dependencies given as Array" do
|
113
|
+
self.should_receive(:dependency).with("hpricot").and_return(true)
|
114
|
+
self.should_receive(:dependency).with("rake").and_return(true)
|
115
|
+
|
116
|
+
begin
|
117
|
+
dependencies("hpricot", "rake")
|
118
|
+
rescue LoadError => e
|
119
|
+
# sanity check, should never happen
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
it "deferres load of dependencies given as Hash" do
|
124
|
+
self.should_receive(:dependency).with("hpricot", "0.6").and_return(true)
|
125
|
+
self.should_receive(:dependency).with("rake", "0.8.1").and_return(true)
|
126
|
+
|
127
|
+
begin
|
128
|
+
dependencies("hpricot" => "0.6", "rake" => "0.8.1")
|
129
|
+
rescue LoadError => e
|
130
|
+
# sanity check, should never happen
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
describe "Kernel#load_dependencies" do
|
138
|
+
it "loads dependencies given as String immediately" do
|
139
|
+
self.should_receive(:load_dependency).with("hpricot").and_return(true)
|
140
|
+
|
141
|
+
begin
|
142
|
+
load_dependencies("hpricot")
|
143
|
+
rescue LoadError => e
|
144
|
+
# sanity check, should never happen
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
it "loads dependencies given as Array immediately" do
|
149
|
+
self.should_receive(:load_dependency).with("hpricot").and_return(true)
|
150
|
+
self.should_receive(:load_dependency).with("rake").and_return(true)
|
151
|
+
|
152
|
+
begin
|
153
|
+
load_dependencies("hpricot", "rake")
|
154
|
+
rescue LoadError => e
|
155
|
+
# sanity check, should never happen
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
it "loads dependencies given as Hash immediately" do
|
160
|
+
self.should_receive(:load_dependency).with("hpricot", "0.6").and_return(true)
|
161
|
+
self.should_receive(:load_dependency).with("rake", "0.8.1").and_return(true)
|
162
|
+
|
163
|
+
begin
|
164
|
+
load_dependencies("hpricot" => "0.6", "rake" => "0.8.1")
|
165
|
+
rescue LoadError => e
|
166
|
+
# sanity check, should never happen
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
@@ -0,0 +1,24 @@
|
|
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
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
+
Merb.start :environment => 'test'
|
3
|
+
module CookiesSpecModule
|
4
|
+
|
5
|
+
def cookie_time(time)
|
6
|
+
time.gmtime.strftime(Merb::Const::COOKIE_EXPIRATION_FORMAT)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe Merb::Cookies do
|
11
|
+
include CookiesSpecModule
|
12
|
+
|
13
|
+
before do
|
14
|
+
@_cookies = Mash.new
|
15
|
+
@_headers = {}
|
16
|
+
@cookies = Merb::Cookies.new(@_cookies, @_headers)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should respond to []" do
|
20
|
+
@cookies.should respond_to(:[])
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should respond to []=" do
|
24
|
+
@cookies.should respond_to(:[]=)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should respond to delete" do
|
28
|
+
@cookies.should respond_to(:delete)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should accept simple cookies that expire at end of session" do
|
32
|
+
@cookies[:foo] = 'bar'
|
33
|
+
|
34
|
+
@_headers['Set-Cookie'].should == ['foo=bar; path=/;']
|
35
|
+
|
36
|
+
@cookies[:foo].should == 'bar'
|
37
|
+
@cookies['foo'].should == 'bar'
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should accept cookies with expiry dates" do
|
41
|
+
expires = Time.now + 2 * (60*60*24*7)
|
42
|
+
@cookies[:dozen] = {
|
43
|
+
:value => 'twelve',
|
44
|
+
:expires => expires
|
45
|
+
}
|
46
|
+
|
47
|
+
@_headers['Set-Cookie'].should ==
|
48
|
+
["dozen=twelve; expires=%s; path=/;" % cookie_time(expires)]
|
49
|
+
|
50
|
+
@cookies[:dozen].should == 'twelve'
|
51
|
+
@cookies['dozen'].should == 'twelve'
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should accept multiple cookies" do
|
55
|
+
expires = Time.now + 2 * (60*60*24*7)
|
56
|
+
@cookies[:foo] = 'bar'
|
57
|
+
@cookies[:dozen] = {
|
58
|
+
:value => 'twelve',
|
59
|
+
:expires => expires
|
60
|
+
}
|
61
|
+
|
62
|
+
@_headers['Set-Cookie'].should == [
|
63
|
+
'foo=bar; path=/;',
|
64
|
+
"dozen=twelve; expires=%s; path=/;" % cookie_time(expires)
|
65
|
+
]
|
66
|
+
|
67
|
+
@cookies[:dozen].should == 'twelve'
|
68
|
+
@cookies['dozen'].should == 'twelve'
|
69
|
+
@cookies[:foo].should == 'bar'
|
70
|
+
@cookies['foo'].should == 'bar'
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should leave the value unescaped in the current request" do
|
74
|
+
@cookies[:foo] = "100%"
|
75
|
+
@_headers['Set-Cookie'].should == [
|
76
|
+
'foo=100%25; path=/;'
|
77
|
+
]
|
78
|
+
|
79
|
+
@cookies[:foo].should == '100%'
|
80
|
+
@cookies['foo'].should == '100%'
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should give access to currently saved cookies" do
|
84
|
+
@_cookies[:original] = 'accessible'
|
85
|
+
@cookies[:original].should == 'accessible'
|
86
|
+
|
87
|
+
@cookies[:foo] = 'bar'
|
88
|
+
@cookies[:foo].should == 'bar'
|
89
|
+
@cookies[:original].should == 'accessible'
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should overwrite old cookies with new cookies" do
|
93
|
+
@_cookies[:foo] = 'bar'
|
94
|
+
@cookies[:foo].should == 'bar'
|
95
|
+
|
96
|
+
@cookies[:foo] = 'new'
|
97
|
+
@cookies[:foo].should == 'new'
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should allow deleting of cookies" do
|
101
|
+
@_cookies[:foo] = 'bar'
|
102
|
+
@cookies[:foo].should == 'bar'
|
103
|
+
|
104
|
+
@cookies.delete(:foo)
|
105
|
+
@cookies[:foo].should == nil
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
+
require 'rack/mock'
|
3
|
+
require 'stringio'
|
4
|
+
Merb.start :environment => 'test',
|
5
|
+
:merb_root => File.dirname(__FILE__) / 'fixture'
|
6
|
+
|
7
|
+
describe Merb::Dispatcher do
|
8
|
+
|
9
|
+
it "should handle return an Exceptions controller for a bad route request" do
|
10
|
+
env = Rack::MockRequest.env_for("/notreal")
|
11
|
+
Merb::Dispatcher.handle(env).should be_kind_of(Exceptions)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should search for an action matching the specific exception in the Exceptions controller" do
|
15
|
+
env = Rack::MockRequest.env_for("/foo/raise_not_acceptable")
|
16
|
+
env['REQUEST_URI'] = '/foo/raise_not_acceptable'
|
17
|
+
Merb::Dispatcher.handle(env).action_name.should == 'not_acceptable'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should search for actions matching more general exception types if the specific one cannot be found in the Exception controller" do
|
21
|
+
env = Rack::MockRequest.env_for("/foo/raise_conflict")
|
22
|
+
env['REQUEST_URI'] = '/foo/raise_conflict'
|
23
|
+
Merb::Dispatcher.handle(env).action_name.should == 'client_error'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should log the start time of the transaction" do
|
27
|
+
t = Time.now
|
28
|
+
env = Rack::MockRequest.env_for("/notreal")
|
29
|
+
Time.stub!(:now).and_return(t)
|
30
|
+
Merb.logger.should_receive(:info).with("Started request handling: #{t}")
|
31
|
+
|
32
|
+
Merb::Dispatcher.handle(env)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class Exceptions < Application
|
4
|
+
|
5
|
+
attr_reader :handler
|
6
|
+
|
7
|
+
# handle NotFound exceptions (404)
|
8
|
+
|
9
|
+
def not_found
|
10
|
+
@handler = :not_found
|
11
|
+
render :format => :html
|
12
|
+
end
|
13
|
+
|
14
|
+
# handle NotAcceptable exceptions (406)
|
15
|
+
|
16
|
+
def not_acceptable
|
17
|
+
@handler = :not_acceptable
|
18
|
+
render "Handled by: not_acceptable"
|
19
|
+
end
|
20
|
+
|
21
|
+
# # Any client error (400 series)
|
22
|
+
def client_error
|
23
|
+
@handler = :client_error
|
24
|
+
render "Handled by: client_error"
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,37 @@
|
|
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>
|