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,28 @@
|
|
1
|
+
module Merb
|
2
|
+
class Worker
|
3
|
+
|
4
|
+
attr_accessor :thread
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@thread = Thread.new { loop { process_queue } }
|
8
|
+
end
|
9
|
+
|
10
|
+
def process_queue
|
11
|
+
begin
|
12
|
+
while blk = Merb::Dispatcher.work_queue.pop
|
13
|
+
# we've been blocking on the queue waiting for an item sleeping.
|
14
|
+
# when someone pushes an item it wakes up this thread so we
|
15
|
+
# immediately pass execution to the scheduler so we don't
|
16
|
+
# accidentally run this block before the action finishes
|
17
|
+
# it's own processing
|
18
|
+
Thread.pass
|
19
|
+
blk.call
|
20
|
+
end
|
21
|
+
rescue Exception => e
|
22
|
+
Merb.logger.warn! %Q!Worker Thread Crashed with Exception:\n#{Merb.exception(e)}\nRestarting Worker Thread!
|
23
|
+
retry
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'erubis'
|
2
|
+
module Erubis
|
3
|
+
module Basic::Converter
|
4
|
+
def convert_input(src, input)
|
5
|
+
pat = @pattern
|
6
|
+
regexp = pat.nil? || pat == '<% %>' ? DEFAULT_REGEXP : pattern_regexp(pat)
|
7
|
+
pos = 0
|
8
|
+
is_bol = true # is beginning of line
|
9
|
+
input.scan(regexp) do |indicator, code, tailch, rspace|
|
10
|
+
match = Regexp.last_match()
|
11
|
+
len = match.begin(0) - pos
|
12
|
+
text = input[pos, len]
|
13
|
+
pos = match.end(0)
|
14
|
+
ch = indicator ? indicator[0] : nil
|
15
|
+
lspace = ch == ?= ? nil : detect_spaces_at_bol(text, is_bol)
|
16
|
+
is_bol = rspace ? true : false
|
17
|
+
add_text(src, text) if text && !text.empty?
|
18
|
+
## * when '<%= %>', do nothing
|
19
|
+
## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>'
|
20
|
+
if ch == ?= # <%= %>
|
21
|
+
rspace = nil if tailch && !tailch.empty?
|
22
|
+
add_text(src, lspace) if lspace
|
23
|
+
add_expr(src, code, indicator)
|
24
|
+
add_text(src, rspace) if rspace
|
25
|
+
elsif ch == ?\# # <%# %>
|
26
|
+
n = code.count("\n") + (rspace ? 1 : 0)
|
27
|
+
if @trim && lspace && rspace
|
28
|
+
add_stmt(src, "\n" * n)
|
29
|
+
else
|
30
|
+
add_text(src, lspace) if lspace
|
31
|
+
add_stmt(src, "\n" * n)
|
32
|
+
add_text(src, rspace) if rspace
|
33
|
+
end
|
34
|
+
elsif ch == ?% # <%% %>
|
35
|
+
s = "#{lspace}#{@prefix||='<%'}#{code}#{tailch}#{@postfix||='%>'}#{rspace}"
|
36
|
+
add_text(src, s)
|
37
|
+
else # <% %>
|
38
|
+
if @trim && lspace && rspace
|
39
|
+
if respond_to?(:add_stmt2)
|
40
|
+
add_stmt2(src, "#{lspace}#{code}#{rspace}", tailch)
|
41
|
+
else
|
42
|
+
add_stmt(src, "#{lspace}#{code}#{rspace}")
|
43
|
+
end
|
44
|
+
else
|
45
|
+
add_text(src, lspace) if lspace
|
46
|
+
if respond_to?(:add_stmt2)
|
47
|
+
add_stmt2(src, code, tailch)
|
48
|
+
else
|
49
|
+
add_stmt(src, code)
|
50
|
+
end
|
51
|
+
add_text(src, rspace) if rspace
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
#rest = $' || input # ruby1.8
|
56
|
+
rest = pos == 0 ? input : input[pos..-1] # ruby1.9
|
57
|
+
add_text(src, rest)
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
class MEruby < Erubis::Eruby
|
63
|
+
include PercentLineEnhancer
|
64
|
+
include StringBufferEnhancer
|
65
|
+
end
|
66
|
+
|
67
|
+
# Loads a file, runs it through Erubis and parses it as YAML.
|
68
|
+
#
|
69
|
+
# ===== Parameters
|
70
|
+
# file<String>:: The name of the file to load.
|
71
|
+
# binding<Binding>::
|
72
|
+
# The binding to use when evaluating the ERB tags. Defaults to the current
|
73
|
+
# binding.
|
74
|
+
def self.load_yaml_file(file, binding = binding)
|
75
|
+
YAML::load(Erubis::MEruby.new(IO.read(File.expand_path(file))).result(binding))
|
76
|
+
end
|
77
|
+
end
|
@@ -31,7 +31,7 @@ require "time" # httpdate
|
|
31
31
|
#
|
32
32
|
# To initialize the logger you create a new object, proxies to set_log.
|
33
33
|
# Merb::Logger.new(log{String, IO},level{Symbol, String})
|
34
|
-
module
|
34
|
+
module Merb
|
35
35
|
|
36
36
|
class << self
|
37
37
|
attr_accessor :logger
|
@@ -60,7 +60,7 @@ module Extlib
|
|
60
60
|
:warn => 4,
|
61
61
|
:info => 3,
|
62
62
|
:debug => 0
|
63
|
-
}
|
63
|
+
} unless const_defined?(:Levels)
|
64
64
|
|
65
65
|
private
|
66
66
|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Merb
|
2
|
+
|
3
|
+
module Plugins
|
4
|
+
|
5
|
+
# ==== Returns
|
6
|
+
# Hash::
|
7
|
+
# The configuration loaded from Merb.root / "config/plugins.yml" or, if
|
8
|
+
# the load fails, an empty hash whose default value is another Hash.
|
9
|
+
def self.config
|
10
|
+
@config ||= begin
|
11
|
+
# this is so you can do Merb.plugins.config[:helpers][:awesome] = "bar"
|
12
|
+
config_hash = Hash.new {|h,k| h[k] = {}}
|
13
|
+
file = Merb.root / "config" / "plugins.yml"
|
14
|
+
config_hash.merge((File.exists?(file) && YAML.load_file(file)) || {})
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# ==== Returns
|
19
|
+
# Array(String):: All Rakefile load paths Merb uses for plugins.
|
20
|
+
def self.rakefiles
|
21
|
+
Merb.rakefiles
|
22
|
+
end
|
23
|
+
|
24
|
+
# ==== Returns
|
25
|
+
# Array(String):: All Generator load paths Merb uses for plugins.
|
26
|
+
def self.generators
|
27
|
+
Merb.generators
|
28
|
+
end
|
29
|
+
|
30
|
+
# ==== Parameters
|
31
|
+
# *rakefiles:: Rakefiles to add to the list of plugin Rakefiles.
|
32
|
+
#
|
33
|
+
# ==== Notes
|
34
|
+
#
|
35
|
+
# This is a recommended way to register your plugin's Raketasks
|
36
|
+
# in Merb.
|
37
|
+
#
|
38
|
+
# ==== Examples
|
39
|
+
# From merb_sequel plugin:
|
40
|
+
#
|
41
|
+
# if defined(Merb::Plugins)
|
42
|
+
# Merb::Plugins.add_rakefiles "merb_sequel" / "merbtasks"
|
43
|
+
# end
|
44
|
+
def self.add_rakefiles(*rakefiles)
|
45
|
+
Merb.add_rakefiles *rakefiles
|
46
|
+
end
|
47
|
+
|
48
|
+
# ==== Parameters
|
49
|
+
# *generators:: Generator paths to add to the list of plugin generators.
|
50
|
+
#
|
51
|
+
# ==== Notes
|
52
|
+
#
|
53
|
+
# This is the recommended way to register your plugin's generators
|
54
|
+
# in Merb.
|
55
|
+
def self.add_generators(*generators)
|
56
|
+
Merb.add_generators *generators
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rack'
|
2
|
+
module Merb
|
3
|
+
module Rack
|
4
|
+
autoload :Application, 'merb-core' / 'rack' / 'application'
|
5
|
+
autoload :Adapter, 'merb-core' / 'rack' / 'adapter'
|
6
|
+
autoload :Ebb, 'merb-core' / 'rack' / 'adapter' / 'ebb'
|
7
|
+
autoload :EventedMongrel, 'merb-core' / 'rack' / 'adapter' / 'evented_mongrel'
|
8
|
+
autoload :FastCGI, 'merb-core' / 'rack' / 'adapter' / 'fcgi'
|
9
|
+
autoload :Irb, 'merb-core' / 'rack' / 'adapter' / 'irb'
|
10
|
+
autoload :Middleware, 'merb-core' / 'rack' / 'middleware'
|
11
|
+
autoload :Mongrel, 'merb-core' / 'rack' / 'adapter' / 'mongrel'
|
12
|
+
autoload :Runner, 'merb-core' / 'rack' / 'adapter' / 'runner'
|
13
|
+
autoload :SwiftipliedMongrel, 'merb-core' / 'rack' / 'adapter' / 'swiftiplied_mongrel'
|
14
|
+
autoload :Thin, 'merb-core' / 'rack' / 'adapter' / 'thin'
|
15
|
+
autoload :ThinTurbo, 'merb-core' / 'rack' / 'adapter' / 'thin_turbo'
|
16
|
+
autoload :WEBrick, 'merb-core' / 'rack' / 'adapter' / 'webrick'
|
17
|
+
autoload :PathPrefix, 'merb-core' / 'rack' / 'middleware' / 'path_prefix'
|
18
|
+
autoload :Static, 'merb-core' / 'rack' / 'middleware' / 'static'
|
19
|
+
autoload :Profiler, 'merb-core' / 'rack' / 'middleware' / 'profiler'
|
20
|
+
end # Rack
|
21
|
+
end # Merb
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Merb
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
|
5
|
+
class Adapter
|
6
|
+
|
7
|
+
class << self
|
8
|
+
# ==== Parameters
|
9
|
+
# id<String>:: The identifier of the Rack adapter class to retrieve.
|
10
|
+
#
|
11
|
+
# ==== Returns.
|
12
|
+
# Class:: The adapter class.
|
13
|
+
def get(id)
|
14
|
+
Object.full_const_get(@adapters[id])
|
15
|
+
end
|
16
|
+
|
17
|
+
# Registers a new Rack adapter.
|
18
|
+
#
|
19
|
+
# ==== Parameters
|
20
|
+
# ids<Array>:: Identifiers by which this adapter is recognized by.
|
21
|
+
# adapter_class<Class>:: The Rack adapter class.
|
22
|
+
def register(ids, adapter_class)
|
23
|
+
@adapters ||= Hash.new
|
24
|
+
ids.each { |id| @adapters[id] = "Merb::Rack::#{adapter_class}" }
|
25
|
+
end
|
26
|
+
end # class << self
|
27
|
+
|
28
|
+
end # Adapter
|
29
|
+
|
30
|
+
# Register some Rack adapters
|
31
|
+
Adapter.register %w{ebb}, :Ebb
|
32
|
+
Adapter.register %w{emongrel}, :EventedMongrel
|
33
|
+
Adapter.register %w{fastcgi fcgi}, :FastCGI
|
34
|
+
Adapter.register %w{irb}, :Irb
|
35
|
+
Adapter.register %w{mongrel}, :Mongrel
|
36
|
+
Adapter.register %w{runner}, :Runner
|
37
|
+
Adapter.register %w{smongrel swift}, :SwiftipliedMongrel
|
38
|
+
Adapter.register %w{thin}, :Thin
|
39
|
+
Adapter.register %w{thin-turbo}, :ThinTurbo
|
40
|
+
Adapter.register %w{webrick}, :WEBrick
|
41
|
+
|
42
|
+
end # Rack
|
43
|
+
end # Merb
|
44
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'ebb'
|
2
|
+
module Merb
|
3
|
+
|
4
|
+
module Rack
|
5
|
+
|
6
|
+
class Ebb
|
7
|
+
# start an Ebb server on given host and port.
|
8
|
+
|
9
|
+
# ==== Parameters
|
10
|
+
# opts<Hash>:: Options for Ebb (see below).
|
11
|
+
#
|
12
|
+
# ==== Options (opts)
|
13
|
+
# :host<String>:: The hostname that Ebb should serve.
|
14
|
+
# :port<Fixnum>:: The port Ebb should bind to.
|
15
|
+
# :app:: The application
|
16
|
+
def self.start(opts={})
|
17
|
+
Merb.logger.warn!("Using Ebb adapter")
|
18
|
+
Merb::Dispatcher.use_mutex = false
|
19
|
+
th = Thread.new { ::Ebb.start_server(opts[:app], opts) }
|
20
|
+
Merb::Server.change_privilege
|
21
|
+
th.join
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'swiftcore/evented_mongrel'
|
2
|
+
require 'merb-core/rack/handler/mongrel'
|
3
|
+
module Merb
|
4
|
+
module Rack
|
5
|
+
|
6
|
+
class EventedMongrel < Mongrel
|
7
|
+
# Starts Mongrel as evented.
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# opts<Hash>:: Options for Mongrel (see below).
|
11
|
+
#
|
12
|
+
# ==== Options (opts)
|
13
|
+
# :host<String>:: The hostname that Mongrel should serve.
|
14
|
+
# :port<Fixnum>:: The port Mongrel should bind to.
|
15
|
+
# :app<String>>:: The application name.
|
16
|
+
def self.start(opts={})
|
17
|
+
Merb.logger.warn!("Using EventedMongrel adapter")
|
18
|
+
Merb::Dispatcher.use_mutex = false
|
19
|
+
server = ::Mongrel::HttpServer.new(opts[:host], opts[:port].to_i)
|
20
|
+
Merb::Server.change_privilege
|
21
|
+
server.register('/', ::Merb::Rack::Handler::Mongrel.new(opts[:app]))
|
22
|
+
server.run.join
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Merb
|
2
|
+
module Rack
|
3
|
+
|
4
|
+
class FastCGI
|
5
|
+
# ==== Parameters
|
6
|
+
# opts<Hash>:: Options for FastCGI (see below).
|
7
|
+
#
|
8
|
+
# ==== Options (opts)
|
9
|
+
# :app<String>>:: The application name.
|
10
|
+
def self.start(opts={})
|
11
|
+
Merb.logger.warn!("Using FastCGI adapter")
|
12
|
+
Merb::Server.change_privilege
|
13
|
+
::Rack::Handler::FastCGI.run(opts[:app], opts)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module Merb
|
2
|
+
module Rack
|
3
|
+
class Console
|
4
|
+
# ==== Parameters
|
5
|
+
# name<~to_sym, Hash>:: The name of the route to generate.
|
6
|
+
# params<Hash>:: The params to use in the route generation.
|
7
|
+
#
|
8
|
+
# ==== Returns
|
9
|
+
# String:: The generated URL.
|
10
|
+
#
|
11
|
+
# ==== Alternatives
|
12
|
+
# If name is a hash, it will be merged with params.
|
13
|
+
def url(name, params={})
|
14
|
+
Merb::Router.generate(name, params)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Reloads classes using Merb::BootLoader::ReloadClasses.
|
18
|
+
def reload!
|
19
|
+
Merb::BootLoader::ReloadClasses.reload
|
20
|
+
end
|
21
|
+
|
22
|
+
# Prints all routes for the application.
|
23
|
+
def show_routes
|
24
|
+
seen = []
|
25
|
+
unless Merb::Router.named_routes.empty?
|
26
|
+
puts "==== Named routes"
|
27
|
+
Merb::Router.named_routes.each do |name,route|
|
28
|
+
# something weird happens when you combine sprintf and irb
|
29
|
+
puts "Helper : #{name}"
|
30
|
+
meth = $1.upcase if route.conditions[:method].to_s =~ /(get|post|put|delete)/
|
31
|
+
puts "HTTP method: #{meth || 'GET'}"
|
32
|
+
puts "Route : #{route}"
|
33
|
+
puts "Params : #{route.params.inspect}"
|
34
|
+
puts
|
35
|
+
seen << route
|
36
|
+
end
|
37
|
+
end
|
38
|
+
puts "==== Anonymous routes"
|
39
|
+
(Merb::Router.routes - seen).each do |route|
|
40
|
+
meth = $1.upcase if route.conditions[:method].to_s =~ /(get|post|put|delete)/
|
41
|
+
puts "HTTP method: #{meth || 'GET'}"
|
42
|
+
puts "Route : #{route}"
|
43
|
+
puts "Params : #{route.params.inspect}"
|
44
|
+
puts
|
45
|
+
end
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
|
49
|
+
# Starts a sandboxed session (delegates to any Merb::Orms::* modules).
|
50
|
+
#
|
51
|
+
# An ORM should implement Merb::Orms::MyOrm#open_sandbox! to support this.
|
52
|
+
# Usually this involves starting a transaction.
|
53
|
+
def open_sandbox!
|
54
|
+
puts "Loading #{Merb.environment} environment in sandbox (Merb #{Merb::VERSION})"
|
55
|
+
puts "Any modifications you make will be rolled back on exit"
|
56
|
+
orm_modules.each { |orm| orm.open_sandbox! if orm.respond_to?(:open_sandbox!) }
|
57
|
+
end
|
58
|
+
|
59
|
+
# Ends a sandboxed session (delegates to any Merb::Orms::* modules).
|
60
|
+
#
|
61
|
+
# An ORM should implement Merb::Orms::MyOrm#close_sandbox! to support this.
|
62
|
+
# Usually this involves rolling back a transaction.
|
63
|
+
def close_sandbox!
|
64
|
+
orm_modules.each { |orm| orm.close_sandbox! if orm.respond_to?(:close_sandbox!) }
|
65
|
+
puts "Modifications have been rolled back"
|
66
|
+
end
|
67
|
+
|
68
|
+
# Explictly show logger output during IRB session
|
69
|
+
def trace_log!
|
70
|
+
Merb.logger.auto_flush = true
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
# ==== Returns
|
76
|
+
# Array:: All Merb::Orms::* modules.
|
77
|
+
def orm_modules
|
78
|
+
if Merb.const_defined?('Orms')
|
79
|
+
Merb::Orms.constants.map { |c| Merb::Orms::const_get(c) }
|
80
|
+
else
|
81
|
+
[]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
class Irb
|
88
|
+
# ==== Parameters
|
89
|
+
# opts<Hash>:
|
90
|
+
# Options for IRB. Currently this is not used by the IRB adapter.
|
91
|
+
#
|
92
|
+
# ==== Notes
|
93
|
+
# If the +.irbrc+ file exists, it will be loaded into the IRBRC
|
94
|
+
# environment variable.
|
95
|
+
def self.start(opts={})
|
96
|
+
m = Merb::Rack::Console.new
|
97
|
+
m.extend Merb::Test::RequestHelper
|
98
|
+
Object.send(:define_method, :merb) { m }
|
99
|
+
ARGV.clear # Avoid passing args to IRB
|
100
|
+
m.open_sandbox! if sandboxed?
|
101
|
+
require 'irb'
|
102
|
+
require 'irb/completion'
|
103
|
+
if File.exists? ".irbrc"
|
104
|
+
ENV['IRBRC'] = ".irbrc"
|
105
|
+
end
|
106
|
+
IRB.start
|
107
|
+
at_exit do merb.close_sandbox! if sandboxed? end
|
108
|
+
exit
|
109
|
+
end
|
110
|
+
|
111
|
+
private
|
112
|
+
|
113
|
+
def self.sandboxed?
|
114
|
+
Merb::Config[:sandbox]
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'mongrel'
|
2
|
+
require 'merb-core/rack/handler/mongrel'
|
3
|
+
module Merb
|
4
|
+
|
5
|
+
module Rack
|
6
|
+
|
7
|
+
class Mongrel
|
8
|
+
# start server on given host and port.
|
9
|
+
|
10
|
+
# ==== Parameters
|
11
|
+
# opts<Hash>:: Options for Mongrel (see below).
|
12
|
+
#
|
13
|
+
# ==== Options (opts)
|
14
|
+
# :host<String>:: The hostname that Mongrel should serve.
|
15
|
+
# :port<Fixnum>:: The port Mongrel should bind to.
|
16
|
+
# :app<String>>:: The application name.
|
17
|
+
def self.start(opts={})
|
18
|
+
Merb.logger.warn!("Using Mongrel adapter")
|
19
|
+
server = ::Mongrel::HttpServer.new(opts[:host], opts[:port].to_i)
|
20
|
+
Merb::Server.change_privilege
|
21
|
+
server.register('/', ::Merb::Rack::Handler::Mongrel.new(opts[:app]))
|
22
|
+
server.run.join
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|