waves 0.7.7 → 0.8.0
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/bin/waves +17 -72
- data/doc/HISTORY +1 -44
- data/doc/README +1 -0
- data/doc/VERSION +1 -0
- data/lib/caches/file.rb +48 -0
- data/lib/caches/memcached.rb +40 -0
- data/lib/caches/simple.rb +25 -0
- data/lib/caches/synchronized.rb +25 -0
- data/lib/commands/console.rb +35 -0
- data/lib/commands/generate.rb +52 -0
- data/lib/commands/help.rb +5 -0
- data/lib/commands/{waves-server.rb → server.rb} +16 -3
- data/lib/dispatchers/base.rb +21 -20
- data/lib/dispatchers/default.rb +11 -63
- data/lib/ext/float.rb +13 -0
- data/lib/{utilities → ext}/hash.rb +2 -2
- data/lib/{utilities → ext}/integer.rb +5 -2
- data/lib/ext/kernel.rb +20 -0
- data/lib/ext/module.rb +20 -0
- data/lib/{utilities → ext}/object.rb +3 -5
- data/lib/ext/string.rb +20 -0
- data/lib/ext/symbol.rb +11 -0
- data/lib/ext/tempfile.rb +5 -0
- data/lib/foundations/classic.rb +64 -0
- data/lib/foundations/compact.rb +50 -0
- data/lib/helpers/basic.rb +11 -0
- data/lib/helpers/doc_type.rb +34 -0
- data/lib/helpers/extended.rb +21 -0
- data/lib/helpers/form.rb +3 -1
- data/lib/helpers/formatting.rb +3 -3
- data/lib/helpers/layouts.rb +37 -0
- data/lib/helpers/model.rb +8 -4
- data/lib/helpers/view.rb +2 -4
- data/lib/layers/inflect/english.rb +48 -5
- data/lib/layers/mvc.rb +18 -18
- data/lib/layers/mvc/controllers.rb +41 -0
- data/lib/layers/mvc/extensions.rb +52 -0
- data/lib/layers/orm/{active_record.rb → providers/active_record.rb} +9 -14
- data/lib/layers/orm/{active_record → providers/active_record}/migrations/empty.rb.erb +0 -0
- data/lib/layers/orm/{active_record → providers/active_record}/tasks/generate.rb +1 -1
- data/lib/layers/orm/{active_record → providers/active_record}/tasks/schema.rb +1 -1
- data/lib/layers/orm/{data_mapper.rb → providers/data_mapper.rb} +3 -4
- data/lib/layers/orm/providers/filebase.rb +25 -0
- data/lib/layers/orm/{sequel.rb → providers/sequel.rb} +11 -7
- data/lib/layers/orm/{sequel → providers/sequel}/migrations/empty.rb.erb +0 -0
- data/lib/layers/orm/{sequel → providers/sequel}/tasks/generate.rb +5 -3
- data/lib/layers/orm/{sequel → providers/sequel}/tasks/schema.rb +2 -2
- data/lib/{renderers → layers/renderers}/erubis.rb +10 -13
- data/lib/{renderers → layers/renderers}/haml.rb +27 -25
- data/lib/layers/renderers/markaby.rb +29 -0
- data/lib/matchers/accept.rb +21 -0
- data/lib/matchers/base.rb +30 -0
- data/lib/matchers/content_type.rb +17 -0
- data/lib/matchers/path.rb +67 -0
- data/lib/matchers/query.rb +21 -0
- data/lib/matchers/request.rb +27 -0
- data/lib/matchers/resource.rb +19 -0
- data/lib/matchers/traits.rb +19 -0
- data/lib/matchers/uri.rb +20 -0
- data/lib/renderers/mixin.rb +15 -29
- data/lib/resources/mixin.rb +132 -0
- data/lib/resources/paths.rb +34 -0
- data/lib/runtime/configuration.rb +55 -135
- data/lib/runtime/console.rb +4 -1
- data/lib/runtime/logger.rb +24 -48
- data/lib/runtime/mime_types.rb +516 -2
- data/lib/runtime/mocks.rb +14 -0
- data/lib/runtime/monitor.rb +32 -0
- data/lib/runtime/request.rb +107 -39
- data/lib/runtime/response.rb +5 -2
- data/lib/runtime/response_mixin.rb +43 -22
- data/lib/runtime/runtime.rb +67 -0
- data/lib/runtime/server.rb +14 -101
- data/lib/runtime/session.rb +4 -43
- data/lib/runtime/worker.rb +86 -0
- data/lib/servers/base.rb +42 -0
- data/lib/servers/mongrel.rb +13 -0
- data/lib/servers/webrick.rb +13 -0
- data/lib/tasks/gem.rb +1 -0
- data/lib/tasks/generate.rb +67 -62
- data/lib/views/errors.rb +49 -0
- data/lib/views/mixin.rb +34 -82
- data/lib/waves.rb +36 -57
- data/samples/blog/Rakefile +16 -5
- data/samples/blog/blog.db +0 -0
- data/samples/blog/configurations/default.rb +11 -0
- data/samples/blog/configurations/development.rb +9 -11
- data/samples/blog/configurations/production.rb +11 -15
- data/samples/blog/log/waves.production +3 -0
- data/samples/blog/models/comment.rb +9 -0
- data/samples/blog/models/entry.rb +17 -0
- data/samples/blog/public/css/site.css +13 -2
- data/samples/blog/public/javascript/jquery-1.2.6.min.js +32 -0
- data/samples/blog/resources/entry.rb +39 -0
- data/samples/blog/resources/map.rb +9 -0
- data/samples/blog/schema/migrations/001_initial_schema.rb +3 -3
- data/samples/blog/schema/migrations/002_add_comments.rb +2 -2
- data/samples/blog/startup.rb +8 -6
- data/samples/blog/templates/comment/add.mab +6 -4
- data/samples/blog/templates/comment/list.mab +4 -4
- data/samples/blog/templates/entry/{editor.mab → edit.mab} +7 -6
- data/samples/blog/templates/entry/list.mab +10 -5
- data/samples/blog/templates/entry/show.mab +16 -7
- data/samples/blog/templates/entry/summary.mab +8 -4
- data/samples/blog/templates/errors/not_found_404.mab +6 -1
- data/samples/blog/templates/layouts/default.mab +5 -3
- data/samples/blog/templates/waves/status.mab +85 -0
- data/{app → templates/classic}/Rakefile +58 -0
- data/templates/classic/configurations/default.rb.erb +9 -0
- data/{app → templates/classic}/configurations/development.rb.erb +3 -8
- data/{app → templates/classic}/configurations/production.rb.erb +3 -5
- data/templates/classic/resources/map.rb.erb +8 -0
- data/templates/classic/startup.rb.erb +11 -0
- data/{app → templates/classic}/templates/errors/not_found_404.mab +0 -0
- data/{app → templates/classic}/templates/errors/server_error_500.mab +0 -0
- data/{app → templates/classic}/templates/layouts/default.mab +0 -0
- data/templates/compact/startup.rb.erb +11 -0
- metadata +257 -610
- data/app/bin/waves-console +0 -4
- data/app/bin/waves-server +0 -4
- data/app/configurations/mapping.rb.erb +0 -14
- data/app/controllers/.gitignore +0 -0
- data/app/doc/.gitignore +0 -0
- data/app/helpers/.gitignore +0 -0
- data/app/lib/application.rb.erb +0 -5
- data/app/lib/tasks/.gitignore +0 -0
- data/app/log/.gitignore +0 -0
- data/app/models/.gitignore +0 -0
- data/app/public/css/.gitignore +0 -0
- data/app/public/flash/.gitignore +0 -0
- data/app/public/images/.gitignore +0 -0
- data/app/public/javascript/.gitignore +0 -0
- data/app/schema/migrations/.gitignore +0 -0
- data/app/startup.rb +0 -5
- data/app/tmp/sessions/.gitignore +0 -0
- data/app/views/.gitignore +0 -0
- data/bin/waves-console +0 -4
- data/bin/waves-server +0 -4
- data/doc/rdoc/classes/Erubis/Context.html +0 -218
- data/doc/rdoc/classes/Kernel.html +0 -145
- data/doc/rdoc/classes/Symbol.html +0 -154
- data/doc/rdoc/classes/Tempfile.html +0 -161
- data/doc/rdoc/classes/Waves.html +0 -455
- data/doc/rdoc/classes/Waves/Application.html +0 -371
- data/doc/rdoc/classes/Waves/Blackboard.html +0 -296
- data/doc/rdoc/classes/Waves/Configurations.html +0 -283
- data/doc/rdoc/classes/Waves/Configurations/Base.html +0 -209
- data/doc/rdoc/classes/Waves/Configurations/Default.html +0 -237
- data/doc/rdoc/classes/Waves/Console.html +0 -187
- data/doc/rdoc/classes/Waves/Controllers.html +0 -203
- data/doc/rdoc/classes/Waves/Controllers/Base.html +0 -151
- data/doc/rdoc/classes/Waves/Controllers/Mixin.html +0 -312
- data/doc/rdoc/classes/Waves/Dispatchers.html +0 -118
- data/doc/rdoc/classes/Waves/Dispatchers/Base.html +0 -198
- data/doc/rdoc/classes/Waves/Dispatchers/Default.html +0 -224
- data/doc/rdoc/classes/Waves/Dispatchers/NotFoundError.html +0 -122
- data/doc/rdoc/classes/Waves/Dispatchers/Redirect.html +0 -173
- data/doc/rdoc/classes/Waves/Foundations.html +0 -131
- data/doc/rdoc/classes/Waves/Foundations/Default.html +0 -179
- data/doc/rdoc/classes/Waves/Foundations/Simple.html +0 -167
- data/doc/rdoc/classes/Waves/Helpers.html +0 -176
- data/doc/rdoc/classes/Waves/Helpers/AssetHelper.html +0 -212
- data/doc/rdoc/classes/Waves/Helpers/Common.html +0 -213
- data/doc/rdoc/classes/Waves/Helpers/Default.html +0 -135
- data/doc/rdoc/classes/Waves/Helpers/Form.html +0 -201
- data/doc/rdoc/classes/Waves/Helpers/Formatting.html +0 -232
- data/doc/rdoc/classes/Waves/Helpers/Model.html +0 -194
- data/doc/rdoc/classes/Waves/Helpers/NumberHelper.html +0 -165
- data/doc/rdoc/classes/Waves/Helpers/TagHelper.html +0 -226
- data/doc/rdoc/classes/Waves/Helpers/UrlHelper.html +0 -242
- data/doc/rdoc/classes/Waves/Helpers/View.html +0 -163
- data/doc/rdoc/classes/Waves/Inflect/InflectorMethods.html +0 -475
- data/doc/rdoc/classes/Waves/Layers.html +0 -175
- data/doc/rdoc/classes/Waves/Layers/DefaultErrors.html +0 -161
- data/doc/rdoc/classes/Waves/Layers/Inflect.html +0 -119
- data/doc/rdoc/classes/Waves/Layers/Inflect/English.html +0 -168
- data/doc/rdoc/classes/Waves/Layers/Inflect/English/Rules.html +0 -112
- data/doc/rdoc/classes/Waves/Layers/Inflect/English/StringMethods.html +0 -194
- data/doc/rdoc/classes/Waves/Layers/MVC.html +0 -204
- data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord.html +0 -239
- data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/ControllerMethods.html +0 -246
- data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/Symbol.html +0 -132
- data/doc/rdoc/classes/Waves/Layers/ORM/DataMapper.html +0 -166
- data/doc/rdoc/classes/Waves/Layers/ORM/Filebase.html +0 -157
- data/doc/rdoc/classes/Waves/Layers/ORM/Sequel.html +0 -232
- data/doc/rdoc/classes/Waves/Layers/ORM/Sequel/ControllerMethods.html +0 -246
- data/doc/rdoc/classes/Waves/Layers/Simple.html +0 -169
- data/doc/rdoc/classes/Waves/Layers/SimpleErrors.html +0 -159
- data/doc/rdoc/classes/Waves/Logger.html +0 -288
- data/doc/rdoc/classes/Waves/Mapping.html +0 -760
- data/doc/rdoc/classes/Waves/Mapping/PrettyUrls.html +0 -129
- data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/GetRules.html +0 -174
- data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/RestRules.html +0 -180
- data/doc/rdoc/classes/Waves/MimeTypes.html +0 -200
- data/doc/rdoc/classes/Waves/Renderers/Erubis.html +0 -162
- data/doc/rdoc/classes/Waves/Renderers/Haml.html +0 -160
- data/doc/rdoc/classes/Waves/Renderers/Markaby.html +0 -167
- data/doc/rdoc/classes/Waves/Renderers/Mixin.html +0 -191
- data/doc/rdoc/classes/Waves/Renderers/Scope.html +0 -181
- data/doc/rdoc/classes/Waves/Request.html +0 -441
- data/doc/rdoc/classes/Waves/Request/ParseError.html +0 -111
- data/doc/rdoc/classes/Waves/Response.html +0 -283
- data/doc/rdoc/classes/Waves/ResponseMixin.html +0 -460
- data/doc/rdoc/classes/Waves/ResponseProxy.html +0 -269
- data/doc/rdoc/classes/Waves/Server.html +0 -488
- data/doc/rdoc/classes/Waves/Session.html +0 -330
- data/doc/rdoc/classes/Waves/Utilities/Hash.html +0 -185
- data/doc/rdoc/classes/Waves/Utilities/Integer.html +0 -424
- data/doc/rdoc/classes/Waves/Utilities/Module.html +0 -174
- data/doc/rdoc/classes/Waves/Utilities/Object.html +0 -155
- data/doc/rdoc/classes/Waves/Utilities/Proc.html +0 -145
- data/doc/rdoc/classes/Waves/Utilities/String.html +0 -290
- data/doc/rdoc/classes/Waves/Views.html +0 -278
- data/doc/rdoc/classes/Waves/Views/Base.html +0 -118
- data/doc/rdoc/classes/Waves/Views/Mixin.html +0 -279
- data/doc/rdoc/classes/Waves/Views/NoTemplateError.html +0 -111
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/README_rdoc.html +0 -415
- data/doc/rdoc/files/bin/waves.html +0 -135
- data/doc/rdoc/files/doc/HISTORY.html +0 -265
- data/doc/rdoc/files/lib/commands/waves-console_rb.html +0 -110
- data/doc/rdoc/files/lib/commands/waves-server_rb.html +0 -108
- data/doc/rdoc/files/lib/controllers/base_rb.html +0 -101
- data/doc/rdoc/files/lib/controllers/mixin_rb.html +0 -101
- data/doc/rdoc/files/lib/dispatchers/base_rb.html +0 -101
- data/doc/rdoc/files/lib/dispatchers/default_rb.html +0 -101
- data/doc/rdoc/files/lib/foundations/default_rb.html +0 -101
- data/doc/rdoc/files/lib/foundations/simple_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/asset_helper_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/common_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/default_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/form_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/formatting_rb.html +0 -108
- data/doc/rdoc/files/lib/helpers/model_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/number_helper_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/tag_helper_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/url_helper_rb.html +0 -101
- data/doc/rdoc/files/lib/helpers/view_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/default_errors_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/inflect/english/rules_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/inflect/english/string_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/inflect/english_rb.html +0 -109
- data/doc/rdoc/files/lib/layers/mvc_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/orm/active_record/tasks/generate_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/orm/active_record/tasks/schema_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/orm/active_record_rb.html +0 -108
- data/doc/rdoc/files/lib/layers/orm/data_mapper_rb.html +0 -108
- data/doc/rdoc/files/lib/layers/orm/filebase_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/orm/migration_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/orm/sequel/tasks/generate_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/orm/sequel/tasks/schema_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/orm/sequel_rb.html +0 -108
- data/doc/rdoc/files/lib/layers/simple_errors_rb.html +0 -101
- data/doc/rdoc/files/lib/layers/simple_rb.html +0 -101
- data/doc/rdoc/files/lib/mapping/mapping_rb.html +0 -101
- data/doc/rdoc/files/lib/mapping/pretty_urls_rb.html +0 -101
- data/doc/rdoc/files/lib/renderers/erubis_rb.html +0 -108
- data/doc/rdoc/files/lib/renderers/haml_rb.html +0 -108
- data/doc/rdoc/files/lib/renderers/markaby_rb.html +0 -108
- data/doc/rdoc/files/lib/renderers/mixin_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/application_rb.html +0 -107
- data/doc/rdoc/files/lib/runtime/blackboard_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/configuration_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/console_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/debugger_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/logger_rb.html +0 -108
- data/doc/rdoc/files/lib/runtime/mime_types_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/request_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/response_mixin_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/response_proxy_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/response_rb.html +0 -101
- data/doc/rdoc/files/lib/runtime/server_rb.html +0 -108
- data/doc/rdoc/files/lib/runtime/session_rb.html +0 -101
- data/doc/rdoc/files/lib/tasks/cluster_rb.html +0 -101
- data/doc/rdoc/files/lib/tasks/gem_rb.html +0 -108
- data/doc/rdoc/files/lib/tasks/generate_rb.html +0 -101
- data/doc/rdoc/files/lib/utilities/hash_rb.html +0 -101
- data/doc/rdoc/files/lib/utilities/inflect_rb.html +0 -111
- data/doc/rdoc/files/lib/utilities/integer_rb.html +0 -101
- data/doc/rdoc/files/lib/utilities/module_rb.html +0 -101
- data/doc/rdoc/files/lib/utilities/object_rb.html +0 -101
- data/doc/rdoc/files/lib/utilities/proc_rb.html +0 -101
- data/doc/rdoc/files/lib/utilities/string_rb.html +0 -101
- data/doc/rdoc/files/lib/utilities/symbol_rb.html +0 -101
- data/doc/rdoc/files/lib/utilities/tempfile_rb.html +0 -115
- data/doc/rdoc/files/lib/views/base_rb.html +0 -101
- data/doc/rdoc/files/lib/views/mixin_rb.html +0 -101
- data/doc/rdoc/files/lib/waves_rb.html +0 -195
- data/doc/rdoc/fr_class_index.html +0 -104
- data/doc/rdoc/fr_file_index.html +0 -97
- data/doc/rdoc/fr_method_index.html +0 -233
- data/doc/rdoc/index.html +0 -24
- data/doc/rdoc/rdoc-style.css +0 -208
- data/lib/commands/waves-console.rb +0 -21
- data/lib/controllers/base.rb +0 -11
- data/lib/controllers/mixin.rb +0 -165
- data/lib/foundations/default.rb +0 -27
- data/lib/foundations/simple.rb +0 -30
- data/lib/helpers/asset_helper.rb +0 -67
- data/lib/helpers/common.rb +0 -66
- data/lib/helpers/default.rb +0 -13
- data/lib/helpers/number_helper.rb +0 -25
- data/lib/helpers/tag_helper.rb +0 -58
- data/lib/helpers/url_helper.rb +0 -77
- data/lib/layers/default_errors.rb +0 -26
- data/lib/layers/inflect/english/rules.rb +0 -88
- data/lib/layers/inflect/english/string.rb +0 -24
- data/lib/layers/orm/filebase.rb +0 -22
- data/lib/layers/simple.rb +0 -32
- data/lib/layers/simple_errors.rb +0 -23
- data/lib/mapping/mapping.rb +0 -289
- data/lib/mapping/pretty_urls.rb +0 -96
- data/lib/renderers/markaby.rb +0 -33
- data/lib/runtime/application.rb +0 -69
- data/lib/runtime/blackboard.rb +0 -57
- data/lib/runtime/debugger.rb +0 -9
- data/lib/runtime/response_proxy.rb +0 -30
- data/lib/tasks/cluster.rb +0 -26
- data/lib/utilities/inflect.rb +0 -110
- data/lib/utilities/module.rb +0 -21
- data/lib/utilities/proc.rb +0 -16
- data/lib/utilities/string.rb +0 -49
- data/lib/utilities/symbol.rb +0 -10
- data/lib/utilities/tempfile.rb +0 -9
- data/lib/views/base.rb +0 -9
- data/samples/blog/bin/waves-console +0 -3
- data/samples/blog/bin/waves-server +0 -3
- data/samples/blog/configurations/mapping.rb +0 -23
- data/samples/blog/doc/EMTPY +0 -0
- data/samples/blog/lib/application.rb +0 -5
- data/samples/jub/Rakefile +0 -72
- data/samples/jub/bin/waves-console +0 -4
- data/samples/jub/bin/waves-server +0 -4
- data/samples/jub/configurations/development.rb +0 -31
- data/samples/jub/configurations/mapping.rb +0 -18
- data/samples/jub/configurations/production.rb +0 -31
- data/samples/jub/lib/application.rb +0 -5
- data/samples/jub/startup.rb +0 -6
- data/samples/jub/templates/errors/not_found_404.mab +0 -2
- data/samples/jub/templates/errors/server_error_500.mab +0 -2
- data/samples/jub/templates/layouts/default.mab +0 -14
- data/verify/app_generation/helpers.rb +0 -24
- data/verify/app_generation/startup.rb +0 -39
- data/verify/blackboard/blackboard_verify.rb +0 -92
- data/verify/blackboard/helpers.rb +0 -5
- data/verify/configurations/attributes.rb +0 -37
- data/verify/configurations/helpers.rb +0 -1
- data/verify/configurations/rack_integration.rb +0 -29
- data/verify/controllers/base.rb +0 -37
- data/verify/controllers/helpers.rb +0 -13
- data/verify/controllers/interface.rb +0 -51
- data/verify/core/helpers.rb +0 -3
- data/verify/core/utilities.rb +0 -177
- data/verify/foundations/default.rb +0 -86
- data/verify/foundations/default_application/Rakefile +0 -14
- data/verify/foundations/default_application/bin/waves-console +0 -3
- data/verify/foundations/default_application/bin/waves-server +0 -3
- data/verify/foundations/default_application/configurations/development.rb +0 -26
- data/verify/foundations/default_application/configurations/mapping.rb +0 -14
- data/verify/foundations/default_application/configurations/production.rb +0 -30
- data/verify/foundations/default_application/controllers/default.rb +0 -15
- data/verify/foundations/default_application/controllers/loaded.rb +0 -15
- data/verify/foundations/default_application/defaultapplication.db +0 -0
- data/verify/foundations/default_application/helpers/loaded.rb +0 -10
- data/verify/foundations/default_application/lib/application.rb +0 -5
- data/verify/foundations/default_application/models/default.rb +0 -13
- data/verify/foundations/default_application/models/loaded.rb +0 -13
- data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +0 -9
- data/verify/foundations/default_application/startup.rb +0 -7
- data/verify/foundations/default_application/templates/errors/not_found_404.mab +0 -2
- data/verify/foundations/default_application/templates/errors/server_error_500.mab +0 -2
- data/verify/foundations/default_application/templates/layouts/default.mab +0 -14
- data/verify/foundations/default_application/views/default.rb +0 -7
- data/verify/foundations/default_application/views/loaded.rb +0 -15
- data/verify/foundations/helpers.rb +0 -1
- data/verify/foundations/simple.rb +0 -25
- data/verify/helpers.rb +0 -76
- data/verify/layers/data_mapper/association_verify.rb +0 -87
- data/verify/layers/default_errors.rb +0 -29
- data/verify/layers/helpers.rb +0 -1
- data/verify/layers/migration.rb +0 -33
- data/verify/layers/sequel/model.rb +0 -41
- data/verify/layers/sequeltest.db +0 -0
- data/verify/mapping/always.rb +0 -19
- data/verify/mapping/filters.rb +0 -65
- data/verify/mapping/handle.rb +0 -24
- data/verify/mapping/helpers.rb +0 -7
- data/verify/mapping/matches.rb +0 -27
- data/verify/mapping/named.rb +0 -29
- data/verify/mapping/options.rb +0 -17
- data/verify/mapping/path.rb +0 -40
- data/verify/mapping/response_proxy.rb +0 -50
- data/verify/mapping/threaded.rb +0 -25
- data/verify/requests/helpers.rb +0 -16
- data/verify/requests/request.rb +0 -73
- data/verify/requests/response.rb +0 -59
- data/verify/requests/session.rb +0 -54
- data/verify/views/helpers.rb +0 -1
- data/verify/views/rendering.rb +0 -34
- data/verify/views/templates/foo.erb +0 -0
- data/verify/views/templates/moo.erb +0 -0
- data/verify/views/templates/moo.mab +0 -0
data/bin/waves
CHANGED
|
@@ -1,84 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# The +waves+ script generates a new Waves application or updates an existing app. The script uses {RakeGen}[http://github.com/automatthew/rakegen] for file copies and template processing, and the current version of RakeGen requires you to affirm that you want to clobber each and every file when doing an update.
|
|
6
|
-
#
|
|
7
|
-
# == Usage
|
|
8
|
-
#
|
|
9
|
-
# # Generate a Waves app using the default ORM layer, which is currently Sequel
|
|
10
|
-
# waves /path/to/app
|
|
11
|
-
#
|
|
12
|
-
# # Generate an app using the default ORM layer, which is currently Sequel
|
|
13
|
-
# waves /path/to/app --orm=active_record
|
|
14
|
-
#
|
|
15
|
-
# # Generate an app that does not include an ORM layer
|
|
16
|
-
# waves /path/to/app -o none
|
|
3
|
+
# WARNING: This strange preamble might look easy to clean-up, but it is needed
|
|
4
|
+
# to work with older versions of gems (< 1.2).
|
|
17
5
|
|
|
18
6
|
require 'rubygems'
|
|
19
|
-
require 'choice'
|
|
20
|
-
require 'rakegen'
|
|
21
7
|
|
|
8
|
+
WAVES = "#{File.dirname(__FILE__)}/.." unless defined? WAVES
|
|
22
9
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
rescue LoadError
|
|
32
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'utilities', 'string')
|
|
10
|
+
waves = [
|
|
11
|
+
WAVES, ENV['WAVES'], './waves'
|
|
12
|
+
].compact.map { |dir| File.join(dir, 'lib') }.find( &File.method( :directory? ) )
|
|
13
|
+
if waves
|
|
14
|
+
$: << waves
|
|
15
|
+
waves = File.join( waves, 'waves' )
|
|
16
|
+
else
|
|
17
|
+
waves = 'waves'
|
|
33
18
|
end
|
|
19
|
+
require waves
|
|
34
20
|
|
|
35
|
-
Choice.options do
|
|
36
|
-
banner 'Usage: waves path/to/app [-h]'
|
|
37
|
-
option :help do
|
|
38
|
-
long '--help'
|
|
39
|
-
desc 'Show this message'
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
option :orm do
|
|
43
|
-
short '-o'
|
|
44
|
-
long '--orm=ORM'
|
|
45
|
-
desc "Select an ORM (e.g. active_record, sequel, none)"
|
|
46
|
-
default "sequel"
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
orm = Choice.choices.orm.snake_case
|
|
52
|
-
orm_require, orm_include = case orm
|
|
53
|
-
when 'sequel'
|
|
54
|
-
["require 'layers/orm/sequel'", "include Waves::Layers::ORM::Sequel"]
|
|
55
|
-
when 'active_record'
|
|
56
|
-
["require 'layers/orm/active_record'", "include Waves::Layers::ORM::ActiveRecord"]
|
|
57
|
-
when 'none'
|
|
58
|
-
['', '# This app was generated without an ORM layer']
|
|
59
|
-
end
|
|
60
21
|
|
|
61
|
-
|
|
62
|
-
app_name = File.basename(app_path)
|
|
63
|
-
if app_name =~ /[^\w\d_]/
|
|
64
|
-
raise ArgumentError, <<-TEXT
|
|
65
|
-
Unusable name: \"#{app_name}\"
|
|
66
|
-
Application names may contain only letters, numbers, and underscores."
|
|
67
|
-
TEXT
|
|
68
|
-
end
|
|
22
|
+
puts "** Waves #{Waves.version} **"
|
|
69
23
|
|
|
70
|
-
template = "#{WAVES}/app"
|
|
71
24
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
gen.executables = %w{ bin/waves-console bin/waves-server}
|
|
25
|
+
begin
|
|
26
|
+
require "commands/#{ARGV.first}"
|
|
27
|
+
rescue LoadError => e
|
|
28
|
+
require "commands/help"
|
|
77
29
|
end
|
|
78
|
-
|
|
79
|
-
puts "** Creating new Waves application ..."
|
|
80
|
-
|
|
81
|
-
Rake::Task["waves:app"].invoke
|
|
82
|
-
|
|
83
|
-
puts "** Application created!"
|
|
84
|
-
|
data/doc/HISTORY
CHANGED
|
@@ -1,44 +1 @@
|
|
|
1
|
-
|
|
2
|
-
- ActiveRecord ORM layer
|
|
3
|
-
- base controller helpers that rely on a particular ORM are now defined in the ORM layers
|
|
4
|
-
- Sequel requires moved into the self.included block, to help with the mem footprint
|
|
5
|
-
- rake generate:model reappeared
|
|
6
|
-
- rake waves:freeze and waves:unfreeze
|
|
7
|
-
- Rack::Static declared for /css, /javascript, and /images in generated applications
|
|
8
|
-
- added Lawrence Pit's Haml renderer
|
|
9
|
-
- English inflector pulled into its own layer, in the hope of allowing localization someday
|
|
10
|
-
- utility monkeypatches pulled into modules where possible, for better troubleshooting
|
|
11
|
-
- docs, samples, and verify now actually included in the gem
|
|
12
|
-
- monkeypatch to Tempfile to work around problem with file uploading and Rack.
|
|
13
|
-
0.7.6
|
|
14
|
-
- added metaid as gem dependency
|
|
15
|
-
- Special handling in Windows for interrupts ('cause Windows has trouble with those)
|
|
16
|
-
- Fixed query param destructuring to work for 3+ levels
|
|
17
|
-
0.7.5
|
|
18
|
-
- Foundations and Layers
|
|
19
|
-
- Sequel ORM is now a Layer, instead of being baked in
|
|
20
|
-
- Almost all boilerplate code removed from generated app, by virtue of the Layers refactoring
|
|
21
|
-
- Configuration attribute for selecting a Rack handler
|
|
22
|
-
- Mapping#handle method to register blocks that handle exceptions (e.g. NotFoundError)
|
|
23
|
-
- Blackboard, a very simple shared storaged usable during request processing.
|
|
24
|
-
- Fixed waves script to work when installed as gem (regression)
|
|
25
|
-
- Revised and extended documentation
|
|
26
|
-
- Expanded spec coverage
|
|
27
|
-
0.7.3:
|
|
28
|
-
- Added explicit require for daemons gem
|
|
29
|
-
- Added support for running off source
|
|
30
|
-
- Added support for using SQLite
|
|
31
|
-
- Improved inflection
|
|
32
|
-
- Windows support for waves, waves-server, and waves-console
|
|
33
|
-
0.7.2:
|
|
34
|
-
- Minor bug fixes, improved documentation
|
|
35
|
-
0.7.1:
|
|
36
|
-
- Minor bug fixes, improved documentation
|
|
37
|
-
0.7.0:
|
|
38
|
-
- Minor bug fixes, improved documentation
|
|
39
|
-
0.6.9:
|
|
40
|
-
- Minor bug fixes, improved documentation
|
|
41
|
-
0.6.8:
|
|
42
|
-
- Minor bug fixes, improved documentation
|
|
43
|
-
0.6.7:
|
|
44
|
-
- Initial gem release.
|
|
1
|
+
See http://github.com/dyoder/waves/tree/master
|
data/doc/README
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
To find out more about Waves, visit our Web site, http://rubywaves.com.
|
data/doc/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.8.0
|
data/lib/caches/file.rb
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'caches/synchronized'
|
|
2
|
+
|
|
3
|
+
module Waves
|
|
4
|
+
module Caches
|
|
5
|
+
|
|
6
|
+
class File < Simple
|
|
7
|
+
|
|
8
|
+
def initialize( args )
|
|
9
|
+
raise ArgumentError, ":directory is nil" if args[ :directory ].nil?
|
|
10
|
+
@directory = args[ :directory ] ; @keys = []
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def store( key, value )
|
|
14
|
+
@keys << key
|
|
15
|
+
::File.open( @directory / key, 'w') { |f| Marshal.dump( value, f ) }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def delete( key )
|
|
19
|
+
if @keys.include? key
|
|
20
|
+
::File.delete( @directory / key )
|
|
21
|
+
@keys.delete( key )
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def clear
|
|
26
|
+
@keys.each { |key| delete( key ) }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def fetch( key )
|
|
30
|
+
Marshal.load( ::File.read( @directory / key ) ) if @keys.include?( key )
|
|
31
|
+
rescue ArgumentError
|
|
32
|
+
nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class SynchronizedFile < Synchronized
|
|
38
|
+
|
|
39
|
+
def initialize( args )
|
|
40
|
+
super( File.new( args ) )
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'memcached'
|
|
2
|
+
module Waves
|
|
3
|
+
module Caches
|
|
4
|
+
class Memcached < Simple
|
|
5
|
+
|
|
6
|
+
def initialize( args )
|
|
7
|
+
raise ArgumentError, ":servers is nil" if args[ :servers ].nil?
|
|
8
|
+
@cache = ::Memcached.new( args[ :servers ], args[ :options ] || {} )
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def store( key,value, ttl = 0, marshal = true )
|
|
12
|
+
cache = @cache.clone; cache.add( key.to_s, value, ttl, marshal ); cache.destroy
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def fetch( key )
|
|
16
|
+
cache = @cache.clone; cache.get( key.to_s ); cache.destroy
|
|
17
|
+
rescue ::Memcached::NotFound => e
|
|
18
|
+
nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def delete( key )
|
|
22
|
+
cache = @cache.clone; cache.delete( key.to_s ); cache.destroy
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def clear
|
|
26
|
+
cache = @cache.clone; cache.flush; cache.destroy
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class SynchronizedMemcached < Synchronized
|
|
32
|
+
|
|
33
|
+
def initialize( args )
|
|
34
|
+
super( Memcached.new( args ) )
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Waves
|
|
2
|
+
|
|
3
|
+
module Caches
|
|
4
|
+
|
|
5
|
+
#
|
|
6
|
+
# This class is more or less here to establish the basic interface for caching and for
|
|
7
|
+
# lightweight caching that doesn't require a dedicated caching process.
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
class Simple
|
|
11
|
+
|
|
12
|
+
def initialize( hash = {} ) ; @cache = hash ; end
|
|
13
|
+
def [](key) ; fetch(key) ; end
|
|
14
|
+
def []=( key, value ) ; store( key, value ) ; end
|
|
15
|
+
def exists?( key ) ; fetch(key) == nil ? false : true ; end
|
|
16
|
+
alias :exist? :exists?
|
|
17
|
+
def store( key, val ) ; @cache[ key ] = val ; end
|
|
18
|
+
def fetch( key ) ; @cache[ key ] ; end
|
|
19
|
+
def delete( key ) ; @cache.delete( key ) ; end
|
|
20
|
+
def clear ; @cache = {} ; end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
module Waves
|
|
3
|
+
|
|
4
|
+
module Caches
|
|
5
|
+
|
|
6
|
+
#
|
|
7
|
+
# This is just a proxy for the real cache, but adds Waves synchronization
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
class Synchronized
|
|
11
|
+
|
|
12
|
+
def initialize( cache ) ; @cache = cache ; end
|
|
13
|
+
def [](key) ; @cache.fetch(key) ; end
|
|
14
|
+
def []=( key, value ) ; @cache.store( key, value ) ; end
|
|
15
|
+
def exists?( key ) ; @cache.has_key?( key ) ; end
|
|
16
|
+
alias :exist? :exists?
|
|
17
|
+
def store( key, val ) ; synchronize { @cache.store( key, value ) }; end
|
|
18
|
+
def fetch( keys ) ; @cache.fetch( key ) ; end
|
|
19
|
+
def delete( key ) ; synchronize { @cache.delete( key ) } ; end
|
|
20
|
+
def clear ; synchronize { @cache.clear } ; end
|
|
21
|
+
def synchronize( &block ) ; Waves.synchronize( &block ) ; end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'choice'
|
|
2
|
+
|
|
3
|
+
Choice.options do
|
|
4
|
+
header 'Run waves in console mode.'
|
|
5
|
+
header ''
|
|
6
|
+
option :mode do
|
|
7
|
+
short '-c'
|
|
8
|
+
long '--config=CONFIG'
|
|
9
|
+
desc 'Configuration to use.'
|
|
10
|
+
desc 'Defaults to development.'
|
|
11
|
+
cast Symbol
|
|
12
|
+
end
|
|
13
|
+
separator ''
|
|
14
|
+
option :startup do
|
|
15
|
+
short '-s'
|
|
16
|
+
long '--startup'
|
|
17
|
+
desc 'Startup file to load.'
|
|
18
|
+
desc 'Defaults to "startup.rb"'
|
|
19
|
+
end
|
|
20
|
+
separator ''
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
require 'runtime/console'
|
|
24
|
+
|
|
25
|
+
begin
|
|
26
|
+
console = Waves::Console.load( Choice.choices )
|
|
27
|
+
Object.send(:define_method, :waves) { console }
|
|
28
|
+
require 'irb'
|
|
29
|
+
require 'irb/completion'
|
|
30
|
+
ARGV.clear
|
|
31
|
+
Waves.log.info "Runtime console starting ..."
|
|
32
|
+
IRB.start
|
|
33
|
+
rescue LoadError => e
|
|
34
|
+
puts e.message
|
|
35
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'choice'
|
|
2
|
+
require 'rakegen'
|
|
3
|
+
|
|
4
|
+
waves = File.expand_path( File.dirname( __FILE__ ) / '..' / '..' )
|
|
5
|
+
orms = Dir[ waves / :lib / :layers / :orm / :providers / '*.rb' ].map { |path| File.basename( path, '.rb' )}
|
|
6
|
+
templates = Dir[ waves / :templates / '*' ].map { |path| File.basename( path ) }
|
|
7
|
+
|
|
8
|
+
Choice.options do
|
|
9
|
+
|
|
10
|
+
option :help do
|
|
11
|
+
long '--help'
|
|
12
|
+
desc 'Show this message'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
option :orm do
|
|
16
|
+
short '-o'
|
|
17
|
+
long '--orm=ORM'
|
|
18
|
+
desc "Select an ORM (currently supported: #{orms * ', '} )"
|
|
19
|
+
valid orms
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
option :template do
|
|
23
|
+
short '-t'
|
|
24
|
+
long '--template=TEMPLATE'
|
|
25
|
+
desc "Select a template for your app (options: #{templates * ', '})."
|
|
26
|
+
valid templates
|
|
27
|
+
default 'classic'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
option :name, :required => true do
|
|
31
|
+
short '-n'
|
|
32
|
+
long '--name'
|
|
33
|
+
desc "Select a name for the application. Use only letters, numbers, dashes, or underscores."
|
|
34
|
+
validate /^[\w\d\-]+$/
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
options = Choice.choices
|
|
40
|
+
|
|
41
|
+
puts "** Creating new Waves application ..."
|
|
42
|
+
|
|
43
|
+
# why do i have to do this?
|
|
44
|
+
FileUtils.mkdir( File.expand_path( options.name ) )
|
|
45
|
+
|
|
46
|
+
generator = Rakegen.new("generate") do |gen|
|
|
47
|
+
gen.source = waves / :templates / options.template
|
|
48
|
+
gen.target = File.expand_path( options.name )
|
|
49
|
+
gen.template_assigns = options.merge( :name => options.name.gsub('-','_').camel_case )
|
|
50
|
+
end.invoke
|
|
51
|
+
|
|
52
|
+
puts "** Application created!"
|
|
@@ -39,6 +39,12 @@ Choice.options do
|
|
|
39
39
|
desc 'Run as a daemon.'
|
|
40
40
|
end
|
|
41
41
|
separator ''
|
|
42
|
+
option :turbo do
|
|
43
|
+
short '-t'
|
|
44
|
+
long '--turbo'
|
|
45
|
+
desc 'For thread-safe applications, run without dispatch level mutex.'
|
|
46
|
+
end
|
|
47
|
+
separator ''
|
|
42
48
|
option :debugger do
|
|
43
49
|
short '-u'
|
|
44
50
|
long '--debugger'
|
|
@@ -47,9 +53,16 @@ Choice.options do
|
|
|
47
53
|
separator ''
|
|
48
54
|
option :startup do
|
|
49
55
|
short '-s'
|
|
50
|
-
long '--startup'
|
|
56
|
+
long '--startup=PATH'
|
|
51
57
|
desc 'Startup file to load.'
|
|
52
|
-
desc 'Defaults to "
|
|
58
|
+
desc 'Defaults to "startup.rb"'
|
|
53
59
|
end
|
|
60
|
+
separator ''
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
require 'runtime/server'
|
|
64
|
+
begin
|
|
65
|
+
Waves::Server.run( Choice.choices )
|
|
66
|
+
rescue LoadError => e
|
|
67
|
+
puts e.message
|
|
54
68
|
end
|
|
55
|
-
Waves::Server.run( Choice.choices )
|
data/lib/dispatchers/base.rb
CHANGED
|
@@ -2,11 +2,9 @@ module Waves
|
|
|
2
2
|
|
|
3
3
|
module Dispatchers
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# a slightly fleshier one.
|
|
9
|
-
class NotFoundError < Exception ; end
|
|
5
|
+
class NotFoundError < RuntimeError ; end
|
|
6
|
+
class Unauthorized < RuntimeError; end
|
|
7
|
+
class BadRequest < RuntimeError; end
|
|
10
8
|
|
|
11
9
|
# Redirect exceptions are rescued by the Waves dispatcher and used to set the
|
|
12
10
|
# response status and location.
|
|
@@ -16,32 +14,35 @@ module Waves
|
|
|
16
14
|
@path = path
|
|
17
15
|
@status = status
|
|
18
16
|
end
|
|
17
|
+
def message
|
|
18
|
+
"location: #{@path} status: #{@status}"
|
|
19
|
+
end
|
|
19
20
|
end
|
|
20
21
|
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
22
|
+
#
|
|
23
|
+
# Waves::Dispatchers::Base provides the basic request processing structure
|
|
24
|
+
# for a Rack application. It creates a Waves request, determines whether
|
|
25
|
+
# to enclose the request processing in a mutex benchmarks it, logs it,
|
|
26
|
+
# and handles redirects. Derived classes need only process the request
|
|
27
|
+
# within the +safe+ method, which must take a Waves::Request and return
|
|
28
|
+
# a Waves::Response.
|
|
29
|
+
#
|
|
30
|
+
|
|
27
31
|
class Base
|
|
28
32
|
|
|
29
33
|
# As with any Rack application, a Waves dispatcher must provide a call method
|
|
30
|
-
# that takes an +env+
|
|
34
|
+
# that takes an +env+ hash.
|
|
31
35
|
def call( env )
|
|
32
|
-
if Waves.
|
|
33
|
-
Waves
|
|
36
|
+
response = if Waves.synchronize? or Waves.debug?
|
|
37
|
+
Waves.synchronize { Waves.reload ; _call( env ) }
|
|
34
38
|
else
|
|
35
39
|
_call( env )
|
|
36
40
|
end
|
|
37
41
|
end
|
|
38
42
|
|
|
39
43
|
# Called by event driven servers like thin and ebb. Returns true if
|
|
40
|
-
# the server should run the request in a separate thread
|
|
41
|
-
|
|
42
|
-
def deferred?( env )
|
|
43
|
-
Waves::Application.instance.mapping.threaded?( env )
|
|
44
|
-
end
|
|
44
|
+
# the server should run the request in a separate thread.
|
|
45
|
+
def deferred?( env ) ; Waves.config.resource.new( Waves::Request.new( env ) ).deferred? ; end
|
|
45
46
|
|
|
46
47
|
private
|
|
47
48
|
|
|
@@ -59,7 +60,7 @@ module Waves
|
|
|
59
60
|
Waves::Logger.info "#{request.method}: #{request.url} handled in #{(t*1000).round} ms."
|
|
60
61
|
response.finish
|
|
61
62
|
end
|
|
62
|
-
|
|
63
|
+
|
|
63
64
|
end
|
|
64
65
|
|
|
65
66
|
end
|