thorero-core 0.9.4.6
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 +20 -0
- data/README +21 -0
- data/Rakefile +352 -0
- 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/merb-core/logger.rb +202 -0
- 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 +542 -0
data/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2008 Engine Yard Inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
merb-core is a new branch of Merb (also referred to as merb-next or the 0.9 series) which aims to provide a stable, stripped down API for a future Merb 1.0 release.
|
|
2
|
+
|
|
3
|
+
This branch is based off the 0.5 release series but with significant rewrites.
|
|
4
|
+
|
|
5
|
+
Goals of this release:
|
|
6
|
+
|
|
7
|
+
* Stabilize the @public interface methods to provide for a more consistent application development experience.
|
|
8
|
+
* Remove features until nothing except a central application API is left
|
|
9
|
+
* Improve comments on methods using a standard documentation methodology as described in DOCUMENTATION_STANDARDS
|
|
10
|
+
* Separate the tests into two sections... "private" and "public"
|
|
11
|
+
* Public methods are methods tagged with @public that will be part of the standard, stable Merb API
|
|
12
|
+
* Private methods are implementation methods that might
|
|
13
|
+
* Implement a new render API
|
|
14
|
+
* Build more extensions to regain selected features when needed
|
|
15
|
+
|
|
16
|
+
To familiarize yourself with how a merb-core application might look,
|
|
17
|
+
use merb-gen (from merb-more) to generate a few apps:
|
|
18
|
+
$ merb-gen app myapp # a "normal" merb app
|
|
19
|
+
$ merb-gen app myapp --flat # a flattened app
|
|
20
|
+
$ merb-gen app myapp --very-flat # a single-file app
|
|
21
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
require "rake"
|
|
2
|
+
require "rake/clean"
|
|
3
|
+
require "rake/gempackagetask"
|
|
4
|
+
require "rake/rdoctask"
|
|
5
|
+
require "rake/testtask"
|
|
6
|
+
require "spec/rake/spectask"
|
|
7
|
+
require "fileutils"
|
|
8
|
+
require "extlib"
|
|
9
|
+
|
|
10
|
+
def __DIR__
|
|
11
|
+
File.dirname(__FILE__)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
require __DIR__ + "/tools/rakehelp"
|
|
15
|
+
require __DIR__ + "/tools/annotation_extract"
|
|
16
|
+
|
|
17
|
+
include FileUtils
|
|
18
|
+
|
|
19
|
+
require "lib/merb-core/version"
|
|
20
|
+
require "lib/merb-core/test/run_specs"
|
|
21
|
+
require 'lib/merb-core/tasks/merb_rake_helper'
|
|
22
|
+
|
|
23
|
+
##############################################################################
|
|
24
|
+
# Package && release
|
|
25
|
+
##############################################################################
|
|
26
|
+
RUBY_FORGE_PROJECT = "thorero"
|
|
27
|
+
PROJECT_URL = "http://merbivore.com"
|
|
28
|
+
PROJECT_SUMMARY = "Merb. Pocket rocket web framework."
|
|
29
|
+
PROJECT_DESCRIPTION = PROJECT_SUMMARY
|
|
30
|
+
|
|
31
|
+
AUTHOR = "test"
|
|
32
|
+
EMAIL = "test@test.test"
|
|
33
|
+
|
|
34
|
+
GEM_NAME = "thorero-core"
|
|
35
|
+
PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
|
|
36
|
+
GEM_VERSION = Merb::VERSION + PKG_BUILD
|
|
37
|
+
|
|
38
|
+
RELEASE_NAME = "REL #{GEM_VERSION}"
|
|
39
|
+
|
|
40
|
+
require "extlib/tasks/release"
|
|
41
|
+
|
|
42
|
+
spec = Gem::Specification.new do |s|
|
|
43
|
+
s.name = GEM_NAME
|
|
44
|
+
s.version = GEM_VERSION
|
|
45
|
+
s.platform = Gem::Platform::RUBY
|
|
46
|
+
s.author = AUTHOR
|
|
47
|
+
s.email = EMAIL
|
|
48
|
+
s.homepage = PROJECT_URL
|
|
49
|
+
s.summary = PROJECT_SUMMARY
|
|
50
|
+
s.bindir = "bin"
|
|
51
|
+
s.description = PROJECT_DESCRIPTION
|
|
52
|
+
s.executables = %w( merb )
|
|
53
|
+
s.require_path = "lib"
|
|
54
|
+
s.files = %w( LICENSE README Rakefile TODO ) + Dir["{docs,bin,spec,lib,examples,app_generators,merb_generators,merb_default_generators,rspec_generators,test_unit_generators,script}/**/*"]
|
|
55
|
+
|
|
56
|
+
# rdoc
|
|
57
|
+
s.has_rdoc = true
|
|
58
|
+
s.extra_rdoc_files = %w( README LICENSE TODO )
|
|
59
|
+
#s.rdoc_options += RDOC_OPTS + ["--exclude", "^(app|uploads)"]
|
|
60
|
+
|
|
61
|
+
# Dependencies
|
|
62
|
+
s.add_dependency "extlib", ">=0.9.3"
|
|
63
|
+
s.add_dependency "erubis"
|
|
64
|
+
s.add_dependency "rake"
|
|
65
|
+
s.add_dependency "json_pure"
|
|
66
|
+
s.add_dependency "rspec"
|
|
67
|
+
s.add_dependency "rack"
|
|
68
|
+
s.add_dependency "mime-types"
|
|
69
|
+
# Requirements
|
|
70
|
+
s.requirements << "install the json gem to get faster json parsing"
|
|
71
|
+
s.required_ruby_version = ">= 1.8.4"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
Rake::GemPackageTask.new(spec) do |package|
|
|
75
|
+
package.gem_spec = spec
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
desc "Run :package and install the resulting .gem"
|
|
79
|
+
task :install => :package do
|
|
80
|
+
sh %{#{sudo} gem install #{install_home} --local pkg/#{GEM_NAME}-#{GEM_VERSION}.gem --no-rdoc --no-ri}
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
desc "Run :package and install the resulting .gem with jruby"
|
|
84
|
+
task :jinstall => :package do
|
|
85
|
+
sh %{#{sudo} jruby -S gem install #{install_home} pkg/#{NAME}-#{Merb::VERSION}.gem --no-rdoc --no-ri}
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
desc "Run :clean and uninstall the .gem"
|
|
89
|
+
task :uninstall => :clean do
|
|
90
|
+
sh %{#{sudo} gem uninstall #{NAME}}
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
CLEAN.include ["**/.*.sw?", "pkg", "lib/*.bundle", "*.gem", "doc/rdoc", ".config", "coverage", "cache"]
|
|
94
|
+
|
|
95
|
+
desc "Run the specs."
|
|
96
|
+
task :default => :specs
|
|
97
|
+
|
|
98
|
+
task :merb => [:clean, :rdoc, :package]
|
|
99
|
+
|
|
100
|
+
##############################################################################
|
|
101
|
+
# Github
|
|
102
|
+
##############################################################################
|
|
103
|
+
namespace :github do
|
|
104
|
+
desc "Update Github Gemspec"
|
|
105
|
+
task :update_gemspec do
|
|
106
|
+
skip_fields = %w(new_platform original_platform)
|
|
107
|
+
integer_fields = %w(specification_version)
|
|
108
|
+
|
|
109
|
+
result = "Gem::Specification.new do |s|\n"
|
|
110
|
+
spec.instance_variables.each do |ivar|
|
|
111
|
+
value = spec.instance_variable_get(ivar)
|
|
112
|
+
name = ivar.split("@").last
|
|
113
|
+
next if skip_fields.include?(name) || value.nil? || value == "" || (value.respond_to?(:empty?) && value.empty?)
|
|
114
|
+
if name == "dependencies"
|
|
115
|
+
value.each do |d|
|
|
116
|
+
dep, *ver = d.to_s.split(" ")
|
|
117
|
+
result << " s.add_dependency #{dep.inspect}, #{ver.join(" ").inspect.gsub(/[()]/, "")}\n"
|
|
118
|
+
end
|
|
119
|
+
else
|
|
120
|
+
case value
|
|
121
|
+
when Array
|
|
122
|
+
value = name != "files" ? value.inspect : value.inspect.split(",").join(",\n")
|
|
123
|
+
when String
|
|
124
|
+
value = value.to_i if integer_fields.include?(name)
|
|
125
|
+
value = value.inspect
|
|
126
|
+
else
|
|
127
|
+
value = value.to_s.inspect
|
|
128
|
+
end
|
|
129
|
+
result << " s.#{name} = #{value}\n"
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
result << "end"
|
|
133
|
+
File.open(File.join(File.dirname(__FILE__), "#{spec.name}.gemspec"), "w"){|f| f << result}
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
##############################################################################
|
|
138
|
+
# Documentation
|
|
139
|
+
##############################################################################
|
|
140
|
+
task :doc => [:rdoc]
|
|
141
|
+
namespace :doc do
|
|
142
|
+
|
|
143
|
+
Rake::RDocTask.new do |rdoc|
|
|
144
|
+
files = ["README", "LICENSE", "CHANGELOG", "lib/**/*.rb"]
|
|
145
|
+
rdoc.rdoc_files.add(files)
|
|
146
|
+
rdoc.main = "README"
|
|
147
|
+
rdoc.title = "Merb Docs"
|
|
148
|
+
rdoc.template = __DIR__ + "/tools/allison-2.0.2/lib/allison.rb"
|
|
149
|
+
rdoc.rdoc_dir = "doc/rdoc"
|
|
150
|
+
rdoc.options << "--line-numbers" << "--inline-source"
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
desc "run webgen"
|
|
154
|
+
task :webgen do
|
|
155
|
+
sh %{cd doc/site; webgen}
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
desc "rdoc to rubyforge"
|
|
159
|
+
task :rubyforge do
|
|
160
|
+
# sh %{rake doc}
|
|
161
|
+
sh %{#{sudo} chmod -R 755 doc} unless windows?
|
|
162
|
+
sh %{/usr/bin/scp -r -p doc/rdoc/* ezmobius@rubyforge.org:/var/www/gforge-projects/merb}
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
##############################################################################
|
|
168
|
+
# rSpec & rcov
|
|
169
|
+
##############################################################################
|
|
170
|
+
desc "Run :specs, :rcov"
|
|
171
|
+
task :aok => [:specs, :rcov]
|
|
172
|
+
|
|
173
|
+
# desc "Run all specs"
|
|
174
|
+
# Spec::Rake::SpecTask.new("specs") do |t|
|
|
175
|
+
# t.spec_opts = ["--format", "specdoc", "--colour"]
|
|
176
|
+
# t.spec_files = Dir["spec/**/*_spec.rb"].sort
|
|
177
|
+
# end
|
|
178
|
+
|
|
179
|
+
def setup_specs(name, spec_cmd='spec', run_opts = "-c -f s")
|
|
180
|
+
desc "Run all specs (#{name})"
|
|
181
|
+
task "specs:#{name}" do
|
|
182
|
+
run_specs("spec/**/*_spec.rb", spec_cmd, ENV['RSPEC_OPTS'] || run_opts)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
desc "Run private specs (#{name})"
|
|
186
|
+
task "specs:#{name}:private" do
|
|
187
|
+
run_specs("spec/private/**/*_spec.rb", spec_cmd, ENV['RSPEC_OPTS'] || run_opts)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
desc "Run public specs (#{name})"
|
|
191
|
+
task "specs:#{name}:public" do
|
|
192
|
+
run_specs("spec/public/**/*_spec.rb", spec_cmd, ENV['RSPEC_OPTS'] || run_opts)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# With profiling formatter
|
|
196
|
+
desc "Run all specs (#{name}) with profiling formatter"
|
|
197
|
+
task "specs:#{name}_profiled" do
|
|
198
|
+
run_specs("spec/**/*_spec.rb", spec_cmd, "-c -f o")
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
desc "Run private specs (#{name}) with profiling formatter"
|
|
202
|
+
task "specs:#{name}_profiled:private" do
|
|
203
|
+
run_specs("spec/private/**/*_spec.rb", spec_cmd, "-c -f o")
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
desc "Run public specs (#{name}) with profiling formatter"
|
|
207
|
+
task "specs:#{name}_profiled:public" do
|
|
208
|
+
run_specs("spec/public/**/*_spec.rb", spec_cmd, "-c -f o")
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
setup_specs("mri", "spec")
|
|
213
|
+
setup_specs("jruby", "jruby -S spec")
|
|
214
|
+
|
|
215
|
+
task "specs" => ["specs:mri"]
|
|
216
|
+
task "specs:private" => ["specs:mri:private"]
|
|
217
|
+
task "specs:public" => ["specs:mri:public"]
|
|
218
|
+
|
|
219
|
+
desc "Run coverage suite"
|
|
220
|
+
task :rcov do
|
|
221
|
+
require 'fileutils'
|
|
222
|
+
FileUtils.rm_rf("coverage") if File.directory?("coverage")
|
|
223
|
+
FileUtils.mkdir("coverage")
|
|
224
|
+
path = File.expand_path(Dir.pwd)
|
|
225
|
+
files = Dir["spec/**/*_spec.rb"]
|
|
226
|
+
files.each do |spec|
|
|
227
|
+
puts "Getting coverage for #{File.expand_path(spec)}"
|
|
228
|
+
command = %{rcov #{File.expand_path(spec)} --aggregate #{path}/coverage/data.data --exclude ".*" --include-file "lib/merb-core(?!\/vendor)"}
|
|
229
|
+
command += " --no-html" unless spec == files.last
|
|
230
|
+
`#{command} 2>&1`
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
desc "Run a specific spec with TASK=xxxx"
|
|
235
|
+
Spec::Rake::SpecTask.new("spec") do |t|
|
|
236
|
+
t.spec_opts = ["--format", "specdoc", "--colour"]
|
|
237
|
+
t.libs = ["lib", "server/lib" ]
|
|
238
|
+
t.spec_files = (ENV["TASK"] || '').split(',').map do |task|
|
|
239
|
+
"spec/**/#{task}_spec.rb"
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
desc "Run all specs output html"
|
|
244
|
+
Spec::Rake::SpecTask.new("specs_html") do |t|
|
|
245
|
+
t.spec_opts = ["--format", "html"]
|
|
246
|
+
t.libs = ["lib", "server/lib" ]
|
|
247
|
+
t.spec_files = Dir["spec/**/*_spec.rb"].sort
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
# desc "RCov"
|
|
251
|
+
# Spec::Rake::SpecTask.new("rcov") do |t|
|
|
252
|
+
# t.rcov_opts = ["--exclude", "gems", "--exclude", "spec"]
|
|
253
|
+
# t.spec_opts = ["--format", "specdoc", "--colour"]
|
|
254
|
+
# t.spec_files = Dir["spec/**/*_spec.rb"].sort
|
|
255
|
+
# t.libs = ["lib", "server/lib"]
|
|
256
|
+
# t.rcov = true
|
|
257
|
+
# end
|
|
258
|
+
|
|
259
|
+
STATS_DIRECTORIES = [
|
|
260
|
+
['Code', 'lib/'],
|
|
261
|
+
['Unit tests', 'spec']
|
|
262
|
+
].collect { |name, dir| [ name, "./#{dir}" ] }.
|
|
263
|
+
select { |name, dir| File.directory?(dir) }
|
|
264
|
+
|
|
265
|
+
desc "Report code statistics (KLOCs, etc) from the application"
|
|
266
|
+
task :stats do
|
|
267
|
+
require __DIR__ + "/tools/code_statistics"
|
|
268
|
+
# require "extra/stats"
|
|
269
|
+
verbose = true
|
|
270
|
+
CodeStatistics.new(*STATS_DIRECTORIES).to_s
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
##############################################################################
|
|
274
|
+
# SYNTAX CHECKING
|
|
275
|
+
##############################################################################
|
|
276
|
+
|
|
277
|
+
task :check_syntax do
|
|
278
|
+
`find . -name "*.rb" |xargs -n1 ruby -c |grep -v "Syntax OK"`
|
|
279
|
+
puts "* Done"
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
##############################################################################
|
|
283
|
+
# SVN
|
|
284
|
+
##############################################################################
|
|
285
|
+
namespace :repo do
|
|
286
|
+
|
|
287
|
+
desc "Add new files to repository"
|
|
288
|
+
task :add do
|
|
289
|
+
if File.directory?(".git")
|
|
290
|
+
system "git add *"
|
|
291
|
+
elsif File.directory?(".svn")
|
|
292
|
+
system "svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs svn add"
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
desc "Fetch changes from master repository"
|
|
297
|
+
task :rebase do
|
|
298
|
+
if File.directory?(".git")
|
|
299
|
+
system "git stash ; git svn rebase ; git stash apply"
|
|
300
|
+
elsif File.directory?(".svn")
|
|
301
|
+
system "svn update"
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
desc "commit modified changes to the repository"
|
|
306
|
+
task :commit do
|
|
307
|
+
if File.directory?(".git")
|
|
308
|
+
system "git commit"
|
|
309
|
+
elsif File.directory?(".svn")
|
|
310
|
+
system "svn commit"
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
# Run specific tests or test files. Searches nested spec directories as well.
|
|
317
|
+
#
|
|
318
|
+
# Based on a technique popularized by Geoffrey Grosenbach
|
|
319
|
+
rule "" do |t|
|
|
320
|
+
spec_cmd = (RUBY_PLATFORM =~ /java/) ? "jruby -S spec" : "spec"
|
|
321
|
+
# spec:spec_file:spec_name
|
|
322
|
+
if /spec:(.*)$/.match(t.name)
|
|
323
|
+
arguments = t.name.split(':')
|
|
324
|
+
|
|
325
|
+
file_name = arguments[1]
|
|
326
|
+
spec_name = arguments[2..-1]
|
|
327
|
+
|
|
328
|
+
spec_filename = "#{file_name}_spec.rb"
|
|
329
|
+
specs = Dir["spec/**/#{spec_filename}"]
|
|
330
|
+
|
|
331
|
+
if path = specs.detect { |f| spec_filename == File.basename(f) }
|
|
332
|
+
run_file_name = path
|
|
333
|
+
else
|
|
334
|
+
puts "No specs found for #{t.name.inspect}"
|
|
335
|
+
exit
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
example = " -e '#{spec_name}'" unless spec_name.empty?
|
|
339
|
+
|
|
340
|
+
sh "#{spec_cmd} #{run_file_name} --format specdoc --colour #{example}"
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
namespace :tools do
|
|
346
|
+
namespace :tags do
|
|
347
|
+
desc "Generates Emacs tags using Exuberant Ctags."
|
|
348
|
+
task :emacs do
|
|
349
|
+
sh "ctags -e --Ruby-kinds=-f -o TAGS -R lib"
|
|
350
|
+
end
|
|
351
|
+
end
|
|
352
|
+
end
|
data/TODO
ADDED
|
File without changes
|
data/bin/merb
ADDED
data/bin/merb-specs
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
The Merb boot process starts when you run the Merb binary, which calls `Merb.start`. Merb.start performs the
|
|
2
|
+
following tasks:
|
|
3
|
+
|
|
4
|
+
list.
|
|
5
|
+
* Loads merb.yml from the root directory or config directory and puts them in the Merb::Config hash
|
|
6
|
+
* Parses config arguments from the command-line and adds them to the Merb::Config hash
|
|
7
|
+
* Runs the BootLoaders (see below)
|
|
8
|
+
* Starts the Merb Rack adapter
|
|
9
|
+
|
|
10
|
+
The BootLoader is a configurable process, which, by default, runs the following processes:
|
|
11
|
+
|
|
12
|
+
deflist.
|
|
13
|
+
Environment: Sets the Merb environment based on any -e flag passed the merb binary
|
|
14
|
+
BuildFramework: Set the framework paths, which can either be set in the Merb::Config[:framework]
|
|
15
|
+
variable or defaults to the paths described below.
|
|
16
|
+
Dependencies: Load dependencies.rb, which should include any plugins that will be loaded, as well
|
|
17
|
+
as an after_app_loaded hook.
|
|
18
|
+
Logger: Set up the logger in the `Merb.dir_for(:log)` directory. In test mode, it will be called
|
|
19
|
+
`test_logger`. In other modes, it will be set to `merb.#{pid}.log`. The log level will default
|
|
20
|
+
to `info` but can be specified via the Merb::Config[:log_level] option.
|
|
21
|
+
LoadRouter: The router is loaded from `Merb.dir_for(:config)/router.rb`.
|
|
22
|
+
LoadClasses: Files in all of the load paths are `require`d, and classes added during the load of
|
|
23
|
+
each files are tracked so they can be removed later during the reloading process.
|
|
24
|
+
Templates: All templates under the `_template_root` of any loaded controllers, as well as all
|
|
25
|
+
templates under `Merb.dir_for(:view)` are registered as inlined templates.
|
|
26
|
+
MimeTypes: Register all MimeTypes (see below for defaults).
|
|
27
|
+
AfterAppLoads: Call any `after_app_loads` hooks that were registered in dependencies.rb
|
|
28
|
+
MixinSessionContainer: Register the session types and set the app to use one if
|
|
29
|
+
`Merb::Config[:session_type]` is set.
|
|
30
|
+
ChooseAdapter: Set `Merb.adapter` to be the adapter chosen via Merb::Config[:adapter] (which
|
|
31
|
+
can be specified via the `-a foo` command-line parameter).
|
|
32
|
+
RackUpApplication: Set up a default rack application. Alternatively, allow for additional configuration
|
|
33
|
+
in `Merb.dir_for(:config)/rack.rb`, which will be evaluated in the context of a Rack::Builder.new
|
|
34
|
+
block.
|
|
35
|
+
ReloadClasses: If Merb::Config[:reload_classes] is set, begin the process of reloading classes
|
|
36
|
+
every time a class is modified.
|
|
37
|
+
|
|
38
|
+
deflist: Default Framework Paths.
|
|
39
|
+
application: Merb.root/app/controller/application.rb
|
|
40
|
+
config: Merb.root/config
|
|
41
|
+
lib: Merb.root/lib
|
|
42
|
+
log: Merb.root/log
|
|
43
|
+
view: Merb.root/app/views
|
|
44
|
+
model: Merb.root/app/models
|
|
45
|
+
controller: Merb.root/app/controllers
|
|
46
|
+
helper: Merb.root/app/helpers
|
|
47
|
+
mailer: Merb.root/app/mailers
|
|
48
|
+
part: Merb.root/app/parts
|
|
49
|
+
|
|
50
|
+
deflist: MimeTypes.
|
|
51
|
+
\:all: no transform, */*
|
|
52
|
+
\:yaml: to_yaml, application/x-yaml or text/yaml
|
|
53
|
+
\:text: to_text, text/plain
|
|
54
|
+
\:html: to_html, text/html or application/xhtml+xml or application/html
|
|
55
|
+
\:xml: to_xml, application/xml or text/xml or application/x-xml, adds "Encoding: UTF-8" response header
|
|
56
|
+
\:js: to_json, text/javascript ot application/javascript or application/x-javascript
|
|
57
|
+
\:json: to_json, application/json or text/x-json
|
|
58
|
+
|