ramaze 0.3.9.1 → 2023.01.06
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.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/README.md +125 -0
- data/Rakefile +13 -186
- data/bin/ramaze +4 -149
- data/examples/app/auth/layout/auth.xhtml +25 -0
- data/examples/app/auth/start.rb +25 -0
- data/examples/app/auth/view/index.xhtml +4 -0
- data/examples/app/auth/view/login.xhtml +20 -0
- data/examples/app/auth/view/secret.xhtml +1 -0
- data/examples/app/blog/app.rb +23 -0
- data/examples/app/blog/config.ru +19 -0
- data/examples/app/blog/controller/init.rb +30 -0
- data/examples/app/blog/controller/posts.rb +223 -0
- data/examples/app/blog/controller/users.rb +152 -0
- data/examples/app/blog/layout/default.xhtml +61 -0
- data/examples/app/blog/migrations/01_create_schema.rb +50 -0
- data/examples/app/blog/model/comment.rb +42 -0
- data/examples/app/blog/model/init.rb +44 -0
- data/examples/app/blog/model/post.rb +33 -0
- data/examples/app/blog/model/user.rb +100 -0
- data/examples/app/blog/public/css/grid.css +107 -0
- data/examples/app/blog/public/css/layout.css +203 -0
- data/examples/app/blog/public/css/reset.css +123 -0
- data/examples/app/blog/public/css/text.css +109 -0
- data/examples/app/blog/public/dispatch.fcgi +11 -0
- data/examples/app/blog/public/favicon.ico +0 -0
- data/examples/app/blog/public/images/bg.png +0 -0
- data/examples/app/blog/start.rb +20 -0
- data/examples/app/blog/view/feed.xhtml +23 -0
- data/examples/app/blog/view/form.xhtml +11 -0
- data/examples/app/blog/view/index.xhtml +44 -0
- data/examples/app/blog/view/users/form.xhtml +12 -0
- data/examples/app/blog/view/users/index.xhtml +30 -0
- data/examples/app/blog/view/users/login.xhtml +8 -0
- data/examples/app/blog/view/view.xhtml +68 -0
- data/examples/app/chat/layout/default.xhtml +13 -0
- data/examples/app/chat/model/history.rb +38 -0
- data/examples/app/chat/model/message.rb +7 -0
- data/examples/app/chat/public/css/chat.css +9 -0
- data/examples/app/chat/public/js/chat.js +28 -0
- data/{lib/proto → examples/app/chat}/public/js/jquery.js +75 -15
- data/examples/app/chat/start.rb +39 -0
- data/examples/app/chat/view/chat.xhtml +9 -0
- data/examples/app/chat/view/index.xhtml +7 -0
- data/examples/app/localization/locale/de.yaml +5 -0
- data/examples/app/localization/locale/en.yaml +5 -0
- data/examples/app/localization/locale/ja.yaml +5 -0
- data/examples/app/localization/start.rb +48 -0
- data/examples/app/todolist/controller/init.rb +11 -0
- data/examples/app/todolist/controller/task.rb +39 -0
- data/examples/app/todolist/layout/default.xhtml +14 -0
- data/examples/app/todolist/model/init.rb +14 -0
- data/examples/app/todolist/model/task.rb +39 -0
- data/examples/app/todolist/public/css/screen.css +63 -0
- data/examples/app/todolist/start.rb +7 -0
- data/examples/app/todolist/view/index.xhtml +29 -0
- data/examples/{upload → app/upload}/start.rb +7 -3
- data/examples/app/whywiki/spec/whywiki.rb +56 -0
- data/examples/{whywiki → app/whywiki}/start.rb +10 -9
- data/examples/{whywiki/template → app/whywiki/view}/edit.xhtml +2 -2
- data/examples/app/whywiki/view/show.xhtml +20 -0
- data/examples/{wikore → app/wikore}/spec/wikore.rb +7 -9
- data/examples/{wikore → app/wikore}/src/controller.rb +9 -11
- data/examples/{wikore → app/wikore}/src/model.rb +11 -13
- data/examples/app/wikore/start.rb +9 -0
- data/examples/{wiktacular/template/html_layout.xhtml → app/wiktacular/layout/application.xhtml} +1 -1
- data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-21-12.mkd +1 -1
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
- data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/markdown/current.mkd +2 -2
- data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_19-43-50.mkd +2 -2
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-01.mkd +11 -11
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-32.mkd +12 -12
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-08.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-54.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/current.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/spec/wiktacular.rb +39 -40
- data/examples/{wiktacular → app/wiktacular}/src/controller.rb +18 -18
- data/examples/{wiktacular → app/wiktacular}/src/model.rb +30 -14
- data/examples/{wiktacular → app/wiktacular}/start.rb +1 -1
- data/examples/{wiktacular/template → app/wiktacular/view}/edit.xhtml +2 -2
- data/examples/{wiktacular/template → app/wiktacular/view}/new.xhtml +1 -1
- data/examples/{element.rb → basic/element.rb} +5 -3
- data/examples/basic/gestalt.rb +26 -0
- data/examples/basic/hello.rb +14 -0
- data/examples/{layout.rb → basic/layout.rb} +2 -2
- data/examples/basic/linking.rb +29 -0
- data/examples/basic/partial.rb +26 -0
- data/examples/{simple.rb → basic/simple.rb} +9 -12
- data/examples/{caching.rb → helpers/cache.rb} +9 -7
- data/examples/helpers/paginate.rb +71 -0
- data/examples/helpers/rest.rb +28 -0
- data/examples/helpers/simple_captcha.rb +29 -0
- data/examples/{css.rb → misc/css.rb} +6 -12
- data/examples/misc/memleak_detector.rb +37 -0
- data/examples/misc/nagoro_element.rb +43 -0
- data/examples/{ramaise.rb → misc/ramaise.rb} +2 -2
- data/examples/misc/rapp.rb +56 -0
- data/examples/misc/sequel_scaffolding.rb +45 -0
- data/examples/misc/serve_directory.rb +6 -0
- data/examples/templates/template_erubis.rb +9 -10
- data/examples/templates/template_ezamar.rb +8 -7
- data/examples/templates/template_haml.rb +7 -8
- data/examples/templates/template_liquid.rb +20 -19
- data/examples/templates/template_markaby.rb +6 -7
- data/examples/templates/template_mustache.rb +70 -0
- data/examples/templates/template_nagoro.rb +6 -7
- data/examples/templates/template_redcloth.rb +8 -9
- data/examples/templates/template_remarkably.rb +8 -9
- data/examples/templates/template_tenjin.rb +10 -15
- data/examples/templates/{template → view}/external.haml +4 -4
- data/examples/templates/{template → view}/external.mab +4 -4
- data/examples/templates/view/external.mt +29 -0
- data/examples/templates/{template → view}/external.nag +4 -4
- data/examples/templates/{template → view}/external.redcloth +4 -4
- data/examples/templates/{template → view}/external.rem +4 -4
- data/examples/templates/{template → view}/external.rhtml +6 -6
- data/examples/templates/{template → view}/external.tenjin +4 -4
- data/examples/templates/{template → view}/external.zmr +6 -6
- data/guide/AUTHORS +80 -0
- data/guide/CHANGELOG +20210 -0
- data/guide/LICENSE +19 -0
- data/guide/_static/logo.png +0 -0
- data/guide/_static/logo.svg +49 -0
- data/guide/css/common.css +20 -0
- data/guide/general/cache.md +168 -0
- data/guide/general/configuration.md +169 -0
- data/guide/general/contributing.md +182 -0
- data/guide/general/controllers.md +210 -0
- data/guide/general/helpers.md +89 -0
- data/guide/general/installation.md +59 -0
- data/guide/general/logging.md +96 -0
- data/guide/general/middlewares.md +111 -0
- data/guide/general/models.md +79 -0
- data/{doc/readme_chunks/principles.txt → guide/general/principles.md} +15 -17
- data/guide/general/ramaze_command.md +110 -0
- data/guide/general/routes.md +82 -0
- data/guide/general/sessions.md +210 -0
- data/guide/general/special_thanks.md +69 -0
- data/guide/general/testing.md +228 -0
- data/guide/general/upgrading.md +85 -0
- data/guide/general/views.md +335 -0
- data/lib/proto/Gemfile +4 -0
- data/lib/proto/README.md +35 -0
- data/lib/proto/Rakefile +1 -0
- data/lib/proto/app.rb +9 -0
- data/lib/proto/config.ru +19 -0
- data/lib/proto/controller/init.rb +18 -0
- data/lib/proto/controller/main.rb +13 -10
- data/lib/proto/layout/default.xhtml +57 -0
- data/lib/proto/public/css/grid.css +107 -0
- data/lib/proto/public/css/layout.css +81 -0
- data/lib/proto/public/css/reset.css +123 -0
- data/lib/proto/public/css/text.css +109 -0
- data/lib/proto/public/favicon.ico +0 -0
- data/lib/proto/public/images/bg.png +0 -0
- data/lib/proto/spec/helper.rb +39 -0
- data/lib/proto/task/ramaze.rake +57 -0
- data/lib/proto/view/index.xhtml +36 -25
- data/lib/ramaze/app.rb +198 -0
- data/lib/ramaze/bin/create.rb +92 -0
- data/lib/ramaze/bin/runner.rb +127 -0
- data/lib/ramaze/cache/lru.rb +88 -0
- data/lib/ramaze/cache/memcache.rb +219 -0
- data/lib/ramaze/cache/moneta.rb +143 -0
- data/lib/ramaze/cache/redis.rb +163 -0
- data/lib/ramaze/cache/sequel.rb +373 -0
- data/lib/ramaze/cache.rb +42 -82
- data/lib/ramaze/controller/default.rb +25 -0
- data/lib/ramaze/controller.rb +184 -224
- data/lib/ramaze/current.rb +17 -68
- data/lib/ramaze/default_middleware.rb +24 -0
- data/lib/ramaze/files.rb +59 -0
- data/lib/ramaze/gestalt.rb +95 -63
- data/lib/ramaze/helper/auth.rb +107 -107
- data/lib/ramaze/helper/bench.rb +51 -0
- data/lib/ramaze/helper/blue_form.rb +683 -0
- data/lib/ramaze/helper/cache.rb +108 -130
- data/lib/ramaze/helper/csrf.rb +191 -0
- data/lib/ramaze/helper/email.rb +116 -0
- data/lib/ramaze/helper/erector.rb +113 -0
- data/lib/ramaze/helper/flash.rb +42 -39
- data/lib/ramaze/helper/formatting.rb +200 -35
- data/lib/ramaze/helper/gestalt.rb +49 -0
- data/lib/ramaze/helper/gravatar.rb +75 -0
- data/lib/ramaze/helper/identity.rb +93 -68
- data/lib/ramaze/helper/layout.rb +128 -0
- data/lib/ramaze/helper/link.rb +52 -119
- data/lib/ramaze/helper/localize.rb +143 -0
- data/lib/ramaze/helper/markaby.rb +26 -24
- data/lib/ramaze/helper/maruku.rb +15 -6
- data/lib/ramaze/helper/paginate.rb +315 -0
- data/lib/ramaze/helper/remarkably.rb +14 -0
- data/lib/ramaze/helper/request_accessor.rb +20 -0
- data/lib/ramaze/helper/send_file.rb +34 -0
- data/lib/ramaze/helper/simple_captcha.rb +61 -0
- data/lib/ramaze/helper/stack.rb +72 -62
- data/lib/ramaze/helper/tagz.rb +13 -12
- data/lib/ramaze/helper/thread.rb +25 -0
- data/lib/ramaze/helper/upload.rb +525 -0
- data/lib/ramaze/helper/user.rb +260 -39
- data/lib/ramaze/helper/xhtml.rb +122 -0
- data/lib/ramaze/helper.rb +8 -79
- data/lib/ramaze/log/hub.rb +41 -32
- data/lib/ramaze/log/informer.rb +128 -104
- data/lib/ramaze/log/logger.rb +25 -15
- data/lib/ramaze/log/logging.rb +46 -27
- data/lib/ramaze/log/rotatinginformer.rb +237 -0
- data/lib/ramaze/log/syslog.rb +57 -31
- data/lib/ramaze/log.rb +16 -15
- data/lib/ramaze/reloader/watch_inotify.rb +84 -0
- data/lib/ramaze/reloader/watch_stat.rb +58 -0
- data/lib/ramaze/reloader.rb +212 -0
- data/lib/ramaze/request.rb +126 -0
- data/lib/ramaze/response.rb +67 -0
- data/lib/ramaze/snippets/object/__dir__.rb +25 -0
- data/lib/ramaze/snippets/ramaze/deprecated.rb +23 -0
- data/lib/ramaze/snippets/string/camel_case.rb +17 -14
- data/lib/ramaze/snippets/string/color.rb +27 -24
- data/lib/ramaze/snippets/string/esc.rb +25 -25
- data/lib/ramaze/snippets/string/snake_case.rb +16 -13
- data/lib/ramaze/snippets/string/unindent.rb +24 -11
- data/lib/ramaze/snippets.rb +21 -6
- data/lib/ramaze/spec/bacon.rb +44 -0
- data/lib/ramaze/spec/helper/bacon.rb +4 -4
- data/lib/ramaze/spec/helper/pretty_output.rb +9 -1
- data/lib/ramaze/spec/helper/snippets.rb +11 -1
- data/lib/ramaze/spec/helper/template_examples.rb +22 -0
- data/lib/ramaze/version.rb +4 -13
- data/lib/ramaze/view/erector.rb +116 -0
- data/lib/ramaze/view/erubis.rb +26 -0
- data/lib/ramaze/view/ezamar.rb +27 -0
- data/lib/ramaze/view/gestalt.rb +20 -0
- data/lib/ramaze/view/haml.rb +27 -0
- data/lib/ramaze/view/liquid.rb +99 -0
- data/lib/ramaze/view/lokar.rb +18 -0
- data/lib/ramaze/view/mustache.rb +46 -0
- data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
- data/lib/ramaze/view/nagoro.rb +44 -0
- data/lib/ramaze/view/remarkably.rb +22 -0
- data/lib/ramaze/view/sass.rb +22 -0
- data/lib/ramaze/view/slim.rb +43 -0
- data/lib/ramaze/view/slippers.rb +51 -0
- data/lib/ramaze/view/tagz.rb +67 -0
- data/lib/ramaze/view/tenjin.rb +32 -0
- data/lib/ramaze/view.rb +35 -0
- data/lib/ramaze.rb +60 -100
- data/lib/vendor/route_exceptions.rb +42 -0
- data/ramaze.gemspec +61 -0
- data/spec/examples/caching.rb +5 -8
- data/spec/examples/css.rb +3 -4
- data/spec/examples/element.rb +4 -4
- data/spec/examples/hello.rb +4 -5
- data/spec/examples/linking.rb +3 -4
- data/spec/examples/misc/sequel_scaffolding.rb +18 -0
- data/spec/examples/simple.rb +3 -8
- data/spec/examples/templates/template_erubis.rb +8 -18
- data/spec/examples/templates/template_ezamar.rb +9 -19
- data/spec/examples/templates/template_haml.rb +8 -20
- data/spec/examples/templates/template_liquid.rb +8 -24
- data/spec/examples/templates/template_markaby.rb +10 -19
- data/spec/examples/templates/template_mustache.rb +13 -0
- data/spec/examples/templates/template_nagoro.rb +13 -0
- data/spec/examples/templates/template_remarkably.rb +8 -18
- data/spec/examples/templates/template_tenjin.rb +8 -23
- data/spec/examples/todolist.rb +33 -0
- data/spec/helper.rb +14 -3
- data/spec/ramaze/action/render.rb +9 -17
- data/spec/ramaze/action/view/other_wrapper.erb +1 -0
- data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
- data/spec/ramaze/app/location.rb +43 -0
- data/spec/ramaze/app.rb +50 -0
- data/spec/ramaze/bin/app/config.ru +11 -0
- data/spec/ramaze/bin/create.rb +28 -0
- data/spec/ramaze/bin/runner.rb +30 -0
- data/spec/ramaze/cache/lru.rb +48 -0
- data/spec/ramaze/cache/memcache.rb +69 -0
- data/spec/ramaze/cache/moneta.rb +53 -0
- data/spec/ramaze/cache/redis.rb +58 -0
- data/spec/ramaze/cache/sequel.rb +60 -0
- data/spec/ramaze/controller/actionless_templates.rb +16 -12
- data/spec/ramaze/controller/lonely_mapping.rb +18 -0
- data/spec/ramaze/controller/mapping.rb +63 -0
- data/spec/ramaze/controller/provide_inheritance.rb +40 -0
- data/spec/ramaze/controller/resolve.rb +9 -11
- data/spec/ramaze/controller/subclass.rb +22 -7
- data/spec/ramaze/controller/template_resolving.rb +23 -61
- data/spec/ramaze/controller/view/bar.xhtml +1 -0
- data/spec/ramaze/controller/view/base/another.xhtml +1 -0
- data/spec/ramaze/dispatcher/directory.rb +61 -33
- data/spec/ramaze/dispatcher/file.rb +65 -47
- data/spec/ramaze/error.rb +54 -64
- data/spec/ramaze/files/public_1/plain.txt +1 -0
- data/spec/ramaze/files/public_2/rich.txt +1 -0
- data/spec/ramaze/files.rb +30 -0
- data/spec/ramaze/gestalt.rb +28 -21
- data/spec/ramaze/helper/auth.rb +47 -29
- data/spec/ramaze/helper/bench.rb +21 -0
- data/spec/ramaze/helper/blue_form.rb +807 -0
- data/spec/ramaze/helper/cache.rb +65 -84
- data/spec/ramaze/helper/csrf.rb +64 -0
- data/spec/ramaze/helper/email.rb +69 -0
- data/spec/ramaze/helper/flash.rb +22 -101
- data/spec/ramaze/helper/formatting.rb +100 -6
- data/spec/ramaze/helper/gestalt.rb +18 -0
- data/spec/ramaze/helper/gravatar.rb +43 -0
- data/spec/ramaze/helper/layout/alternative.xhtml +5 -0
- data/spec/ramaze/helper/layout/default.xhtml +5 -0
- data/spec/ramaze/helper/layout.rb +109 -0
- data/spec/ramaze/helper/link.rb +48 -102
- data/spec/ramaze/helper/localize.rb +65 -0
- data/spec/ramaze/helper/maruku.rb +22 -0
- data/spec/ramaze/helper/paginate.rb +304 -0
- data/spec/ramaze/helper/request_accessor.rb +22 -0
- data/spec/ramaze/helper/simple_captcha.rb +45 -0
- data/spec/ramaze/helper/stack.rb +54 -41
- data/spec/ramaze/helper/upload.rb +150 -0
- data/spec/ramaze/helper/uploads/text_1.txt +1 -0
- data/spec/ramaze/helper/uploads/text_2.txt +1 -0
- data/spec/ramaze/helper/user.rb +63 -20
- data/spec/ramaze/helper/xhtml.rb +54 -0
- data/spec/ramaze/log/informer.rb +30 -28
- data/spec/ramaze/log/logging.rb +66 -0
- data/spec/ramaze/log/syslog.rb +89 -4
- data/spec/ramaze/params.rb +12 -16
- data/spec/ramaze/request.rb +51 -160
- data/spec/ramaze/rewrite/file.css +1 -0
- data/spec/ramaze/session/lru.rb +58 -0
- data/spec/ramaze/session/memcache.rb +66 -0
- data/spec/ramaze/session/redis.rb +63 -0
- data/spec/ramaze/session/sequel.rb +62 -0
- data/spec/ramaze/view/erector/external_view.erector +5 -0
- data/spec/ramaze/view/erector/index.erector +5 -0
- data/spec/ramaze/view/erector/layout.erector +13 -0
- data/spec/ramaze/view/erector/tables.erector +23 -0
- data/spec/ramaze/view/erector/view.erector +6 -0
- data/spec/ramaze/view/erector.rb +68 -0
- data/spec/ramaze/view/erubis/external.rhtml +8 -0
- data/spec/ramaze/view/erubis/sum.rhtml +1 -0
- data/spec/ramaze/view/erubis.rb +73 -0
- data/spec/ramaze/view/ezamar/external.zmr +8 -0
- data/spec/ramaze/view/ezamar/sum.zmr +1 -0
- data/spec/ramaze/view/ezamar.rb +73 -0
- data/spec/ramaze/view/gestalt/external.ges +8 -0
- data/spec/ramaze/view/gestalt.rb +94 -0
- data/spec/ramaze/view/haml/external.haml +5 -0
- data/spec/ramaze/view/haml/sum.haml +2 -0
- data/spec/ramaze/view/haml.rb +114 -0
- data/spec/ramaze/view/liquid/external.liquid +8 -0
- data/spec/ramaze/view/liquid/sum.liquid +1 -0
- data/spec/ramaze/view/liquid.rb +73 -0
- data/spec/ramaze/view/lokar/external.lok +8 -0
- data/spec/ramaze/view/lokar/sum.lok +1 -0
- data/spec/ramaze/view/lokar.rb +78 -0
- data/spec/ramaze/view/mustache/external.mt +8 -0
- data/spec/ramaze/view/mustache/sum.mt +1 -0
- data/spec/ramaze/view/mustache.rb +77 -0
- data/spec/ramaze/view/nagoro/external.nag +8 -0
- data/spec/ramaze/view/nagoro/sum.nag +1 -0
- data/spec/ramaze/view/nagoro.rb +78 -0
- data/spec/ramaze/view/remarkably.rb +49 -0
- data/spec/ramaze/view/sass.rb +73 -0
- data/spec/ramaze/view/slim/external.slim +5 -0
- data/spec/ramaze/view/slim/external_vars.slim +5 -0
- data/spec/ramaze/view/slim.rb +49 -0
- data/spec/ramaze/view/slippers/external.st +8 -0
- data/spec/ramaze/view/slippers/sum.st +1 -0
- data/spec/ramaze/view/slippers.rb +49 -0
- data/spec/ramaze/{template → view}/tagz.rb +20 -31
- data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
- data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
- data/spec/ramaze/view/tenjin.rb +57 -0
- data/spec/ramaze/view.rb +36 -0
- data/spec/snippets/object/__dir__.rb +17 -0
- data/spec/snippets/ramaze/lru_hash.rb +88 -0
- data/spec/snippets/string/camel_case.rb +4 -1
- data/spec/snippets/string/color.rb +4 -1
- data/spec/snippets/string/snake_case.rb +4 -1
- data/spec/snippets/string/unindent.rb +10 -1
- data/tasks/authors.rake +17 -0
- data/tasks/bacon.rake +81 -0
- data/tasks/changelog.rake +20 -0
- data/tasks/gems.rake +15 -0
- data/tasks/release.rake +38 -0
- data/tasks/todo.rake +31 -0
- data/tasks/yard.rake +13 -0
- metadata +813 -714
- data/doc/AUTHORS +0 -25
- data/doc/CHANGELOG +0 -5757
- data/doc/COPYING +0 -56
- data/doc/FAQ +0 -92
- data/doc/GPL +0 -339
- data/doc/INSTALL +0 -34
- data/doc/LEGAL +0 -26
- data/doc/ProjectInfo +0 -53
- data/doc/README +0 -435
- data/doc/TODO +0 -29
- data/doc/meta/announcement.txt +0 -126
- data/doc/meta/configuration.txt +0 -162
- data/doc/meta/internals.txt +0 -278
- data/doc/meta/users.kml +0 -64
- data/doc/migrate/1110_to_1111.txt +0 -131
- data/doc/readme_chunks/appendix.txt +0 -10
- data/doc/readme_chunks/examples.txt +0 -38
- data/doc/readme_chunks/features.txt +0 -148
- data/doc/readme_chunks/getting_help.txt +0 -5
- data/doc/readme_chunks/getting_started.txt +0 -18
- data/doc/readme_chunks/installing.txt +0 -46
- data/doc/readme_chunks/introduction.txt +0 -18
- data/doc/readme_chunks/thanks.txt +0 -59
- data/doc/tutorial/todolist.html +0 -816
- data/doc/tutorial/todolist.mkd +0 -736
- data/examples/auth/auth.rb +0 -54
- data/examples/auth/template/layout.haml +0 -20
- data/examples/auth/template/login.haml +0 -16
- data/examples/blog/README +0 -3
- data/examples/blog/controller/main.rb +0 -29
- data/examples/blog/model/entry.rb +0 -30
- data/examples/blog/public/styles/blog.css +0 -132
- data/examples/blog/spec/blog.rb +0 -87
- data/examples/blog/start.rb +0 -7
- data/examples/blog/view/edit.xhtml +0 -17
- data/examples/blog/view/index.xhtml +0 -17
- data/examples/blog/view/layout.xhtml +0 -11
- data/examples/blog/view/new.xhtml +0 -16
- data/examples/hello.rb +0 -15
- data/examples/linking.rb +0 -29
- data/examples/memleak_detector.rb +0 -32
- data/examples/nitro_form.rb +0 -23
- data/examples/rammit/spec/rammit.rb +0 -30
- data/examples/rammit/src/controller/main.rb +0 -3
- data/examples/rammit/src/controller/page.rb +0 -16
- data/examples/rammit/src/model.rb +0 -33
- data/examples/rammit/start.rb +0 -8
- data/examples/rammit/template/index.xhtml +0 -14
- data/examples/rammit/template/page/view.xhtml +0 -4
- data/examples/rapaste/Rakefile +0 -35
- data/examples/rapaste/controller/paste.rb +0 -94
- data/examples/rapaste/model/paste.rb +0 -55
- data/examples/rapaste/public/css/active4d.css +0 -114
- data/examples/rapaste/public/css/all_hallows_eve.css +0 -72
- data/examples/rapaste/public/css/amy.css +0 -147
- data/examples/rapaste/public/css/blackboard.css +0 -88
- data/examples/rapaste/public/css/brilliance_black.css +0 -605
- data/examples/rapaste/public/css/brilliance_dull.css +0 -599
- data/examples/rapaste/public/css/cobalt.css +0 -149
- data/examples/rapaste/public/css/dawn.css +0 -121
- data/examples/rapaste/public/css/display.css +0 -197
- data/examples/rapaste/public/css/eiffel.css +0 -121
- data/examples/rapaste/public/css/espresso_libre.css +0 -109
- data/examples/rapaste/public/css/idle.css +0 -62
- data/examples/rapaste/public/css/iplastic.css +0 -80
- data/examples/rapaste/public/css/lazy.css +0 -73
- data/examples/rapaste/public/css/mac_classic.css +0 -123
- data/examples/rapaste/public/css/magicwb_amiga.css +0 -104
- data/examples/rapaste/public/css/pastels_on_dark.css +0 -188
- data/examples/rapaste/public/css/slush_poppies.css +0 -85
- data/examples/rapaste/public/css/spacecadet.css +0 -51
- data/examples/rapaste/public/css/sunburst.css +0 -180
- data/examples/rapaste/public/css/twilight.css +0 -137
- data/examples/rapaste/public/css/zenburnesque.css +0 -91
- data/examples/rapaste/public/js/jquery.js +0 -11
- data/examples/rapaste/spec/rapaste.rb +0 -49
- data/examples/rapaste/start.rb +0 -24
- data/examples/rapaste/view/copy.xhtml +0 -10
- data/examples/rapaste/view/index.xhtml +0 -9
- data/examples/rapaste/view/layout.xhtml +0 -25
- data/examples/rapaste/view/list.xhtml +0 -29
- data/examples/rapaste/view/search.xhtml +0 -41
- data/examples/rapaste/view/view.xhtml +0 -37
- data/examples/simple_auth.rb +0 -23
- data/examples/sourceview/public/coderay.css +0 -104
- data/examples/sourceview/public/images/file.gif +0 -0
- data/examples/sourceview/public/images/folder.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable.gif +0 -0
- data/examples/sourceview/public/images/tv-item-last.gif +0 -0
- data/examples/sourceview/public/images/tv-item.gif +0 -0
- data/examples/sourceview/public/jquery.js +0 -11
- data/examples/sourceview/public/jquery.treeview.css +0 -48
- data/examples/sourceview/public/jquery.treeview.js +0 -223
- data/examples/sourceview/public/sourceview.js +0 -52
- data/examples/sourceview/sourceview.rb +0 -77
- data/examples/sourceview/template/index.haml +0 -59
- data/examples/templates/template/external.amrita +0 -19
- data/examples/templates/template/external.xsl +0 -57
- data/examples/templates/template_amrita2.rb +0 -74
- data/examples/templates/template_xslt.rb +0 -49
- data/examples/todolist/README +0 -1
- data/examples/todolist/public/js/jquery.js +0 -1923
- data/examples/todolist/public/ramaze.png +0 -0
- data/examples/todolist/spec/todolist.rb +0 -132
- data/examples/todolist/src/controller/main.rb +0 -70
- data/examples/todolist/src/element/page.rb +0 -31
- data/examples/todolist/src/model.rb +0 -14
- data/examples/todolist/start.rb +0 -11
- data/examples/todolist/template/index.xhtml +0 -17
- data/examples/todolist/template/new.xhtml +0 -7
- data/examples/whywiki/spec/whywiki.rb +0 -58
- data/examples/whywiki/template/show.xhtml +0 -18
- data/examples/wikore/start.rb +0 -9
- data/examples/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +0 -2
- data/examples/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +0 -2
- data/examples/wiktacular/mkd/main/current.mkd +0 -2
- data/examples/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +0 -2
- data/lib/proto/public/css/ramaze_error.css +0 -90
- data/lib/proto/public/dispatch.fcgi +0 -11
- data/lib/proto/public/ramaze.png +0 -0
- data/lib/proto/spec/main.rb +0 -24
- data/lib/proto/start.rb +0 -8
- data/lib/proto/start.ru +0 -8
- data/lib/proto/view/error.xhtml +0 -64
- data/lib/proto/view/page.xhtml +0 -15
- data/lib/ramaze/action/render.rb +0 -163
- data/lib/ramaze/action.rb +0 -136
- data/lib/ramaze/adapter/base.rb +0 -59
- data/lib/ramaze/adapter/cgi.rb +0 -24
- data/lib/ramaze/adapter/ebb.rb +0 -32
- data/lib/ramaze/adapter/evented_mongrel.rb +0 -7
- data/lib/ramaze/adapter/fcgi.rb +0 -24
- data/lib/ramaze/adapter/lsws.rb +0 -23
- data/lib/ramaze/adapter/mongrel.rb +0 -25
- data/lib/ramaze/adapter/scgi.rb +0 -22
- data/lib/ramaze/adapter/swiftiplied_mongrel.rb +0 -7
- data/lib/ramaze/adapter/thin.rb +0 -22
- data/lib/ramaze/adapter/webrick.rb +0 -52
- data/lib/ramaze/adapter.rb +0 -101
- data/lib/ramaze/cache/memcached.rb +0 -70
- data/lib/ramaze/cache/memory.rb +0 -6
- data/lib/ramaze/cache/yaml_store.rb +0 -68
- data/lib/ramaze/contrib/auto_params/get_args.rb +0 -57
- data/lib/ramaze/contrib/auto_params.rb +0 -135
- data/lib/ramaze/contrib/email.rb +0 -84
- data/lib/ramaze/contrib/facebook/facebook.rb +0 -171
- data/lib/ramaze/contrib/facebook.rb +0 -23
- data/lib/ramaze/contrib/file_cache.rb +0 -65
- data/lib/ramaze/contrib/gettext/mo.rb +0 -155
- data/lib/ramaze/contrib/gettext/parser.rb +0 -46
- data/lib/ramaze/contrib/gettext/po.rb +0 -109
- data/lib/ramaze/contrib/gettext.rb +0 -113
- data/lib/ramaze/contrib/gzip_filter.rb +0 -56
- data/lib/ramaze/contrib/profiling.rb +0 -36
- data/lib/ramaze/contrib/route.rb +0 -22
- data/lib/ramaze/contrib/sequel/fill.rb +0 -12
- data/lib/ramaze/contrib/sequel_cache.rb +0 -92
- data/lib/ramaze/contrib.rb +0 -82
- data/lib/ramaze/controller/error.rb +0 -46
- data/lib/ramaze/controller/main.rb +0 -2
- data/lib/ramaze/controller/resolve.rb +0 -234
- data/lib/ramaze/current/request.rb +0 -181
- data/lib/ramaze/current/response.rb +0 -19
- data/lib/ramaze/current/session/flash.rb +0 -67
- data/lib/ramaze/current/session/hash.rb +0 -65
- data/lib/ramaze/current/session.rb +0 -153
- data/lib/ramaze/dispatcher/action.rb +0 -40
- data/lib/ramaze/dispatcher/directory.rb +0 -116
- data/lib/ramaze/dispatcher/error.rb +0 -108
- data/lib/ramaze/dispatcher/file.rb +0 -87
- data/lib/ramaze/dispatcher.rb +0 -124
- data/lib/ramaze/error.rb +0 -24
- data/lib/ramaze/global/dsl.rb +0 -39
- data/lib/ramaze/global/globalstruct.rb +0 -147
- data/lib/ramaze/global.rb +0 -116
- data/lib/ramaze/helper/aspect.rb +0 -100
- data/lib/ramaze/helper/cgi.rb +0 -43
- data/lib/ramaze/helper/inform.rb +0 -40
- data/lib/ramaze/helper/nitroform.rb +0 -14
- data/lib/ramaze/helper/pager.rb +0 -366
- data/lib/ramaze/helper/partial.rb +0 -96
- data/lib/ramaze/helper/redirect.rb +0 -73
- data/lib/ramaze/helper/sendfile.rb +0 -18
- data/lib/ramaze/helper/sequel.rb +0 -52
- data/lib/ramaze/inform.rb +0 -4
- data/lib/ramaze/log/analogger.rb +0 -37
- data/lib/ramaze/log/growl.rb +0 -35
- data/lib/ramaze/log/knotify.rb +0 -25
- data/lib/ramaze/log/xosd.rb +0 -88
- data/lib/ramaze/route.rb +0 -84
- data/lib/ramaze/snippets/array/put_within.rb +0 -37
- data/lib/ramaze/snippets/binding/locals.rb +0 -13
- data/lib/ramaze/snippets/dictionary.rb +0 -504
- data/lib/ramaze/snippets/divide.rb +0 -20
- data/lib/ramaze/snippets/kernel/__dir__.rb +0 -23
- data/lib/ramaze/snippets/kernel/acquire.rb +0 -39
- data/lib/ramaze/snippets/kernel/aquire.rb +0 -1
- data/lib/ramaze/snippets/kernel/constant.rb +0 -26
- data/lib/ramaze/snippets/kernel/pretty_inspect.rb +0 -15
- data/lib/ramaze/snippets/metaid.rb +0 -17
- data/lib/ramaze/snippets/numeric/filesize_format.rb +0 -19
- data/lib/ramaze/snippets/object/pretty.rb +0 -6
- data/lib/ramaze/snippets/object/scope.rb +0 -11
- data/lib/ramaze/snippets/object/thread_accessor.rb +0 -5
- data/lib/ramaze/snippets/object/traits.rb +0 -76
- data/lib/ramaze/snippets/ordered_set.rb +0 -36
- data/lib/ramaze/snippets/proc/locals.rb +0 -11
- data/lib/ramaze/snippets/ramaze/caller_info.rb +0 -30
- data/lib/ramaze/snippets/ramaze/caller_lines.rb +0 -51
- data/lib/ramaze/snippets/ramaze/thread_accessor.rb +0 -44
- data/lib/ramaze/snippets/string/each.rb +0 -8
- data/lib/ramaze/snippets/string/ord.rb +0 -15
- data/lib/ramaze/snippets/string/start_with.rb +0 -7
- data/lib/ramaze/snippets/struct/fill.rb +0 -23
- data/lib/ramaze/snippets/struct/values_at.rb +0 -23
- data/lib/ramaze/snippets/symbol/to_proc.rb +0 -24
- data/lib/ramaze/snippets/thread/into.rb +0 -18
- data/lib/ramaze/sourcereload.rb +0 -169
- data/lib/ramaze/spec/helper/browser.rb +0 -88
- data/lib/ramaze/spec/helper/mock_http.rb +0 -69
- data/lib/ramaze/spec/helper/requester.rb +0 -49
- data/lib/ramaze/spec/helper/simple_http.rb +0 -434
- data/lib/ramaze/spec/helper.rb +0 -122
- data/lib/ramaze/spec.rb +0 -1
- data/lib/ramaze/store/default.rb +0 -109
- data/lib/ramaze/template/amrita2.rb +0 -44
- data/lib/ramaze/template/builder.rb +0 -28
- data/lib/ramaze/template/erubis.rb +0 -35
- data/lib/ramaze/template/ezamar/element.rb +0 -169
- data/lib/ramaze/template/ezamar/engine.rb +0 -76
- data/lib/ramaze/template/ezamar/morpher.rb +0 -135
- data/lib/ramaze/template/ezamar/render_partial.rb +0 -31
- data/lib/ramaze/template/ezamar.rb +0 -42
- data/lib/ramaze/template/haml.rb +0 -37
- data/lib/ramaze/template/liquid.rb +0 -36
- data/lib/ramaze/template/markaby.rb +0 -52
- data/lib/ramaze/template/nagoro.rb +0 -51
- data/lib/ramaze/template/none.rb +0 -14
- data/lib/ramaze/template/redcloth.rb +0 -24
- data/lib/ramaze/template/remarkably.rb +0 -38
- data/lib/ramaze/template/sass.rb +0 -37
- data/lib/ramaze/template/tagz.rb +0 -79
- data/lib/ramaze/template/tenjin.rb +0 -34
- data/lib/ramaze/template/xslt.rb +0 -96
- data/lib/ramaze/template.rb +0 -81
- data/lib/ramaze/tool/create.rb +0 -74
- data/lib/ramaze/tool/localize.rb +0 -162
- data/lib/ramaze/tool/mime.rb +0 -25
- data/lib/ramaze/tool/mime_types.yaml +0 -615
- data/lib/ramaze/tool/record.rb +0 -6
- data/lib/ramaze/tool.rb +0 -9
- data/lib/ramaze/trinity.rb +0 -13
- data/lib/vendor/bacon.rb +0 -323
- data/rake_tasks/conf.rake +0 -73
- data/rake_tasks/coverage.rake +0 -46
- data/rake_tasks/darcs.rake +0 -5
- data/rake_tasks/gem.rake +0 -43
- data/rake_tasks/maintenance.rake +0 -384
- data/rake_tasks/spec.rake +0 -62
- data/spec/contrib/auto_params.rb +0 -121
- data/spec/contrib/profiling.rb +0 -26
- data/spec/contrib/route.rb +0 -36
- data/spec/contrib/sequel/fill.rb +0 -47
- data/spec/examples/simple_auth.rb +0 -32
- data/spec/examples/templates/template_amrita2.rb +0 -16
- data/spec/examples/templates/template_redcloth.rb +0 -28
- data/spec/ramaze/action/basics.rb +0 -36
- data/spec/ramaze/action/cache.rb +0 -43
- data/spec/ramaze/action/layout.rb +0 -190
- data/spec/ramaze/adapter/mongrel.rb +0 -12
- data/spec/ramaze/adapter/record.rb +0 -31
- data/spec/ramaze/adapter/webrick.rb +0 -12
- data/spec/ramaze/adapter.rb +0 -22
- data/spec/ramaze/cache.rb +0 -73
- data/spec/ramaze/controller.rb +0 -177
- data/spec/ramaze/current/request.rb +0 -30
- data/spec/ramaze/current/session.rb +0 -97
- data/spec/ramaze/dispatcher.rb +0 -31
- data/spec/ramaze/element.rb +0 -107
- data/spec/ramaze/helper/aspect.rb +0 -92
- data/spec/ramaze/helper/cgi.rb +0 -43
- data/spec/ramaze/helper/file.rb +0 -18
- data/spec/ramaze/helper/pager.rb +0 -99
- data/spec/ramaze/helper/partial.rb +0 -76
- data/spec/ramaze/helper/redirect.rb +0 -112
- data/spec/ramaze/localize.rb +0 -67
- data/spec/ramaze/morpher.rb +0 -111
- data/spec/ramaze/public/error404.xhtml +0 -1
- data/spec/ramaze/request/mongrel.rb +0 -9
- data/spec/ramaze/request/thin.rb +0 -9
- data/spec/ramaze/request/webrick.rb +0 -5
- data/spec/ramaze/route.rb +0 -130
- data/spec/ramaze/session.rb +0 -94
- data/spec/ramaze/store/default.rb +0 -71
- data/spec/ramaze/template/amrita2/external.amrita +0 -6
- data/spec/ramaze/template/amrita2/sum.amrita +0 -1
- data/spec/ramaze/template/amrita2.rb +0 -50
- data/spec/ramaze/template/builder/external.rxml +0 -3
- data/spec/ramaze/template/builder.rb +0 -55
- data/spec/ramaze/template/erubis/sum.rhtml +0 -1
- data/spec/ramaze/template/erubis.rb +0 -41
- data/spec/ramaze/template/ezamar/another/long/action.zmr +0 -1
- data/spec/ramaze/template/ezamar/combined.zmr +0 -1
- data/spec/ramaze/template/ezamar/file_only.zmr +0 -1
- data/spec/ramaze/template/ezamar/index.zmr +0 -1
- data/spec/ramaze/template/ezamar/nested.zmr +0 -1
- data/spec/ramaze/template/ezamar/other__index.xhtml +0 -1
- data/spec/ramaze/template/ezamar/some__long__action.zmr +0 -1
- data/spec/ramaze/template/ezamar/sum.zmr +0 -1
- data/spec/ramaze/template/ezamar.rb +0 -63
- data/spec/ramaze/template/haml/index.haml +0 -5
- data/spec/ramaze/template/haml/locals.haml +0 -2
- data/spec/ramaze/template/haml/with_vars.haml +0 -4
- data/spec/ramaze/template/haml.rb +0 -66
- data/spec/ramaze/template/liquid/index.liquid +0 -1
- data/spec/ramaze/template/liquid/products.liquid +0 -45
- data/spec/ramaze/template/liquid.rb +0 -99
- data/spec/ramaze/template/markaby/external.mab +0 -8
- data/spec/ramaze/template/markaby/sum.mab +0 -1
- data/spec/ramaze/template/markaby.rb +0 -61
- data/spec/ramaze/template/nagoro/another/long/action.nag +0 -1
- data/spec/ramaze/template/nagoro/combined.nag +0 -1
- data/spec/ramaze/template/nagoro/file_only.nag +0 -1
- data/spec/ramaze/template/nagoro/index.nag +0 -1
- data/spec/ramaze/template/nagoro/nested.nag +0 -1
- data/spec/ramaze/template/nagoro/some__long__action.nag +0 -1
- data/spec/ramaze/template/nagoro/sum.nag +0 -1
- data/spec/ramaze/template/nagoro.rb +0 -64
- data/spec/ramaze/template/redcloth/external.redcloth +0 -1
- data/spec/ramaze/template/redcloth.rb +0 -38
- data/spec/ramaze/template/remarkably.rb +0 -58
- data/spec/ramaze/template/sass.rb +0 -69
- data/spec/ramaze/template/tenjin/external.tenjin +0 -1
- data/spec/ramaze/template/tenjin.rb +0 -49
- data/spec/ramaze/template/xslt/concat_words.xsl +0 -16
- data/spec/ramaze/template/xslt/index.xsl +0 -14
- data/spec/ramaze/template/xslt/products.xsl +0 -32
- data/spec/ramaze/template/xslt/ruby_version.xsl +0 -14
- data/spec/ramaze/template/xslt.rb +0 -90
- data/spec/ramaze/template.rb +0 -128
- data/spec/snippets/array/put_within.rb +0 -33
- data/spec/snippets/divide.rb +0 -19
- data/spec/snippets/kernel/__dir__.rb +0 -8
- data/spec/snippets/kernel/acquire.rb +0 -71
- data/spec/snippets/kernel/constant.rb +0 -23
- data/spec/snippets/numeric/filesize_format.rb +0 -12
- data/spec/snippets/ordered_set.rb +0 -63
- data/spec/snippets/ramaze/caller_info.rb +0 -39
- data/spec/snippets/ramaze/caller_lines.rb +0 -30
- data/spec/snippets/struct/fill.rb +0 -26
- data/spec/snippets/struct/values_at.rb +0 -44
- data/spec/snippets/symbol/to_proc.rb +0 -13
- data/spec/snippets/thread/into.rb +0 -20
- /data/examples/{todolist → app/todolist}/public/favicon.ico +0 -0
- /data/examples/{upload → app/upload}/view/index.xhtml +0 -0
- /data/examples/{wikore/template → app/wikore/view}/index.xhtml +0 -0
- /data/examples/{wiktacular → app/wiktacular}/README +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/link/2007-07-20_19-45-51.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/link/current.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_16-31-33.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/public/favicon.ico +0 -0
- /data/examples/{wiktacular → app/wiktacular}/public/screen.css +0 -0
- /data/examples/{wiktacular/template → app/wiktacular/view}/index.xhtml +0 -0
- /data/examples/{identity.rb → helpers/identity.rb} +0 -0
- /data/examples/{facebook.rb → misc/facebook.rb} +0 -0
- /data/examples/templates/{template → view}/external.liquid +0 -0
- /data/spec/ramaze/action/{template → view}/bar.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/instancevars/layout.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/other_wrapper.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/single_wrapper.xhtml +0 -0
- /data/spec/ramaze/action/{template/sub/sub_wrapper.xhtml → view/sub/sub_wrapper.erb} +0 -0
- /data/spec/ramaze/controller/{template → view}/greet.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/list.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/other/greet/other.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/other_wrapper.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/locals.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/loop.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/num.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/partial.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive_local_ivars.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive_locals.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/test_template.xhtml +0 -0
- /data/spec/ramaze/{template → view}/remarkably/external.rem +0 -0
- /data/spec/ramaze/{template → view}/remarkably/sum.rem +0 -0
- /data/spec/ramaze/{template → view}/sass/file.css.sass +0 -0
- /data/spec/ramaze/{template → view}/tagz/external.tagz +0 -0
- /data/spec/ramaze/{template → view}/tagz/sum.tagz +0 -0
data/lib/ramaze/log/syslog.rb
CHANGED
@@ -1,36 +1,62 @@
|
|
1
1
|
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
-
#
|
2
|
+
# Copyright (c) 2008 rob@rebeltechnologies.nl
|
3
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
4
|
|
4
5
|
require 'syslog'
|
5
6
|
|
6
7
|
module Ramaze
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
8
|
+
module Logger
|
9
|
+
##
|
10
|
+
# Logger class for writing to syslog. It is a *very* thin wrapper
|
11
|
+
# around the Syslog library.
|
12
|
+
#
|
13
|
+
class Syslog
|
14
|
+
include Logging
|
15
|
+
|
16
|
+
# Hash containing various method aliases. Rbx and Jruby don't seem to like
|
17
|
+
# the combination of alias() and module_function() so this works around
|
18
|
+
# that.
|
19
|
+
ALIASES = {:dev => :debug, :warn => :warning, :error => :err}
|
20
|
+
|
21
|
+
##
|
22
|
+
# Open the syslog library, if it is already open, we reopen it using the
|
23
|
+
# new argument list. The argument list is passed on to the Syslog library
|
24
|
+
# so please check that, and man syslog for detailed information.
|
25
|
+
#
|
26
|
+
# There are 3 parameters:
|
27
|
+
#
|
28
|
+
# * ident: The identification used in the log file, defaults to $0
|
29
|
+
# * options: defaults to Syslog::LOG_PID | Syslog::LOG_CONS
|
30
|
+
# * facility: defaults to Syslog::LOG_USER
|
31
|
+
#
|
32
|
+
def initialize(*args)
|
33
|
+
::Syslog.close if ::Syslog.opened?
|
34
|
+
::Syslog.open(*args)
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Just sends all messages received to ::Syslog
|
39
|
+
# We simply return if the log was closed for some reason, this behavior
|
40
|
+
# was copied from Informer. We do not handle levels here. This will
|
41
|
+
# be done by the syslog daemon based on it's configuration.
|
42
|
+
def log(tag, *messages)
|
43
|
+
return if !::Syslog.opened?
|
44
|
+
tag = tag.to_sym
|
45
|
+
|
46
|
+
if ALIASES.key?(tag)
|
47
|
+
tag = ALIASES[tag]
|
48
|
+
end
|
49
|
+
|
50
|
+
messages = messages.map {|m| m.gsub(/(%[^m])/,'%\1')}
|
51
|
+
::Syslog.send(tag, *messages)
|
52
|
+
end
|
53
|
+
|
54
|
+
##
|
55
|
+
# Has to call the modules singleton-method.
|
56
|
+
#
|
57
|
+
def inspect
|
58
|
+
::Syslog.inspect
|
59
|
+
end
|
60
|
+
end # Syslog
|
61
|
+
end # Logger
|
62
|
+
end # Ramaze
|
data/lib/ramaze/log.rb
CHANGED
@@ -1,28 +1,29 @@
|
|
1
|
-
# Copyright (c)
|
2
|
-
# All files in this distribution are subject to the terms of the
|
3
|
-
|
1
|
+
# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
4
3
|
require 'ramaze/log/logging'
|
5
|
-
require 'ramaze/log/hub'
|
6
4
|
require 'ramaze/log/informer'
|
7
5
|
|
8
6
|
begin
|
9
|
-
require 'win32console' if RUBY_PLATFORM =~ /win32/i
|
7
|
+
require 'win32console' if RUBY_PLATFORM =~ /win32/i && RUBY_VERSION < '1.9'
|
10
8
|
rescue LoadError => ex
|
11
9
|
puts ex
|
12
10
|
puts "For nice colors on windows, please `gem install win32console`"
|
13
|
-
Ramaze::Informer.trait[:colorize] = false
|
11
|
+
Ramaze::Logger::Informer.trait[:colorize] = false
|
14
12
|
end
|
15
13
|
|
16
14
|
module Ramaze
|
17
|
-
|
18
|
-
autoload :Knotify, "ramaze/log/knotify.rb"
|
19
|
-
autoload :Syslog, "ramaze/log/syslog.rb"
|
20
|
-
autoload :Growl, "ramaze/log/growl.rb"
|
21
|
-
autoload :Xosd, "ramaze/log/xosd.rb"
|
22
|
-
autoload :Logger, "ramaze/log/logger.rb"
|
23
|
-
autoload :Inform, "ramaze/inform"
|
15
|
+
Log = Innate::Log
|
24
16
|
|
25
|
-
|
26
|
-
|
17
|
+
##
|
18
|
+
# Module used as the base namespace for all loggers that ship with Ramaze.
|
19
|
+
#
|
20
|
+
# @author Michael Fellinger
|
21
|
+
# @since 11-08-2009
|
22
|
+
#
|
23
|
+
module Logger
|
24
|
+
autoload :LogHub , 'ramaze/log/hub'
|
25
|
+
autoload :RotatingInformer, 'ramaze/log/rotatinginformer'
|
26
|
+
autoload :Syslog , 'ramaze/log/syslog'
|
27
|
+
autoload :Logger , 'ramaze/log/logger'
|
27
28
|
end
|
28
29
|
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module Ramaze
|
2
|
+
class Reloader
|
3
|
+
##
|
4
|
+
# TODO:
|
5
|
+
# * There seems to be a problem somewhere that I couldn't identify yet, a
|
6
|
+
# file has to be modified twice initially to make it show up as
|
7
|
+
# modified here, subsequent changes work just fine.
|
8
|
+
# The only workaround I could find right now would be to read/write
|
9
|
+
# every single file, but that would be unexpected, irresponsible, and
|
10
|
+
# error-prone.
|
11
|
+
#
|
12
|
+
# NOTE:
|
13
|
+
# * I have changed from using a Mutex to using a Queue, which uses a
|
14
|
+
# Mutex internally.
|
15
|
+
class WatchInotify
|
16
|
+
POLL_INTERVAL = 2 # seconds
|
17
|
+
NOTIFY_MASK = RInotify::MODIFY | RInotify::IN_ONESHOT
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@watcher = RInotify.new
|
21
|
+
@changed = Queue.new
|
22
|
+
@watcher_thread = start_watcher
|
23
|
+
end
|
24
|
+
|
25
|
+
def call(cooldown)
|
26
|
+
yield
|
27
|
+
end
|
28
|
+
|
29
|
+
# TODO: define a finalizer to cleanup? -- reloader never calls #close
|
30
|
+
|
31
|
+
def start_watcher
|
32
|
+
Thread.new{ loop{ watcher_cycle }}
|
33
|
+
end
|
34
|
+
|
35
|
+
# Not much work here, we just have to empty the event queue and push the
|
36
|
+
# descriptors for reloading on next request.
|
37
|
+
def watcher_cycle
|
38
|
+
return unless @watcher.wait_for_events(POLL_INTERVAL)
|
39
|
+
|
40
|
+
@watcher.each_event do |event|
|
41
|
+
@changed.push(event.watch_descriptor)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def watch(file)
|
46
|
+
return if @watcher.watch_descriptors.has_value?(file)
|
47
|
+
return unless File.exist?(file)
|
48
|
+
|
49
|
+
@watcher.add_watch(file, NOTIFY_MASK)
|
50
|
+
rescue Errno::ENOENT
|
51
|
+
retry
|
52
|
+
end
|
53
|
+
|
54
|
+
# FIXME:
|
55
|
+
# Seems like this won't work due to some bug in the rinotify library.
|
56
|
+
# Would be cool if someone could make a FFI version.
|
57
|
+
def remove_watch(file)
|
58
|
+
@watcher.rm_watch(file)
|
59
|
+
end
|
60
|
+
|
61
|
+
def close
|
62
|
+
@watcher_thread.terminate
|
63
|
+
@watcher.close
|
64
|
+
true
|
65
|
+
end
|
66
|
+
|
67
|
+
# NOTE:
|
68
|
+
# We have to add the changed file again after we got a notification, I
|
69
|
+
# have no idea why, but using IN_ONESHOT should make sure that there is
|
70
|
+
# no memory leak in the C level even if we add a file again.
|
71
|
+
# There is a memory leak however in the watch_descriptors hash, since
|
72
|
+
# rinotify won't synchronize the contents properly and will only add to
|
73
|
+
# the hash, so we have to clean up ourselves.
|
74
|
+
def changed_files
|
75
|
+
until @changed.empty?
|
76
|
+
descriptor = @changed.shift
|
77
|
+
file = @watcher.watch_descriptors.delete(descriptor)
|
78
|
+
watch(file)
|
79
|
+
yield(file)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end # WatchInotify
|
83
|
+
end # Reloader
|
84
|
+
end # Ramaze
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Ramaze
|
2
|
+
class Reloader
|
3
|
+
class WatchStat
|
4
|
+
def initialize
|
5
|
+
# @files[file_path] = stat
|
6
|
+
@files = {}
|
7
|
+
@last = Time.now
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(cooldown)
|
11
|
+
if cooldown and Time.now > @last + cooldown
|
12
|
+
yield
|
13
|
+
@last = Time.now
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# start watching a file for changes
|
18
|
+
# true if succeeded, false if failure
|
19
|
+
def watch(file)
|
20
|
+
return true if watching?(file) # if already watching
|
21
|
+
if stat = safe_stat(file)
|
22
|
+
@files[file] = stat
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def watching?(file)
|
27
|
+
@files.has_key?(file)
|
28
|
+
end
|
29
|
+
|
30
|
+
# stop watching a file for changes
|
31
|
+
def remove_watch(file)
|
32
|
+
@files.delete(file)
|
33
|
+
end
|
34
|
+
|
35
|
+
# no need for cleanup
|
36
|
+
def close
|
37
|
+
end
|
38
|
+
|
39
|
+
# return files changed since last call
|
40
|
+
def changed_files
|
41
|
+
@files.each do |file, stat|
|
42
|
+
if new_stat = safe_stat(file)
|
43
|
+
if new_stat.mtime > stat.mtime
|
44
|
+
@files[file] = new_stat
|
45
|
+
yield(file)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def safe_stat(file)
|
52
|
+
File.stat(file)
|
53
|
+
rescue Errno::ENOENT, Errno::ENOTDIR
|
54
|
+
nil
|
55
|
+
end
|
56
|
+
end # WatchStat
|
57
|
+
end # Reloader
|
58
|
+
end # Ramaze
|
@@ -0,0 +1,212 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
##
|
6
|
+
# High performant source reloader
|
7
|
+
#
|
8
|
+
# This class acts as Rack middleware.
|
9
|
+
#
|
10
|
+
# It does not depend on Ramaze itself, but you might have to adjust the
|
11
|
+
# Reloader::Hooks module or include your own module to override the hooks.
|
12
|
+
# You also might have to set the Log constant.
|
13
|
+
#
|
14
|
+
# Currently, it uses RInotify if available and falls back to using File.stat.
|
15
|
+
#
|
16
|
+
# Please note that this will not reload files in the background, it does so
|
17
|
+
# only when actively called
|
18
|
+
# In case of Ramaze it is performing a check/reload cycle at the start of
|
19
|
+
# every request, but also respects a cool down time, during which nothing will
|
20
|
+
# be done.
|
21
|
+
#
|
22
|
+
# After every reload the OPTIONS hash will be checked for changed options and
|
23
|
+
# assigned to the instance, so you may change options during the lifetime of
|
24
|
+
# your application.
|
25
|
+
#
|
26
|
+
# A number of hooks will be executed during the reload cycle, see
|
27
|
+
# Ramaze::ReloaderHooks for more information.
|
28
|
+
#
|
29
|
+
class Reloader
|
30
|
+
OPTIONS = {
|
31
|
+
# At most check every n seconds
|
32
|
+
# nil/false will never trigger the reload cycle
|
33
|
+
# 0 will cycle on every call
|
34
|
+
:cooldown => 2,
|
35
|
+
|
36
|
+
# Compiled files cannot be reloaded during runtime
|
37
|
+
:ignore => /\.so$/,
|
38
|
+
|
39
|
+
# Run cycle in a Thread.exclusive, by default no threads are used.
|
40
|
+
:thread => false,
|
41
|
+
|
42
|
+
# If you assign a block here it will be instance_evaled instead of
|
43
|
+
# calling cycle. This allows you to use for example EventMachine for
|
44
|
+
# well performing asynchronous cycling.
|
45
|
+
:control => nil, # lambda{ cycle },
|
46
|
+
}
|
47
|
+
|
48
|
+
begin
|
49
|
+
begin
|
50
|
+
gem('RInotify', '>=0.9') # is older version ok?
|
51
|
+
rescue NoMethodError # Kernel::gem might simply be not available
|
52
|
+
end
|
53
|
+
|
54
|
+
require 'rinotify'
|
55
|
+
require 'ramaze/reloader/watch_inotify'
|
56
|
+
Watcher = WatchInotify
|
57
|
+
rescue LoadError
|
58
|
+
# stat always available
|
59
|
+
require 'ramaze/reloader/watch_stat'
|
60
|
+
Watcher = WatchStat
|
61
|
+
end
|
62
|
+
|
63
|
+
##
|
64
|
+
# Creates a new instance of the class and saves the application it has to
|
65
|
+
# watch.
|
66
|
+
#
|
67
|
+
# @author Michael Fellinger
|
68
|
+
# @since 09-08-2008
|
69
|
+
# @param [Ramaze::App] app The application to monitor.
|
70
|
+
#
|
71
|
+
def initialize(app)
|
72
|
+
@app = app
|
73
|
+
@files = {}
|
74
|
+
@watcher = Watcher.new
|
75
|
+
options_reload
|
76
|
+
end
|
77
|
+
|
78
|
+
##
|
79
|
+
# Returns all the options for this class.
|
80
|
+
#
|
81
|
+
# @author Michael Fellinger
|
82
|
+
# @since 09-08-2008
|
83
|
+
# @return [Array]
|
84
|
+
#
|
85
|
+
def options_reload
|
86
|
+
@cooldown, @ignore, @control, @thread =
|
87
|
+
OPTIONS.values_at(:cooldown, :ignore, :control, :thread)
|
88
|
+
end
|
89
|
+
|
90
|
+
##
|
91
|
+
# Allows this class to be called as a Rack middleware.
|
92
|
+
#
|
93
|
+
# @author Michael Fellinger
|
94
|
+
# @since 09-08-2008
|
95
|
+
# @param [Hash] env A hash containing all environment details.
|
96
|
+
#
|
97
|
+
def call(env)
|
98
|
+
options_reload
|
99
|
+
|
100
|
+
@watcher.call(@cooldown) do
|
101
|
+
if @control
|
102
|
+
instance_eval(&@control)
|
103
|
+
elsif @thread
|
104
|
+
Thread.exclusive{ cycle }
|
105
|
+
else
|
106
|
+
cycle
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
@app.call(env)
|
111
|
+
end
|
112
|
+
|
113
|
+
##
|
114
|
+
# Loops through all the files and reloads all changes files.
|
115
|
+
#
|
116
|
+
# @author Michael Fellinger
|
117
|
+
# @since 09-08-2008
|
118
|
+
#
|
119
|
+
def cycle
|
120
|
+
before_cycle
|
121
|
+
|
122
|
+
rotation{|file| @watcher.watch(file) }
|
123
|
+
@watcher.changed_files{|f| safe_load(f) }
|
124
|
+
|
125
|
+
after_cycle
|
126
|
+
end
|
127
|
+
|
128
|
+
##
|
129
|
+
# A safe Kernel::load, issuing the hooks depending on the results
|
130
|
+
#
|
131
|
+
# @author Michael Fellinger
|
132
|
+
# @since 09-08-2008
|
133
|
+
# @param [String] file Path to the file to safely load.
|
134
|
+
#
|
135
|
+
def safe_load(file)
|
136
|
+
before_safe_load(file)
|
137
|
+
load(file)
|
138
|
+
after_safe_load_succeed(file)
|
139
|
+
rescue Object => ex
|
140
|
+
Log.error(ex)
|
141
|
+
after_safe_load_failed(file, ex)
|
142
|
+
end
|
143
|
+
|
144
|
+
def rotation
|
145
|
+
files = [$0, __FILE__, *$LOADED_FEATURES].uniq
|
146
|
+
paths = ['./', *$LOAD_PATH].uniq
|
147
|
+
|
148
|
+
files.each do |file|
|
149
|
+
next if file =~ @ignore
|
150
|
+
if not @files.has_key?(file) and path = figure_path(file, paths)
|
151
|
+
@files[file] = path
|
152
|
+
yield path
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
##
|
158
|
+
# Tries to find a given file in an array of file paths.
|
159
|
+
#
|
160
|
+
# @author Michael Fellinger
|
161
|
+
# @since 09-08-2008
|
162
|
+
# @param [String] file The name of the file to look for.
|
163
|
+
# @param [Array] paths An array of paths to search.
|
164
|
+
# @return [String]
|
165
|
+
#
|
166
|
+
def figure_path(file, paths)
|
167
|
+
if Pathname.new(file).absolute?
|
168
|
+
return File.exist?(file) ? file : nil
|
169
|
+
end
|
170
|
+
|
171
|
+
paths.each do |possible_path|
|
172
|
+
full_path = File.join(possible_path, file)
|
173
|
+
return full_path if File.exist?(full_path)
|
174
|
+
end
|
175
|
+
nil
|
176
|
+
end
|
177
|
+
|
178
|
+
# Holds hooks that are called before and after #cycle and #safe_load
|
179
|
+
module Hooks
|
180
|
+
# Overwrite to add actions before the reload rotation is started.
|
181
|
+
def before_cycle; end
|
182
|
+
|
183
|
+
# Overwrite to add actions after the reload rotation has ended.
|
184
|
+
def after_cycle; end
|
185
|
+
|
186
|
+
# Overwrite to add actions before a file is Kernel::load-ed
|
187
|
+
def before_safe_load(file)
|
188
|
+
Log.debug("reload #{file}")
|
189
|
+
end
|
190
|
+
|
191
|
+
# Overwrite to add actions after a file is Kernel::load-ed successfully,
|
192
|
+
# by default we clean the Cache for compiled templates and resolved
|
193
|
+
# actions.
|
194
|
+
def after_safe_load_succeed(file)
|
195
|
+
Cache.clear_after_reload
|
196
|
+
after_safe_load(file)
|
197
|
+
end
|
198
|
+
|
199
|
+
# Overwrite to add custom hook in addition to default Cache cleaning
|
200
|
+
def after_safe_load(file)
|
201
|
+
end
|
202
|
+
|
203
|
+
# Overwrite to add actions after a file is Kernel::load-ed unsuccessfully,
|
204
|
+
# by default we output an error-message with the exception.
|
205
|
+
def after_safe_load_failed(file, error)
|
206
|
+
Log.error(error)
|
207
|
+
end
|
208
|
+
end # Hooks
|
209
|
+
|
210
|
+
include Hooks
|
211
|
+
end # Reloader
|
212
|
+
end # Ramaze
|
@@ -0,0 +1,126 @@
|
|
1
|
+
# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
|
+
module Ramaze
|
4
|
+
##
|
5
|
+
# The purpose of this class is to act as a simple wrapper for Rack::Request
|
6
|
+
# and provide some convenient methods for our own use.
|
7
|
+
class Request < Innate::Request
|
8
|
+
##
|
9
|
+
# you can access the original @request via this method_missing,
|
10
|
+
# first it tries to match your method with any of the HTTP parameters
|
11
|
+
# then, in case that fails, it will relay to @request
|
12
|
+
def method_missing meth, *args
|
13
|
+
key = meth.to_s.upcase
|
14
|
+
return env[key] if env.has_key?(key)
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# Sets any arguments passed as @instance_variables for the current action.
|
20
|
+
#
|
21
|
+
# Usage:
|
22
|
+
#
|
23
|
+
# request.params # => {'name' => 'manveru', 'q' => 'google', 'lang' => 'de'}
|
24
|
+
# request.to_ivs(:name, :q)
|
25
|
+
#
|
26
|
+
# @q # => 'google'
|
27
|
+
# @name # => 'manveru'
|
28
|
+
# @lang # => nil
|
29
|
+
#
|
30
|
+
def to_instance_variables(*args)
|
31
|
+
instance = Current.action.instance
|
32
|
+
args.each do |arg|
|
33
|
+
next unless value = self[arg]
|
34
|
+
instance.instance_variable_set("@#{arg}", value)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
alias to_ivs to_instance_variables
|
38
|
+
|
39
|
+
def accept_charset(default = 'UTF-8')
|
40
|
+
return default unless charsets = env['HTTP_ACCEPT_CHARSET']
|
41
|
+
charset = charsets.split(',', 2).first
|
42
|
+
charset == '*' ? default : charset
|
43
|
+
end
|
44
|
+
|
45
|
+
##
|
46
|
+
# Try to find out which languages the client would like to have and sort
|
47
|
+
# them by weight, (most wanted first).
|
48
|
+
#
|
49
|
+
# Returns and array of locales from env['HTTP_ACCEPT_LANGUAGE].
|
50
|
+
# e.g. ["fi", "en", "ja", "fr", "de", "es", "it", "nl", "sv"]
|
51
|
+
#
|
52
|
+
# Usage:
|
53
|
+
#
|
54
|
+
# request.accept_language # => ['en-us', 'en', 'de-at', 'de']
|
55
|
+
#
|
56
|
+
# @param [String #to_s] string the value of HTTP_ACCEPT_LANGUAGE
|
57
|
+
# @return [Array] list of locales
|
58
|
+
# @see Request#accept_language_with_weight
|
59
|
+
# @author manveru
|
60
|
+
#
|
61
|
+
def accept_language(string = env['HTTP_ACCEPT_LANGUAGE'])
|
62
|
+
return [] unless string
|
63
|
+
|
64
|
+
accept_language_with_weight(string).map{|lang, weight| lang }
|
65
|
+
end
|
66
|
+
alias locales accept_language
|
67
|
+
|
68
|
+
##
|
69
|
+
# Transform the HTTP_ACCEPT_LANGUAGE header into an Array with:
|
70
|
+
#
|
71
|
+
# [[lang, weight], [lang, weight], ...]
|
72
|
+
#
|
73
|
+
# This algorithm was taken and improved from the locales library.
|
74
|
+
#
|
75
|
+
# Usage:
|
76
|
+
#
|
77
|
+
# request.accept_language_with_weight
|
78
|
+
# # => [["en-us", 1.0], ["en", 0.8], ["de-at", 0.5], ["de", 0.3]]
|
79
|
+
#
|
80
|
+
# @param [String #to_s] string the value of HTTP_ACCEPT_LANGUAGE
|
81
|
+
# @return [Array] array of [lang, weight] arrays
|
82
|
+
# @see Request#accept_language
|
83
|
+
# @author manveru
|
84
|
+
#
|
85
|
+
def accept_language_with_weight(string = env['HTTP_ACCEPT_LANGUAGE'])
|
86
|
+
string.to_s.gsub(/\s+/, '').split(',').
|
87
|
+
map{|chunk| chunk.split(';q=', 2) }.
|
88
|
+
map{|lang, weight| [lang, weight ? weight.to_f : 1.0] }.
|
89
|
+
sort_by{|lang, weight| -weight }
|
90
|
+
end
|
91
|
+
|
92
|
+
INTERESTING_HTTP_VARIABLES =
|
93
|
+
(/USER|HOST|REQUEST|REMOTE|FORWARD|REFER|PATH|QUERY|VERSION|KEEP|CACHE/)
|
94
|
+
|
95
|
+
# Interesting HTTP variables from env
|
96
|
+
def http_variables
|
97
|
+
env.reject{|key, value| key.to_s !~ INTERESTING_HTTP_VARIABLES }
|
98
|
+
end
|
99
|
+
alias http_vars http_variables
|
100
|
+
|
101
|
+
REQUEST_STRING_FORMAT = "#<%s params=%p cookies=%p env=%p>"
|
102
|
+
|
103
|
+
def to_s
|
104
|
+
REQUEST_STRING_FORMAT % [self.class, params, cookies, http_variables]
|
105
|
+
end
|
106
|
+
alias inspect to_s
|
107
|
+
|
108
|
+
# Pretty prints current action with parameters, cookies and environment
|
109
|
+
# variables.
|
110
|
+
def pretty_print(pp)
|
111
|
+
pp.object_group(self) do
|
112
|
+
group = {
|
113
|
+
'params' => params,
|
114
|
+
'cookies' => cookies,
|
115
|
+
'env' => http_variables
|
116
|
+
}
|
117
|
+
|
118
|
+
group.each do |name, hash|
|
119
|
+
pp.breakable
|
120
|
+
pp.text " @#{name}="
|
121
|
+
pp.nest(name.size + 3){ pp.pp_hash(hash) }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end # Request
|
126
|
+
end # Ramaze
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
|
+
module Ramaze
|
4
|
+
##
|
5
|
+
# Ramaze::Response is a small wrapper around Rack::Response that makes it
|
6
|
+
# easier to send response data to the browser from a Ramaze application.
|
7
|
+
#
|
8
|
+
# @author Michael Fellinger
|
9
|
+
# @since 01-03-2008
|
10
|
+
#
|
11
|
+
class Response < Rack::Response
|
12
|
+
# Alias for Current.response
|
13
|
+
def self.current; Current.response; end
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new instance of the response class and processes the specified
|
17
|
+
# parameters. Once this has been done it calls Rack::Response#initialize.
|
18
|
+
#
|
19
|
+
# @author Michael Fellinger
|
20
|
+
# @since 01-03-2008
|
21
|
+
# @param [Array] body An array containing the data for the response body.
|
22
|
+
# @param [Fixnum] status The HTPP status code for the response.
|
23
|
+
# @param [Hash] header A hash containing additional headers and their
|
24
|
+
# values.
|
25
|
+
# @param [Proc] block
|
26
|
+
#
|
27
|
+
def initialize(body = [], status = 200, header = {}, &block)
|
28
|
+
modified_header = Ramaze.options.header.merge(header)
|
29
|
+
header.merge!(modified_header)
|
30
|
+
super
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Updates the body, status and headers.
|
35
|
+
#
|
36
|
+
# @author Michael Fellinger
|
37
|
+
# @since 01-03-2008
|
38
|
+
# @see Ramaze::Response#initialize
|
39
|
+
#
|
40
|
+
def build(new_body = nil, new_status = nil, new_header = nil)
|
41
|
+
self.header.merge!(new_header) if new_header
|
42
|
+
|
43
|
+
self.body = new_body if new_body
|
44
|
+
self.status = new_status if new_status
|
45
|
+
end
|
46
|
+
|
47
|
+
##
|
48
|
+
# Sets the body of the response to the given object.
|
49
|
+
#
|
50
|
+
# @author Michael Fellinger
|
51
|
+
# @since 01-03-2008
|
52
|
+
# @param [Object] obj The object to use as the response body.
|
53
|
+
#
|
54
|
+
def body=(obj)
|
55
|
+
if obj.respond_to?(:stat)
|
56
|
+
@length = obj.stat.size
|
57
|
+
@body = obj
|
58
|
+
elsif obj.respond_to?(:size)
|
59
|
+
@body = []
|
60
|
+
@length = 0
|
61
|
+
write(obj)
|
62
|
+
else
|
63
|
+
raise(ArgumentError, "Invalid body: %p" % obj)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end # Response
|
67
|
+
end # Ramaze
|