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
@@ -0,0 +1,228 @@
|
|
1
|
+
# @title Testing Ramaze
|
2
|
+
# Testing Ramaze
|
3
|
+
|
4
|
+
Ramaze uses and encourages BDD (Behaviour Driven Development). Ramaze itself is
|
5
|
+
tested using [Bacon][bacon] and supports it out of the box, it however isn't
|
6
|
+
limited to just Bacon.
|
7
|
+
|
8
|
+
One might wonder why to bother with writing tests. The answer to this is quite
|
9
|
+
simple: stability. Manually testing an application works on a very basic level
|
10
|
+
but there are various issues that will arise once your application grows. The
|
11
|
+
two biggest issues are human errors and repeatability. Especially the latter
|
12
|
+
becomes an issue when your development team grows in size, while the initial
|
13
|
+
developer may be willing to manually test every feature every time a change has
|
14
|
+
been made others might not. Even worse, there's a chance they won't test their
|
15
|
+
code at all and assume it's production ready because on their setup.
|
16
|
+
|
17
|
+
Writing tests that can be executed using a single command (or automatically)
|
18
|
+
makes your life a lot easier as you no longer have to worry about any of these
|
19
|
+
issues (assuming people actually write tests). Whenever somebody commits code
|
20
|
+
they write a test and you can easily verify if it works on different setups by
|
21
|
+
simply running said test.
|
22
|
+
|
23
|
+
When writing Ruby code you can pick from a large collection of testing libraries
|
24
|
+
such as Bacon and [Rspec][rspec] for general tests, [SimpleCov][simplecov] for
|
25
|
+
code coverage and [Capybara][capybara] for testing form based actions and the
|
26
|
+
like. Of course the list doesn't stop here, there's simply too much to discuss
|
27
|
+
everything.
|
28
|
+
|
29
|
+
## Bacon
|
30
|
+
|
31
|
+
Bacon is a small and lightweight Rspec clone that's used by Ramaze and Innate
|
32
|
+
and is the recommended tool to use. Each bacon test consists out of at least two
|
33
|
+
bits: a "describe" block and an "it" (or "should") block. The describe block can
|
34
|
+
be seen as a group of multiple it/should blocks. In most cases these blocks are
|
35
|
+
used to specify the name of a class, module, etc. The it/should blocks are used
|
36
|
+
for individual tests.
|
37
|
+
|
38
|
+
Lets take a look at a simple block of code:
|
39
|
+
|
40
|
+
class Person
|
41
|
+
attr_accessor :name
|
42
|
+
|
43
|
+
def initialize(name = nil)
|
44
|
+
@name = name
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
Using Bacon we can test this code as following:
|
49
|
+
|
50
|
+
require 'bacon'
|
51
|
+
|
52
|
+
describe 'Person' do
|
53
|
+
should 'respond to #name' do
|
54
|
+
person = Person.new
|
55
|
+
|
56
|
+
person.respond_to?(:name).should == true
|
57
|
+
person.respond_to?(:name=).should == true
|
58
|
+
end
|
59
|
+
|
60
|
+
should 'set the name in the constructor' do
|
61
|
+
person = Person.new('Matz')
|
62
|
+
|
63
|
+
person.name.should == 'Matz'
|
64
|
+
end
|
65
|
+
|
66
|
+
should 'set the name using #name=' do
|
67
|
+
person = Person.new
|
68
|
+
|
69
|
+
person.name = 'Matz'
|
70
|
+
|
71
|
+
person.name.should == 'Matz'
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
For more information on the syntax of Bacon and other information see the
|
76
|
+
[Bacon Github project][bacon].
|
77
|
+
|
78
|
+
### Bacon With Ramaze
|
79
|
+
|
80
|
+
Ramaze makes it easy to test your code using Bacon by providing you with a small
|
81
|
+
helper file. This file can be loaded as following:
|
82
|
+
|
83
|
+
require 'ramaze/spec/bacon'
|
84
|
+
|
85
|
+
This file adds two bacon contexts (rack_test and webrat), configures Ramaze to
|
86
|
+
only show error messages and adds a few helper methods.
|
87
|
+
|
88
|
+
### Bacon and Rack::Test
|
89
|
+
|
90
|
+
In order to test Ramaze specific code you'll need to use a tool that's capable
|
91
|
+
of mocking Rack requests or execute this request in a different way (e.g. using
|
92
|
+
Selenium). Rack::Test (gem install rack-test) makes it possible to test your
|
93
|
+
Rack based (and thus Ramaze) applications without having to use a webbrowser.
|
94
|
+
|
95
|
+
Ramaze makes it easy to use Rack::Test by defining a special bacon context:
|
96
|
+
"rack_test". This context can be used by calling `behaves_like :rack_test`
|
97
|
+
inside your describe block:
|
98
|
+
|
99
|
+
describe 'Using Rack::Test' do
|
100
|
+
behaves_like :rack_test
|
101
|
+
end
|
102
|
+
|
103
|
+
Once loaded you can execute HTTP requests using methods such as `get`:
|
104
|
+
|
105
|
+
describe 'Using Rack::Test' do
|
106
|
+
behaves_like :rack_test
|
107
|
+
|
108
|
+
should 'display the homepage' do
|
109
|
+
get('/').body.should == 'Hello, Rack::Test!'
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
More information about Rack::Test can be found on the [Github page of
|
114
|
+
Rack::Test][rack-test].
|
115
|
+
|
116
|
+
## Capybara
|
117
|
+
|
118
|
+
Capybara is a Gem that can be used to simulate browser requests using
|
119
|
+
Rack::Test, Selenium or other drivers, it's even capable of testing Javascript
|
120
|
+
based code using Selenium.
|
121
|
+
|
122
|
+
In order to use Capybara you must first install it:
|
123
|
+
|
124
|
+
$ gem install capybara
|
125
|
+
|
126
|
+
Once installed you'll have to configure Capybara so it knows how to use your
|
127
|
+
Ramaze application. Depending on the testing Gem you're using you'll also have
|
128
|
+
to configure said Gem, for this guide it's assumed that you're using Bacon.
|
129
|
+
|
130
|
+
First you should load and configure Capybara:
|
131
|
+
|
132
|
+
require 'capybara'
|
133
|
+
require 'capybara/dsl'
|
134
|
+
require 'bacon'
|
135
|
+
|
136
|
+
# Tells Capybara which driver to use and where to find your application.
|
137
|
+
# Without this Capybara will not work properly.
|
138
|
+
Capybara.configure do |config|
|
139
|
+
config.default_driver = :rack_test
|
140
|
+
config.app = Ramaze.middleware
|
141
|
+
end
|
142
|
+
|
143
|
+
Next you'll have to set up a context for Bacon:
|
144
|
+
|
145
|
+
shared :capybara do
|
146
|
+
Ramaze.setup_dependencies
|
147
|
+
extend Capybara::DSL
|
148
|
+
end
|
149
|
+
|
150
|
+
Last but not least, make sure Ramaze knows about your root directories and set
|
151
|
+
your mode:
|
152
|
+
|
153
|
+
Ramaze.options.roots << 'path/to/spec/directory'
|
154
|
+
Ramaze.options.mode = :spec
|
155
|
+
|
156
|
+
Once all of this has been done you can start using Capybara. A simple example of
|
157
|
+
this is the following:
|
158
|
+
|
159
|
+
class MainController < Ramaze::Controller
|
160
|
+
map '/'
|
161
|
+
|
162
|
+
def index
|
163
|
+
return 'Hello, Ramaze!'
|
164
|
+
end
|
165
|
+
|
166
|
+
def redirect_request
|
167
|
+
redirect(MainController.r(:index))
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe 'Testing Ramaze' do
|
172
|
+
behaves_like :capybara
|
173
|
+
|
174
|
+
it 'Go to the homepage' do
|
175
|
+
visit '/'
|
176
|
+
|
177
|
+
page.has_content?('Hello, Ramaze!').should == true
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'Follow redirects' do
|
181
|
+
visit '/redirect_request'
|
182
|
+
|
183
|
+
page.current_path.should == '/index'
|
184
|
+
page.has_content?('Hello, Ramaze!').should == true
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
For more information on how to use Capybara with other testing tools, how to use
|
189
|
+
the syntax and so on you should resort to the [Capybara Github page][capybara].
|
190
|
+
|
191
|
+
## Code Coverage using SimpleCov
|
192
|
+
|
193
|
+
To test the Ramaze application tests coverage, you can use a tool like
|
194
|
+
[SimpleCov][simplecov]. SimpleCov requires minimal effort to get integrated,
|
195
|
+
start by installing the gem:
|
196
|
+
|
197
|
+
gem install simplecov
|
198
|
+
|
199
|
+
In order to actually measure your code coverage you'll have to tell SimpleCov a
|
200
|
+
bit about your application. This is done by loading Simplecov and starting it
|
201
|
+
*before* loading all your tests. This can be done by using the following code:
|
202
|
+
|
203
|
+
require 'simplecov'
|
204
|
+
|
205
|
+
SimpleCov.start
|
206
|
+
|
207
|
+
# Load the existing files
|
208
|
+
Dir.glob('spec/*.rb').each do |spec_file|
|
209
|
+
unless File.basename(spec_file) == 'init.rb'
|
210
|
+
require File.expand_path(spec_file)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
In order to run the file you'd simply invoke the following:
|
215
|
+
|
216
|
+
bacon spec/init.rb
|
217
|
+
|
218
|
+
Upon success SimpleCov will create a new directory ``coverage`` with the
|
219
|
+
results. You can point your browser to the index.html file inside that directory
|
220
|
+
to view the results.
|
221
|
+
|
222
|
+
For more information on using Simplecov see the [Github project][simplecov].
|
223
|
+
|
224
|
+
[bacon]: https://github.com/chneukirchen/bacon
|
225
|
+
[simplecov]: https://github.com/colszowka/simplecov
|
226
|
+
[rspec]: http://relishapp.com/rspec
|
227
|
+
[capybara]: http://jnicklas.github.com/capybara/
|
228
|
+
[rack-test]: https://github.com/brynary/rack-test
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# @title Upgrading
|
2
|
+
# Upgrading
|
3
|
+
|
4
|
+
Ramaze strives to be backwards compatible between each release. However, some
|
5
|
+
releases may contain changes that are *not* backwards compatible. This document
|
6
|
+
describes the steps required to upgrade between these releases.
|
7
|
+
|
8
|
+
## Upgrading to Ramaze 2012.12.08
|
9
|
+
|
10
|
+
Ramaze 2012.12.08 is **not** backwards compatible with previous releases due
|
11
|
+
to changes made in Innate 2012.12.
|
12
|
+
|
13
|
+
### Middleware
|
14
|
+
|
15
|
+
In previous versions one could add Rack middleware using `Ramaze.middleware!`.
|
16
|
+
This method has been renamed to `Ramaze.middleware` (without the `!`) and its
|
17
|
+
use has been changed. Instead of calling `run Ramaze.middleware` one now has to
|
18
|
+
use `run Ramaze.core`.
|
19
|
+
|
20
|
+
An example of the old way of defining middleware:
|
21
|
+
|
22
|
+
Ramaze.middleware! :dev do |m|
|
23
|
+
m.use Rack::Lint
|
24
|
+
m.run Ramaze.middleware
|
25
|
+
end
|
26
|
+
|
27
|
+
The new way of defining middleware:
|
28
|
+
|
29
|
+
Ramaze.middleware :dev do
|
30
|
+
use Rack::Lint
|
31
|
+
run Ramaze.core
|
32
|
+
end
|
33
|
+
|
34
|
+
### Commands
|
35
|
+
|
36
|
+
Various executable commands such as `ramaze start` and `ramaze console` have
|
37
|
+
been removed in favour of the use of Rake tasks. For existing projects that do
|
38
|
+
not have these Rake tasks you'll have to import them manually, new projects
|
39
|
+
will have these tasks automatically. These tasks are located [here][rake
|
40
|
+
tasks].
|
41
|
+
|
42
|
+
These commands were removed as they contained a lot of old and rotting code
|
43
|
+
without any tests. Some of them, such as `ramaze start` weren't very useful
|
44
|
+
either as most people will use the commands for their webservers (e.g. Thin)
|
45
|
+
instead. The use of Rake tasks also makes it possible for people to customize
|
46
|
+
these to their liking.
|
47
|
+
|
48
|
+
### Snippets
|
49
|
+
|
50
|
+
Ramaze ships with various snippets that extend various core Ruby classes. In
|
51
|
+
Ramaze 2012.12.08 a lot of these snippets have been removed. A list of all the
|
52
|
+
removed snippets can be found [here][removed snippets].
|
53
|
+
|
54
|
+
### Loggers
|
55
|
+
|
56
|
+
The following logging classes are no longer available:
|
57
|
+
|
58
|
+
* Ramaze::Logger::Growl
|
59
|
+
* Ramaze::Logger::Analogger
|
60
|
+
* Ramaze::Logger::Knotify
|
61
|
+
* Ramaze::Logger::Xosd
|
62
|
+
|
63
|
+
### Helpers
|
64
|
+
|
65
|
+
The following helpers have been removed:
|
66
|
+
|
67
|
+
* Ramaze::Helper::Disqus
|
68
|
+
* Ramaze::Helper::Ultraviolet
|
69
|
+
|
70
|
+
### Core classes
|
71
|
+
|
72
|
+
The following core classes have been removed:
|
73
|
+
|
74
|
+
* Ramaze::AppGraph
|
75
|
+
* Ramaze::Plugin
|
76
|
+
* Ramaze::MiddlewareCompiler (alias of Innate::MiddlewareCompiler)
|
77
|
+
|
78
|
+
### Prototypes
|
79
|
+
|
80
|
+
The prototype generated by `ramaze create` has been changed. It contains a set
|
81
|
+
of Rake tasks, a README, a Gemfile and some other small changes compared to the
|
82
|
+
previous prototype. Existing projects are not affected.
|
83
|
+
|
84
|
+
[rake tasks]: https://github.com/Ramaze/ramaze/blob/master/lib/proto/task/ramaze.rake
|
85
|
+
[removed snippets]: https://github.com/Ramaze/ramaze/commit/7e966dcdec50d490eb828f7673f101b1a6b087b3
|
@@ -0,0 +1,335 @@
|
|
1
|
+
# @title Views
|
2
|
+
# Views
|
3
|
+
|
4
|
+
Views are the last step in the process of a request to a MVC framework such as
|
5
|
+
Ramaze. A controller loads a model, the model processes a certain amount of
|
6
|
+
data and the controller will then pass this data to a view. The typical flow of
|
7
|
+
a MVC framework (or any framework using a view system) looks like the following:
|
8
|
+
|
9
|
+
Request --> Controller --> View
|
10
|
+
^ |
|
11
|
+
| '--> Model
|
12
|
+
| |
|
13
|
+
'--<-----'
|
14
|
+
|
15
|
+
The contents of a view is what the visitor of a page will eventually see.
|
16
|
+
Looking back at the waiter example introduced in the :doc:`controllers` chapter
|
17
|
+
a view can be seen as our dinner. It's the end result we requested for but it
|
18
|
+
has been modified according to our order.
|
19
|
+
|
20
|
+
Ramaze has support for many different template engines and thus views can look
|
21
|
+
quite different. By default Ramaze uses a simple template engine called "Etanni",
|
22
|
+
Etanni was developed by Michael Fellinger exclusively for Ramaze and is a very
|
23
|
+
fast template engine. In this chapter we'll use Etanni to make it a bit easier
|
24
|
+
to understand how views work.
|
25
|
+
|
26
|
+
## Layouts
|
27
|
+
|
28
|
+
Ramaze also has a concept of layouts. Layouts are basically views for views and
|
29
|
+
are placed in the "layout" directory of your application. These views can be
|
30
|
+
used to display generic elements such as a navigation menu for all views.
|
31
|
+
Because of this it's recommended to only place action specific markup in your
|
32
|
+
views. Global elements such as navigation menus or page titles should go in a
|
33
|
+
layout.
|
34
|
+
|
35
|
+
In order to render a view inside a layout all you have to do is calling the
|
36
|
+
"content" instance variable. If we were to use Etanni (more on this later) our
|
37
|
+
code would look like the following:
|
38
|
+
|
39
|
+
<div id="container">
|
40
|
+
#{@content}
|
41
|
+
</div>
|
42
|
+
|
43
|
+
In order to use a layout we have to tell Ramaze to do so in our controller.
|
44
|
+
Setting a layout can be done in a few different ways. The easiest way is using
|
45
|
+
the method "layout" in your controller as following:
|
46
|
+
|
47
|
+
class Blogs < Ramaze::Controller
|
48
|
+
layout 'default'
|
49
|
+
end
|
50
|
+
|
51
|
+
This will tell Ramaze to use the layout "default.xhtml" for the Blogs controller.
|
52
|
+
While suited for most people there comes a time when you're in the need of a
|
53
|
+
more dynamic way of assigning a layout. This can be done in two different ways.
|
54
|
+
The first way is passing a block to the layout() method:
|
55
|
+
|
56
|
+
class Blogs < Ramaze::Controller
|
57
|
+
layout do |path|
|
58
|
+
if path === 'index'
|
59
|
+
:index_layout
|
60
|
+
else
|
61
|
+
:alternative_layout
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
In this example two layouts are used, `index_layout` for the index() method and
|
67
|
+
`alternative_layout` for all other methods.
|
68
|
+
|
69
|
+
The second way is using the method `set_layout`. This method works almost
|
70
|
+
identical to layout() but has one big advantage: it can set method specific
|
71
|
+
layouts. Changing the code posted above so that it uses this method would look
|
72
|
+
like the following:
|
73
|
+
|
74
|
+
class Blogs < Ramaze::Controller
|
75
|
+
# Set our default layout
|
76
|
+
layout 'alternative_layout'
|
77
|
+
|
78
|
+
# Set our layout for the index() method
|
79
|
+
set_layout 'index_layout' => [:index]
|
80
|
+
end
|
81
|
+
|
82
|
+
The `set_layout` method takes a hash where the keys are the names of the layouts
|
83
|
+
to use and the values the methods for which to use each layout. Below is another
|
84
|
+
example that specifies a few extra layout/method combinations.
|
85
|
+
|
86
|
+
class Blogs < Ramaze::Controller
|
87
|
+
# Set our default layout
|
88
|
+
layout 'default'
|
89
|
+
|
90
|
+
# Set our layout for the index() method
|
91
|
+
set_layout 'main' => [:index, :edit], 'extra' => [:add, :synchronize]
|
92
|
+
end
|
93
|
+
|
94
|
+
<div class="note todo">
|
95
|
+
<p>
|
96
|
+
<strong>Note:</strong> layouts should be set <strong>outside</strong>
|
97
|
+
controller actions. Doing so can lead to unexpected behaviour as the
|
98
|
+
layout won't be visible until the next request.
|
99
|
+
</p>
|
100
|
+
</div>
|
101
|
+
|
102
|
+
## Loading Views
|
103
|
+
|
104
|
+
Loading views can be done in two different ways. When not explicitly calling a
|
105
|
+
certain view (or returning any data from the controller) Ramaze will try to load
|
106
|
+
a matching view for the current action. If the method "edit" was called Ramaze
|
107
|
+
will try to load a view called "edit". Manually sending a response back can be
|
108
|
+
done by returning a string from the controller method that is called. Take a
|
109
|
+
look at the example below.
|
110
|
+
|
111
|
+
class Blogs < Ramaze::Controller
|
112
|
+
map '/'
|
113
|
+
|
114
|
+
def index
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
def custom
|
119
|
+
"This is my custom response!"
|
120
|
+
end
|
121
|
+
|
122
|
+
def other
|
123
|
+
render_view :foobar
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
If the user were to visit /index Ramaze would try to load the view "index.xhtml"
|
128
|
+
(``.xhtml`` is the extension for Etanni templates) but when the user goes to
|
129
|
+
/custom he'll always see the message "This is my custom response!". This is
|
130
|
+
because Ramaze will use the return value of a controller method as the body for
|
131
|
+
the response that will be sent back to the visitor.
|
132
|
+
|
133
|
+
Let's take a look at the other() method in our controller. As you can see it
|
134
|
+
calls a method `render_view`. This method is used to render a different view
|
135
|
+
(in this case foobar.xhtml) but without calling it's action, once this is done
|
136
|
+
the contents of the view will be returned to the controller. When calling custom
|
137
|
+
views you can use any of the following methods:
|
138
|
+
|
139
|
+
* render\_view
|
140
|
+
* render\_partial
|
141
|
+
* render\_file
|
142
|
+
* render\_custom
|
143
|
+
* render\_full
|
144
|
+
|
145
|
+
### render\_view
|
146
|
+
|
147
|
+
As mentioned earlier this method is used to render a view without calling it's
|
148
|
+
action. This can be useful if you have several methods that share the same view
|
149
|
+
but feed it different data. The usage of this method is quite simple, it's first
|
150
|
+
argument is the name of the view to load (without the extension, Ramaze will
|
151
|
+
figure this out) and the second argument is a hash containing any additional
|
152
|
+
variables to send to the view (more on this later).
|
153
|
+
|
154
|
+
# Render "foo.xhtml"
|
155
|
+
render_view :foo
|
156
|
+
|
157
|
+
# Render "foo.xhtml" and send some extra data to it
|
158
|
+
render_view :foo, :name => "Ramaze"
|
159
|
+
|
160
|
+
### render\_partial
|
161
|
+
|
162
|
+
The `render_partial` method works similar to the `render_view` method but with
|
163
|
+
two differences:
|
164
|
+
|
165
|
+
1. This method *does* execute a matching action.
|
166
|
+
2. This method *does not* render a layout.
|
167
|
+
|
168
|
+
This makes the `render_partial` method useful for responses to Ajax calls that
|
169
|
+
don't need (or don't want to) load both the view and the layout. This method has
|
170
|
+
the same arguments as the `render_view` method.
|
171
|
+
|
172
|
+
# Render the view "partial.xhtml"
|
173
|
+
render_partial :partial
|
174
|
+
|
175
|
+
# Render the partial "partial.xhtml" and send some extra data to it
|
176
|
+
render_partial :partial, :name => "Ramaze"
|
177
|
+
|
178
|
+
### render\_file
|
179
|
+
|
180
|
+
There comes a time when you may want to render a file that's located somewhere
|
181
|
+
else. For this there is the `render_file()`` method. This method takes a path,
|
182
|
+
either relative or absolute to a file that should be rendered. This can be
|
183
|
+
useful if you have a cache directory located outside of your project directory
|
184
|
+
and you want to load a view from it.
|
185
|
+
|
186
|
+
The first argument of this method is a path to a file to render, the second
|
187
|
+
argument is a hash with variables just like the other render methods.
|
188
|
+
Optionally this method accepts a block that can be used to modify the current
|
189
|
+
action.
|
190
|
+
|
191
|
+
# Render a file located in /tmp
|
192
|
+
render_file '/tmp/view.xhtml'
|
193
|
+
|
194
|
+
# Render a file and send some extra data to it
|
195
|
+
render_file '/tmp/view.xhtml', :name => "Ramaze"
|
196
|
+
|
197
|
+
# Render a file and modify the action
|
198
|
+
render_file '/tmp/view.xhtml' do |action|
|
199
|
+
# Remove our layout
|
200
|
+
action.layout = nil
|
201
|
+
end
|
202
|
+
|
203
|
+
### render\_custom
|
204
|
+
|
205
|
+
The render_custom() method can be used to create your personal render method and
|
206
|
+
is actually used by methods such as the render_partial method. The syntax is the
|
207
|
+
same as the render_file() method except that instead of a full path it's first
|
208
|
+
argument should be the name of the action to render.
|
209
|
+
|
210
|
+
render_custom :index do |action|
|
211
|
+
# Remove the layout
|
212
|
+
action.layout = nil
|
213
|
+
|
214
|
+
# Render the view without calling a method
|
215
|
+
action.method = nil
|
216
|
+
end
|
217
|
+
|
218
|
+
### render\_full
|
219
|
+
|
220
|
+
Last but not least there's the render_full() method. This is the method Ramaze
|
221
|
+
uses for calling a controller along with it's views and such. This method takes
|
222
|
+
two arguments, the first is the full path of the action to render and the second
|
223
|
+
a hash that will be used for the query string parameters. Please note that if this
|
224
|
+
method is called in the first request of a client you won't have access to the
|
225
|
+
session data and such, any following calls will have access to this data.
|
226
|
+
|
227
|
+
# Calls Blogs#index
|
228
|
+
render_full '/blog/index'
|
229
|
+
|
230
|
+
# Calls Blogs#edit(10)
|
231
|
+
render_full '/blog/edit/10'
|
232
|
+
|
233
|
+
### Assigning Data
|
234
|
+
|
235
|
+
Assigning data to a view is very simple. Ramaze will copy all instance variables
|
236
|
+
from the current controller into the view. This means that if you have a variable
|
237
|
+
@user set to "Yorick Peterse" this variable can be displayed in your view as
|
238
|
+
following (assuming you're using Etanni):
|
239
|
+
|
240
|
+
<p>Username: #{@user}</p>
|
241
|
+
|
242
|
+
Besides this you can assign custom data to a view by calling any of the render
|
243
|
+
methods and passing a hash to them.
|
244
|
+
|
245
|
+
Please note that the behavior or the syntax of displaying variables may change
|
246
|
+
depending on the template engine you're using. While Etanni allows you to execute
|
247
|
+
plain Ruby code in your view a template engine such as Mustache won't and thus
|
248
|
+
may have a different syntax. If we wanted to use Mustache and display our @user
|
249
|
+
variable it would have to be done as following:
|
250
|
+
|
251
|
+
<p>Username: {{user}}</p>
|
252
|
+
|
253
|
+
## View Mapping
|
254
|
+
|
255
|
+
Views are saved in the directory "view" and are saved according to the controller
|
256
|
+
mapping. If you have a controller that's mapped to /modules/blog the index view
|
257
|
+
will be located at view/modules/blog/index.xhtml. Below are a few examples that
|
258
|
+
show where the views are located when passing different values to the map()
|
259
|
+
method.
|
260
|
+
|
261
|
+
map '/' # view/index.html, view/edit.xhtml, etc
|
262
|
+
map '/blog' # view/blog/index.xhtml, view/blog/edit.xhtml, etc
|
263
|
+
map '/modules/blog' # view/modules/blog/index.xhtml, view/modules/blog/edit.xhtml, etc
|
264
|
+
|
265
|
+
## Template Engines
|
266
|
+
|
267
|
+
Ramaze ships with support for the following template engines:
|
268
|
+
|
269
|
+
* Erector
|
270
|
+
* Etanni
|
271
|
+
* Erubis
|
272
|
+
* Ezamar
|
273
|
+
* HAML
|
274
|
+
* Less
|
275
|
+
* Gestalt
|
276
|
+
* Liquid
|
277
|
+
* Lokar
|
278
|
+
* Mustache
|
279
|
+
* Nagoro
|
280
|
+
* Remarkably
|
281
|
+
* Sass
|
282
|
+
* Slippers
|
283
|
+
* Tagz
|
284
|
+
* Tenjin
|
285
|
+
|
286
|
+
All of these engines can be used on a per controller basis by calling the
|
287
|
+
engine() method and passing a symbol or string to it.
|
288
|
+
|
289
|
+
class Blogs < Ramaze::Controller
|
290
|
+
engine :etanni
|
291
|
+
end
|
292
|
+
|
293
|
+
The engine() method uses the provide() method (more on that in a second) to set
|
294
|
+
the given engine for all data sent back to the visitor with a content type of
|
295
|
+
"text/html". If you want to use a certain engine for a different content type
|
296
|
+
(e.g. application/json) you can do so using the provide() method:
|
297
|
+
|
298
|
+
class Blogs < Ramaze::Controller
|
299
|
+
# Simple right?
|
300
|
+
provide(:json, :erb)
|
301
|
+
|
302
|
+
# Somewhat more verbose
|
303
|
+
provide(:json, :engine => :erb)
|
304
|
+
|
305
|
+
# AWESOME!
|
306
|
+
provide(:json, :type => 'application/json') do |action, value|
|
307
|
+
# "value" is the response body from our controller's method
|
308
|
+
value.to_json
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
It's important to remember that the actions in the provide() method will only
|
313
|
+
be executed if it's first parameter (in this case "json") are appended to the
|
314
|
+
URL as an extension. A request to /hello would output HTML when using the above
|
315
|
+
code, if we wanted JSON we'd have to send a request to /hello.json.
|
316
|
+
|
317
|
+
The default template engine used by Ramaze is Etanni. Etanni is a small template
|
318
|
+
engine that ships with Ramaze (and Innate!) that's extremely fast and has a very
|
319
|
+
simple syntax. Statements are wrapped in <?r ?> tags and rendering data can be
|
320
|
+
done by wrapping the variables in ``#{}``:
|
321
|
+
|
322
|
+
# <?r ?> accepts regular Ruby code
|
323
|
+
<?r if @user.name === 'yorick' ?>
|
324
|
+
<p>Hello Yorick</p>
|
325
|
+
<?r else ?>
|
326
|
+
<p>And who are you?</p>
|
327
|
+
<?r end ?>
|
328
|
+
|
329
|
+
# Display our name
|
330
|
+
#{@user.name}
|
331
|
+
|
332
|
+
Etanni can be very useful for most project but it's *not* recommended to use it
|
333
|
+
when you want to allow a client to manage certain templates (e.g. Email layouts).
|
334
|
+
This is because Etanni allows you to execute regular Ruby code and thus someone
|
335
|
+
could do some serious damage to your server without even knowing it.
|
data/lib/proto/Gemfile
ADDED
data/lib/proto/README.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Ramaze Application
|
2
|
+
|
3
|
+
Welcome to your new Ramaze application. This README serves as a starting point
|
4
|
+
for writing an application using the code you just generated.
|
5
|
+
|
6
|
+
Once you've started working on your application you'll probably want to update
|
7
|
+
this README so that its contents reflect your application's state and purpose.
|
8
|
+
|
9
|
+
## Requirements
|
10
|
+
|
11
|
+
In order to run this application you'll need to have Ramaze 2.0.0 or newer and
|
12
|
+
Rake. Optionally you can install Bundler and use it for Gem management, this
|
13
|
+
can be done as following:
|
14
|
+
|
15
|
+
$ gem install bundler
|
16
|
+
$ bundle install
|
17
|
+
|
18
|
+
## Rake Tasks
|
19
|
+
|
20
|
+
This application comes with a few predefined Rake tasks that make it easy to
|
21
|
+
get started. You can list these tasks by running `rake -T` or `rake -D` (this
|
22
|
+
shows longer descriptions for tasks if there are any).
|
23
|
+
|
24
|
+
For example, to start a Ramaze console using Pry you'd run the following
|
25
|
+
command:
|
26
|
+
|
27
|
+
$ rake ramaze:pry
|
28
|
+
|
29
|
+
## Resources
|
30
|
+
|
31
|
+
In case you need help you can refer to the following resources:
|
32
|
+
|
33
|
+
* Ramaze website: <http://ramaze.net/>
|
34
|
+
* Github repository: <https://github.com/ramaze/ramaze>
|
35
|
+
* IRC channel: \#ramaze on Freenode
|
data/lib/proto/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Dir.glob(File.expand_path('../task/*.rake', __FILE__)) { |task| import task }
|
data/lib/proto/app.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# This file contains your application, it requires dependencies and necessary
|
2
|
+
# parts of the application.
|
3
|
+
require 'rubygems'
|
4
|
+
require 'ramaze'
|
5
|
+
|
6
|
+
# Make sure that Ramaze knows where you are
|
7
|
+
Ramaze.options.roots = [__DIR__]
|
8
|
+
|
9
|
+
require __DIR__('controller/init')
|