Pistos-ramaze 2008.09
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +481 -0
- data/Rakefile +228 -0
- data/benchmark/results.txt +131 -0
- data/benchmark/run.rb +362 -0
- data/benchmark/suite/minimal.rb +13 -0
- data/benchmark/suite/no_informer.rb +9 -0
- data/benchmark/suite/no_sessions.rb +10 -0
- data/benchmark/suite/no_template.rb +9 -0
- data/benchmark/suite/simple.rb +7 -0
- data/benchmark/suite/template_amrita2.rb +17 -0
- data/benchmark/suite/template_builder.rb +12 -0
- data/benchmark/suite/template_erubis.rb +10 -0
- data/benchmark/suite/template_ezamar.rb +10 -0
- data/benchmark/suite/template_haml.rb +15 -0
- data/benchmark/suite/template_liquid.rb +13 -0
- data/benchmark/suite/template_markaby.rb +11 -0
- data/benchmark/suite/template_nagoro.rb +10 -0
- data/benchmark/suite/template_redcloth.rb +15 -0
- data/benchmark/suite/template_tenjin.rb +10 -0
- data/benchmark/test.rb +35 -0
- data/bin/ramaze +80 -0
- data/doc/AUTHORS +29 -0
- data/doc/CHANGELOG +19530 -0
- data/doc/COPYING +56 -0
- data/doc/FAQ +92 -0
- data/doc/GPL +339 -0
- data/doc/INSTALL +92 -0
- data/doc/LEGAL +26 -0
- data/doc/TODO +29 -0
- data/doc/meta/announcement.txt +99 -0
- data/doc/meta/configuration.txt +163 -0
- data/doc/meta/internals.txt +278 -0
- data/doc/meta/users.kml +64 -0
- data/doc/readme_chunks/appendix.txt +10 -0
- data/doc/readme_chunks/examples.txt +38 -0
- data/doc/readme_chunks/features.txt +148 -0
- data/doc/readme_chunks/getting_help.txt +5 -0
- data/doc/readme_chunks/getting_started.txt +18 -0
- data/doc/readme_chunks/installing.txt +92 -0
- data/doc/readme_chunks/introduction.txt +18 -0
- data/doc/readme_chunks/principles.txt +56 -0
- data/doc/readme_chunks/thanks.txt +59 -0
- data/doc/tutorial/todolist.html +742 -0
- data/doc/tutorial/todolist.mkd +787 -0
- data/examples/app/auth/auth.rb +54 -0
- data/examples/app/auth/template/layout.haml +20 -0
- data/examples/app/auth/template/login.haml +16 -0
- data/examples/app/blog/README +3 -0
- data/examples/app/blog/controller/main.rb +29 -0
- data/examples/app/blog/model/entry.rb +30 -0
- data/examples/app/blog/public/styles/blog.css +132 -0
- data/examples/app/blog/spec/blog.rb +87 -0
- data/examples/app/blog/start.rb +7 -0
- data/examples/app/blog/view/edit.xhtml +17 -0
- data/examples/app/blog/view/index.xhtml +17 -0
- data/examples/app/blog/view/layout.xhtml +11 -0
- data/examples/app/blog/view/new.xhtml +16 -0
- data/examples/app/chat/model/history.rb +36 -0
- data/examples/app/chat/model/message.rb +7 -0
- data/examples/app/chat/public/css/chat.css +13 -0
- data/examples/app/chat/public/js/chat.js +22 -0
- data/examples/app/chat/public/js/jquery.js +3436 -0
- data/examples/app/chat/start.rb +40 -0
- data/examples/app/chat/view/chat.xhtml +9 -0
- data/examples/app/chat/view/index.xhtml +7 -0
- data/examples/app/chat/view/layout.xhtml +13 -0
- data/examples/app/localization/start.rb +35 -0
- data/examples/app/rapaste/Rakefile +34 -0
- data/examples/app/rapaste/controller/paste.rb +101 -0
- data/examples/app/rapaste/model/paste.rb +58 -0
- data/examples/app/rapaste/public/css/active4d.css +114 -0
- data/examples/app/rapaste/public/css/all_hallows_eve.css +72 -0
- data/examples/app/rapaste/public/css/amy.css +147 -0
- data/examples/app/rapaste/public/css/blackboard.css +88 -0
- data/examples/app/rapaste/public/css/brilliance_black.css +605 -0
- data/examples/app/rapaste/public/css/brilliance_dull.css +599 -0
- data/examples/app/rapaste/public/css/cobalt.css +149 -0
- data/examples/app/rapaste/public/css/dawn.css +121 -0
- data/examples/app/rapaste/public/css/display.css +197 -0
- data/examples/app/rapaste/public/css/eiffel.css +121 -0
- data/examples/app/rapaste/public/css/espresso_libre.css +109 -0
- data/examples/app/rapaste/public/css/idle.css +62 -0
- data/examples/app/rapaste/public/css/iplastic.css +80 -0
- data/examples/app/rapaste/public/css/lazy.css +73 -0
- data/examples/app/rapaste/public/css/mac_classic.css +123 -0
- data/examples/app/rapaste/public/css/magicwb_amiga.css +104 -0
- data/examples/app/rapaste/public/css/pastels_on_dark.css +188 -0
- data/examples/app/rapaste/public/css/slush_poppies.css +85 -0
- data/examples/app/rapaste/public/css/spacecadet.css +51 -0
- data/examples/app/rapaste/public/css/sunburst.css +180 -0
- data/examples/app/rapaste/public/css/twilight.css +137 -0
- data/examples/app/rapaste/public/css/zenburnesque.css +91 -0
- data/examples/app/rapaste/public/js/jquery.js +11 -0
- data/examples/app/rapaste/spec/rapaste.rb +51 -0
- data/examples/app/rapaste/start.rb +25 -0
- data/examples/app/rapaste/view/copy.xhtml +10 -0
- data/examples/app/rapaste/view/index.xhtml +9 -0
- data/examples/app/rapaste/view/layout.xhtml +25 -0
- data/examples/app/rapaste/view/list.xhtml +29 -0
- data/examples/app/rapaste/view/search.xhtml +41 -0
- data/examples/app/rapaste/view/view.xhtml +37 -0
- data/examples/app/sourceview/public/coderay.css +104 -0
- data/examples/app/sourceview/public/images/file.gif +0 -0
- data/examples/app/sourceview/public/images/folder.gif +0 -0
- data/examples/app/sourceview/public/images/tv-collapsable-last.gif +0 -0
- data/examples/app/sourceview/public/images/tv-collapsable.gif +0 -0
- data/examples/app/sourceview/public/images/tv-expandable-last.gif +0 -0
- data/examples/app/sourceview/public/images/tv-expandable.gif +0 -0
- data/examples/app/sourceview/public/images/tv-item-last.gif +0 -0
- data/examples/app/sourceview/public/images/tv-item.gif +0 -0
- data/examples/app/sourceview/public/jquery.js +11 -0
- data/examples/app/sourceview/public/jquery.treeview.css +48 -0
- data/examples/app/sourceview/public/jquery.treeview.js +223 -0
- data/examples/app/sourceview/public/sourceview.js +52 -0
- data/examples/app/sourceview/sourceview.rb +77 -0
- data/examples/app/sourceview/template/index.haml +59 -0
- data/examples/app/todolist/README +1 -0
- data/examples/app/todolist/public/favicon.ico +0 -0
- data/examples/app/todolist/public/js/jquery.js +1923 -0
- data/examples/app/todolist/public/ramaze.png +0 -0
- data/examples/app/todolist/spec/todolist.rb +132 -0
- data/examples/app/todolist/src/controller/main.rb +70 -0
- data/examples/app/todolist/src/element/page.rb +31 -0
- data/examples/app/todolist/src/model.rb +14 -0
- data/examples/app/todolist/start.rb +11 -0
- data/examples/app/todolist/template/index.xhtml +17 -0
- data/examples/app/todolist/template/new.xhtml +7 -0
- data/examples/app/upload/start.rb +19 -0
- data/examples/app/upload/view/index.xhtml +25 -0
- data/examples/app/whywiki/spec/whywiki.rb +58 -0
- data/examples/app/whywiki/start.rb +46 -0
- data/examples/app/whywiki/template/edit.xhtml +14 -0
- data/examples/app/whywiki/template/show.xhtml +18 -0
- data/examples/app/wikore/spec/wikore.rb +111 -0
- data/examples/app/wikore/src/controller.rb +80 -0
- data/examples/app/wikore/src/model.rb +53 -0
- data/examples/app/wikore/start.rb +9 -0
- data/examples/app/wikore/template/index.xhtml +8 -0
- data/examples/app/wiktacular/README +2 -0
- data/examples/app/wiktacular/mkd/link/2007-07-20_19-45-51.mkd +1 -0
- data/examples/app/wiktacular/mkd/link/current.mkd +1 -0
- data/examples/app/wiktacular/mkd/main/2007-07-20_16-31-33.mkd +1 -0
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd +1 -0
- 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/app/wiktacular/mkd/markdown/current.mkd +3 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd +3 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd +11 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd +13 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd +17 -0
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd +17 -0
- data/examples/app/wiktacular/mkd/testing/current.mkd +17 -0
- data/examples/app/wiktacular/public/favicon.ico +0 -0
- data/examples/app/wiktacular/public/screen.css +72 -0
- data/examples/app/wiktacular/spec/wiktacular.rb +157 -0
- data/examples/app/wiktacular/src/controller.rb +55 -0
- data/examples/app/wiktacular/src/model.rb +102 -0
- data/examples/app/wiktacular/start.rb +8 -0
- data/examples/app/wiktacular/template/edit.xhtml +6 -0
- data/examples/app/wiktacular/template/html_layout.xhtml +27 -0
- data/examples/app/wiktacular/template/index.xhtml +9 -0
- data/examples/app/wiktacular/template/new.xhtml +6 -0
- data/examples/basic/element.rb +45 -0
- data/examples/basic/gestalt.rb +27 -0
- data/examples/basic/hello.rb +15 -0
- data/examples/basic/layout.rb +28 -0
- data/examples/basic/linking.rb +29 -0
- data/examples/basic/simple.rb +56 -0
- data/examples/helpers/cache.rb +31 -0
- data/examples/helpers/form_with_sequel.rb +24 -0
- data/examples/helpers/httpdigest.rb +50 -0
- data/examples/helpers/identity.rb +18 -0
- data/examples/helpers/nitro_form.rb +23 -0
- data/examples/helpers/paginate.rb +71 -0
- data/examples/helpers/provide.rb +23 -0
- data/examples/helpers/rest.rb +28 -0
- data/examples/helpers/simple_captcha.rb +29 -0
- data/examples/misc/css.rb +37 -0
- data/examples/misc/facebook.rb +159 -0
- data/examples/misc/memleak_detector.rb +32 -0
- data/examples/misc/nagoro_element.rb +43 -0
- data/examples/misc/ramaise.rb +132 -0
- data/examples/misc/rapp.rb +45 -0
- data/examples/misc/sequel_scaffolding.rb +34 -0
- data/examples/misc/simple_auth.rb +35 -0
- data/examples/templates/template/external.amrita +19 -0
- data/examples/templates/template/external.haml +22 -0
- data/examples/templates/template/external.liquid +28 -0
- data/examples/templates/template/external.mab +30 -0
- data/examples/templates/template/external.nag +28 -0
- data/examples/templates/template/external.redcloth +19 -0
- data/examples/templates/template/external.rem +30 -0
- data/examples/templates/template/external.rhtml +28 -0
- data/examples/templates/template/external.tenjin +28 -0
- data/examples/templates/template/external.xsl +57 -0
- data/examples/templates/template/external.zmr +28 -0
- data/examples/templates/template_amrita2.rb +74 -0
- data/examples/templates/template_erubis.rb +53 -0
- data/examples/templates/template_ezamar.rb +50 -0
- data/examples/templates/template_haml.rb +50 -0
- data/examples/templates/template_liquid.rb +65 -0
- data/examples/templates/template_markaby.rb +58 -0
- data/examples/templates/template_nagoro.rb +51 -0
- data/examples/templates/template_redcloth.rb +59 -0
- data/examples/templates/template_remarkably.rb +55 -0
- data/examples/templates/template_tenjin.rb +53 -0
- data/examples/templates/template_xslt.rb +49 -0
- data/lib/proto/controller/init.rb +10 -0
- data/lib/proto/controller/main.rb +20 -0
- data/lib/proto/model/init.rb +4 -0
- data/lib/proto/public/css/ramaze_error.css +90 -0
- data/lib/proto/public/dispatch.fcgi +11 -0
- data/lib/proto/public/favicon.ico +0 -0
- data/lib/proto/public/js/jquery.js +3549 -0
- data/lib/proto/public/ramaze.png +0 -0
- data/lib/proto/spec/main.rb +25 -0
- data/lib/proto/start.rb +8 -0
- data/lib/proto/start.ru +16 -0
- data/lib/proto/view/error.xhtml +64 -0
- data/lib/proto/view/index.xhtml +34 -0
- data/lib/proto/view/page.xhtml +27 -0
- data/lib/ramaze/action/render.rb +191 -0
- data/lib/ramaze/action.rb +153 -0
- data/lib/ramaze/adapter/base.rb +128 -0
- data/lib/ramaze/adapter/cgi.rb +20 -0
- data/lib/ramaze/adapter/ebb.rb +18 -0
- data/lib/ramaze/adapter/evented_mongrel.rb +7 -0
- data/lib/ramaze/adapter/fake.rb +12 -0
- data/lib/ramaze/adapter/fcgi.rb +18 -0
- data/lib/ramaze/adapter/lsws.rb +19 -0
- data/lib/ramaze/adapter/mongrel.rb +21 -0
- data/lib/ramaze/adapter/scgi.rb +18 -0
- data/lib/ramaze/adapter/swiftiplied_mongrel.rb +7 -0
- data/lib/ramaze/adapter/thin.rb +17 -0
- data/lib/ramaze/adapter/webrick.rb +43 -0
- data/lib/ramaze/adapter.rb +97 -0
- data/lib/ramaze/cache/memcached.rb +69 -0
- data/lib/ramaze/cache/memory.rb +6 -0
- data/lib/ramaze/cache/yaml_store.rb +68 -0
- data/lib/ramaze/cache.rb +113 -0
- data/lib/ramaze/contrib/auto_params/get_args.rb +58 -0
- data/lib/ramaze/contrib/auto_params.rb +135 -0
- data/lib/ramaze/contrib/email.rb +84 -0
- data/lib/ramaze/contrib/facebook/facebook.rb +171 -0
- data/lib/ramaze/contrib/facebook.rb +23 -0
- data/lib/ramaze/contrib/file_cache.rb +65 -0
- data/lib/ramaze/contrib/gems.rb +78 -0
- data/lib/ramaze/contrib/gettext/mo.rb +155 -0
- data/lib/ramaze/contrib/gettext/parser.rb +46 -0
- data/lib/ramaze/contrib/gettext/po.rb +109 -0
- data/lib/ramaze/contrib/gettext.rb +113 -0
- data/lib/ramaze/contrib/gzip_filter.rb +69 -0
- data/lib/ramaze/contrib/maruku_uv.rb +59 -0
- data/lib/ramaze/contrib/profiling.rb +36 -0
- data/lib/ramaze/contrib/rest.rb +17 -0
- data/lib/ramaze/contrib/sequel/create_join.rb +25 -0
- data/lib/ramaze/contrib/sequel/fill.rb +12 -0
- data/lib/ramaze/contrib/sequel/form_field.rb +129 -0
- data/lib/ramaze/contrib/sequel/image.rb +198 -0
- data/lib/ramaze/contrib/sequel/relation.rb +82 -0
- data/lib/ramaze/contrib/sequel_cache.rb +92 -0
- data/lib/ramaze/contrib.rb +82 -0
- data/lib/ramaze/controller/error.rb +46 -0
- data/lib/ramaze/controller/main.rb +2 -0
- data/lib/ramaze/controller/resolve.rb +273 -0
- data/lib/ramaze/controller.rb +280 -0
- data/lib/ramaze/current/request.rb +205 -0
- data/lib/ramaze/current/response.rb +39 -0
- data/lib/ramaze/current/session/flash.rb +87 -0
- data/lib/ramaze/current/session/hash.rb +66 -0
- data/lib/ramaze/current/session.rb +181 -0
- data/lib/ramaze/current.rb +110 -0
- data/lib/ramaze/dispatcher/action.rb +48 -0
- data/lib/ramaze/dispatcher/directory.rb +119 -0
- data/lib/ramaze/dispatcher/error.rb +108 -0
- data/lib/ramaze/dispatcher/file.rb +95 -0
- data/lib/ramaze/dispatcher.rb +145 -0
- data/lib/ramaze/error.rb +24 -0
- data/lib/ramaze/gestalt.rb +124 -0
- data/lib/ramaze/helper/aspect.rb +106 -0
- data/lib/ramaze/helper/auth.rb +125 -0
- data/lib/ramaze/helper/cache.rb +140 -0
- data/lib/ramaze/helper/cgi.rb +39 -0
- data/lib/ramaze/helper/flash.rb +59 -0
- data/lib/ramaze/helper/form.rb +281 -0
- data/lib/ramaze/helper/formatting.rb +158 -0
- data/lib/ramaze/helper/gestalt.rb +15 -0
- data/lib/ramaze/helper/gravatar.rb +15 -0
- data/lib/ramaze/helper/httpdigest.rb +59 -0
- data/lib/ramaze/helper/identity.rb +119 -0
- data/lib/ramaze/helper/link.rb +122 -0
- data/lib/ramaze/helper/markaby.rb +31 -0
- data/lib/ramaze/helper/maruku.rb +7 -0
- data/lib/ramaze/helper/nitroform.rb +14 -0
- data/lib/ramaze/helper/pager.rb +366 -0
- data/lib/ramaze/helper/paginate.rb +234 -0
- data/lib/ramaze/helper/partial.rb +105 -0
- data/lib/ramaze/helper/redirect.rb +82 -0
- data/lib/ramaze/helper/rest.rb +43 -0
- data/lib/ramaze/helper/sendfile.rb +16 -0
- data/lib/ramaze/helper/sequel.rb +55 -0
- data/lib/ramaze/helper/simple_captcha.rb +31 -0
- data/lib/ramaze/helper/stack.rb +77 -0
- data/lib/ramaze/helper/tagz.rb +19 -0
- data/lib/ramaze/helper/thread.rb +17 -0
- data/lib/ramaze/helper/ultraviolet.rb +44 -0
- data/lib/ramaze/helper/user.rb +110 -0
- data/lib/ramaze/helper/xhtml.rb +23 -0
- data/lib/ramaze/helper.rb +79 -0
- data/lib/ramaze/log/analogger.rb +40 -0
- data/lib/ramaze/log/growl.rb +38 -0
- data/lib/ramaze/log/hub.rb +41 -0
- data/lib/ramaze/log/informer.rb +128 -0
- data/lib/ramaze/log/knotify.rb +28 -0
- data/lib/ramaze/log/logger.rb +26 -0
- data/lib/ramaze/log/logging.rb +89 -0
- data/lib/ramaze/log/syslog.rb +51 -0
- data/lib/ramaze/log/xosd.rb +92 -0
- data/lib/ramaze/log.rb +27 -0
- data/lib/ramaze/option/dsl.rb +45 -0
- data/lib/ramaze/option/holder.rb +131 -0
- data/lib/ramaze/option/merger.rb +108 -0
- data/lib/ramaze/option.rb +156 -0
- data/lib/ramaze/reloader.rb +186 -0
- data/lib/ramaze/route.rb +97 -0
- data/lib/ramaze/setup.rb +50 -0
- data/lib/ramaze/snippets/array/put_within.rb +44 -0
- data/lib/ramaze/snippets/binding/locals.rb +25 -0
- data/lib/ramaze/snippets/blankslate.rb +7 -0
- data/lib/ramaze/snippets/dictionary.rb +504 -0
- data/lib/ramaze/snippets/divide.rb +20 -0
- data/lib/ramaze/snippets/fiber.rb +63 -0
- data/lib/ramaze/snippets/kernel/constant.rb +41 -0
- data/lib/ramaze/snippets/kernel/pretty_inspect.rb +21 -0
- data/lib/ramaze/snippets/metaid.rb +17 -0
- data/lib/ramaze/snippets/numeric/filesize_format.rb +32 -0
- data/lib/ramaze/snippets/numeric/time.rb +63 -0
- data/lib/ramaze/snippets/object/__dir__.rb +29 -0
- data/lib/ramaze/snippets/object/acquire.rb +40 -0
- data/lib/ramaze/snippets/object/instance_variable_defined.rb +19 -0
- data/lib/ramaze/snippets/object/pretty.rb +16 -0
- data/lib/ramaze/snippets/object/scope.rb +18 -0
- data/lib/ramaze/snippets/object/traits.rb +76 -0
- data/lib/ramaze/snippets/ordered_set.rb +51 -0
- data/lib/ramaze/snippets/proc/locals.rb +19 -0
- data/lib/ramaze/snippets/ramaze/caller_info.rb +30 -0
- data/lib/ramaze/snippets/ramaze/caller_lines.rb +51 -0
- data/lib/ramaze/snippets/ramaze/deprecated.rb +20 -0
- data/lib/ramaze/snippets/ramaze/fiber.rb +24 -0
- data/lib/ramaze/snippets/ramaze/state.rb +86 -0
- data/lib/ramaze/snippets/ramaze/struct.rb +45 -0
- data/lib/ramaze/snippets/string/camel_case.rb +21 -0
- data/lib/ramaze/snippets/string/color.rb +31 -0
- data/lib/ramaze/snippets/string/each.rb +19 -0
- data/lib/ramaze/snippets/string/end_with.rb +20 -0
- data/lib/ramaze/snippets/string/esc.rb +34 -0
- data/lib/ramaze/snippets/string/ord.rb +21 -0
- data/lib/ramaze/snippets/string/snake_case.rb +21 -0
- data/lib/ramaze/snippets/string/start_with.rb +19 -0
- data/lib/ramaze/snippets/string/unindent.rb +28 -0
- data/lib/ramaze/snippets/thread/into.rb +18 -0
- data/lib/ramaze/snippets.rb +22 -0
- data/lib/ramaze/spec/helper/bacon.rb +7 -0
- data/lib/ramaze/spec/helper/browser.rb +88 -0
- data/lib/ramaze/spec/helper/mock_http.rb +63 -0
- data/lib/ramaze/spec/helper/pretty_output.rb +82 -0
- data/lib/ramaze/spec/helper/requester.rb +63 -0
- data/lib/ramaze/spec/helper/simple_http.rb +434 -0
- data/lib/ramaze/spec/helper/snippets.rb +14 -0
- data/lib/ramaze/spec/helper.rb +135 -0
- data/lib/ramaze/spec.rb +1 -0
- data/lib/ramaze/store/default.rb +109 -0
- data/lib/ramaze/template/amrita2.rb +45 -0
- data/lib/ramaze/template/builder.rb +28 -0
- data/lib/ramaze/template/erubis.rb +41 -0
- data/lib/ramaze/template/ezamar/element.rb +169 -0
- data/lib/ramaze/template/ezamar/engine.rb +76 -0
- data/lib/ramaze/template/ezamar/morpher.rb +135 -0
- data/lib/ramaze/template/ezamar/render_partial.rb +31 -0
- data/lib/ramaze/template/ezamar/textpow.syntax +34 -0
- data/lib/ramaze/template/ezamar.rb +42 -0
- data/lib/ramaze/template/haml.rb +37 -0
- data/lib/ramaze/template/liquid.rb +36 -0
- data/lib/ramaze/template/markaby.rb +52 -0
- data/lib/ramaze/template/maruku.rb +34 -0
- data/lib/ramaze/template/nagoro.rb +52 -0
- data/lib/ramaze/template/none.rb +14 -0
- data/lib/ramaze/template/redcloth.rb +25 -0
- data/lib/ramaze/template/remarkably.rb +38 -0
- data/lib/ramaze/template/sass.rb +37 -0
- data/lib/ramaze/template/tagz.rb +79 -0
- data/lib/ramaze/template/tenjin.rb +74 -0
- data/lib/ramaze/template/xslt.rb +100 -0
- data/lib/ramaze/template.rb +87 -0
- data/lib/ramaze/tool/create.rb +48 -0
- data/lib/ramaze/tool/daemonize.rb +37 -0
- data/lib/ramaze/tool/localize.rb +202 -0
- data/lib/ramaze/tool/mime.rb +35 -0
- data/lib/ramaze/tool/mime_types.yaml +615 -0
- data/lib/ramaze/tool/project_creator.rb +110 -0
- data/lib/ramaze/tool/record.rb +6 -0
- data/lib/ramaze/tool.rb +9 -0
- data/lib/ramaze/trinity.rb +16 -0
- data/lib/ramaze/version.rb +6 -0
- data/lib/ramaze.rb +133 -0
- data/lib/vendor/bacon.rb +323 -0
- data/rake_tasks/conf.rake +71 -0
- data/rake_tasks/coverage.rake +46 -0
- data/rake_tasks/gem.rake +74 -0
- data/rake_tasks/git.rake +41 -0
- data/rake_tasks/maintenance.rake +386 -0
- data/rake_tasks/metric.rake +24 -0
- data/rake_tasks/release.rake +76 -0
- data/rake_tasks/spec.rake +61 -0
- data/ramaze.gemspec +773 -0
- data/spec/contrib/auto_params.rb +121 -0
- data/spec/contrib/profiling.rb +29 -0
- data/spec/contrib/sequel/fill.rb +47 -0
- data/spec/examples/caching.rb +19 -0
- data/spec/examples/css.rb +15 -0
- data/spec/examples/element.rb +15 -0
- data/spec/examples/hello.rb +11 -0
- data/spec/examples/linking.rb +18 -0
- data/spec/examples/simple.rb +45 -0
- data/spec/examples/simple_auth.rb +32 -0
- data/spec/examples/templates/template_amrita2.rb +16 -0
- data/spec/examples/templates/template_erubis.rb +23 -0
- data/spec/examples/templates/template_ezamar.rb +23 -0
- data/spec/examples/templates/template_haml.rb +23 -0
- data/spec/examples/templates/template_liquid.rb +29 -0
- data/spec/examples/templates/template_markaby.rb +23 -0
- data/spec/examples/templates/template_redcloth.rb +28 -0
- data/spec/examples/templates/template_remarkably.rb +23 -0
- data/spec/examples/templates/template_tenjin.rb +28 -0
- data/spec/helper.rb +3 -0
- data/spec/ramaze/action/basics.rb +36 -0
- data/spec/ramaze/action/cache.rb +87 -0
- data/spec/ramaze/action/file_cache.rb +70 -0
- data/spec/ramaze/action/layout.rb +190 -0
- data/spec/ramaze/action/render.rb +31 -0
- data/spec/ramaze/action/view/bar.xhtml +1 -0
- data/spec/ramaze/action/view/instancevars/layout.xhtml +1 -0
- data/spec/ramaze/action/view/other_wrapper.xhtml +1 -0
- data/spec/ramaze/action/view/single_wrapper.xhtml +1 -0
- data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
- data/spec/ramaze/adapter/ebb.rb +12 -0
- data/spec/ramaze/adapter/mongrel.rb +12 -0
- data/spec/ramaze/adapter/record.rb +31 -0
- data/spec/ramaze/adapter/webrick.rb +12 -0
- data/spec/ramaze/adapter.rb +49 -0
- data/spec/ramaze/cache.rb +140 -0
- data/spec/ramaze/controller/actionless_templates.rb +32 -0
- data/spec/ramaze/controller/resolve.rb +32 -0
- data/spec/ramaze/controller/subclass.rb +36 -0
- data/spec/ramaze/controller/template_resolving.rb +113 -0
- data/spec/ramaze/controller/view/bar.xhtml +1 -0
- data/spec/ramaze/controller/view/base/another.xhtml +1 -0
- data/spec/ramaze/controller/view/greet.xhtml +1 -0
- data/spec/ramaze/controller/view/list.xhtml +1 -0
- data/spec/ramaze/controller/view/other/greet/other.xhtml +1 -0
- data/spec/ramaze/controller/view/other_wrapper.xhtml +1 -0
- data/spec/ramaze/controller.rb +180 -0
- data/spec/ramaze/current/request.rb +30 -0
- data/spec/ramaze/current/session.rb +97 -0
- data/spec/ramaze/dispatcher/directory.rb +55 -0
- data/spec/ramaze/dispatcher/file.rb +60 -0
- data/spec/ramaze/dispatcher/public/favicon.ico +0 -0
- data/spec/ramaze/dispatcher/public/file name.txt +1 -0
- data/spec/ramaze/dispatcher/public/test_download.css +141 -0
- data/spec/ramaze/dispatcher.rb +31 -0
- data/spec/ramaze/element.rb +107 -0
- data/spec/ramaze/error.rb +94 -0
- data/spec/ramaze/gestalt.rb +131 -0
- data/spec/ramaze/helper/aspect.rb +101 -0
- data/spec/ramaze/helper/auth.rb +66 -0
- data/spec/ramaze/helper/cache.rb +160 -0
- data/spec/ramaze/helper/cgi.rb +43 -0
- data/spec/ramaze/helper/file.rb +18 -0
- data/spec/ramaze/helper/flash.rb +133 -0
- data/spec/ramaze/helper/form.rb +118 -0
- data/spec/ramaze/helper/formatting.rb +54 -0
- data/spec/ramaze/helper/link.rb +124 -0
- data/spec/ramaze/helper/pager.rb +99 -0
- data/spec/ramaze/helper/partial.rb +88 -0
- data/spec/ramaze/helper/redirect.rb +112 -0
- data/spec/ramaze/helper/simple_captcha.rb +22 -0
- data/spec/ramaze/helper/stack.rb +73 -0
- data/spec/ramaze/helper/user.rb +43 -0
- data/spec/ramaze/helper/view/locals.xhtml +1 -0
- data/spec/ramaze/helper/view/loop.xhtml +4 -0
- data/spec/ramaze/helper/view/num.xhtml +1 -0
- data/spec/ramaze/helper/view/partial.xhtml +1 -0
- data/spec/ramaze/helper/view/recursive.xhtml +8 -0
- data/spec/ramaze/helper/view/recursive_local_ivars.xhtml +7 -0
- data/spec/ramaze/helper/view/recursive_locals.xhtml +7 -0
- data/spec/ramaze/helper/view/test_template.xhtml +1 -0
- data/spec/ramaze/localize.rb +89 -0
- data/spec/ramaze/log/informer.rb +72 -0
- data/spec/ramaze/log/syslog.rb +73 -0
- data/spec/ramaze/morpher.rb +111 -0
- data/spec/ramaze/params.rb +157 -0
- data/spec/ramaze/public/error404.xhtml +1 -0
- data/spec/ramaze/public/favicon.ico +0 -0
- data/spec/ramaze/public/ramaze.png +0 -0
- data/spec/ramaze/public/test_download.css +141 -0
- data/spec/ramaze/request/ebb.rb +9 -0
- data/spec/ramaze/request/mongrel.rb +9 -0
- data/spec/ramaze/request/thin.rb +9 -0
- data/spec/ramaze/request/webrick.rb +5 -0
- data/spec/ramaze/request.rb +185 -0
- data/spec/ramaze/rewrite/file.css +1 -0
- data/spec/ramaze/rewrite.rb +36 -0
- data/spec/ramaze/route.rb +131 -0
- data/spec/ramaze/session.rb +94 -0
- data/spec/ramaze/store/default.rb +71 -0
- data/spec/ramaze/struct.rb +47 -0
- data/spec/ramaze/template/amrita2/external.amrita +6 -0
- data/spec/ramaze/template/amrita2/sum.amrita +1 -0
- data/spec/ramaze/template/amrita2.rb +50 -0
- data/spec/ramaze/template/builder/external.rxml +3 -0
- data/spec/ramaze/template/builder.rb +51 -0
- data/spec/ramaze/template/erubis/sum.rhtml +1 -0
- data/spec/ramaze/template/erubis.rb +41 -0
- data/spec/ramaze/template/ezamar/another/long/action.zmr +1 -0
- data/spec/ramaze/template/ezamar/combined.zmr +1 -0
- data/spec/ramaze/template/ezamar/file_only.zmr +1 -0
- data/spec/ramaze/template/ezamar/index.zmr +1 -0
- data/spec/ramaze/template/ezamar/nested.zmr +1 -0
- data/spec/ramaze/template/ezamar/other__index.xhtml +1 -0
- data/spec/ramaze/template/ezamar/some__long__action.zmr +1 -0
- data/spec/ramaze/template/ezamar/sum.zmr +1 -0
- data/spec/ramaze/template/ezamar.rb +63 -0
- data/spec/ramaze/template/haml/index.haml +5 -0
- data/spec/ramaze/template/haml/locals.haml +2 -0
- data/spec/ramaze/template/haml/with_vars.haml +4 -0
- data/spec/ramaze/template/haml.rb +66 -0
- data/spec/ramaze/template/liquid/index.liquid +1 -0
- data/spec/ramaze/template/liquid/products.liquid +45 -0
- data/spec/ramaze/template/liquid.rb +99 -0
- data/spec/ramaze/template/markaby/external.mab +8 -0
- data/spec/ramaze/template/markaby/sum.mab +1 -0
- data/spec/ramaze/template/markaby.rb +61 -0
- data/spec/ramaze/template/nagoro/another/long/action.nag +1 -0
- data/spec/ramaze/template/nagoro/combined.nag +1 -0
- data/spec/ramaze/template/nagoro/file_only.nag +1 -0
- data/spec/ramaze/template/nagoro/index.nag +1 -0
- data/spec/ramaze/template/nagoro/nested.nag +1 -0
- data/spec/ramaze/template/nagoro/some__long__action.nag +1 -0
- data/spec/ramaze/template/nagoro/sum.nag +1 -0
- data/spec/ramaze/template/nagoro.rb +64 -0
- data/spec/ramaze/template/ramaze/external.test +1 -0
- data/spec/ramaze/template/redcloth/external.redcloth +1 -0
- data/spec/ramaze/template/redcloth.rb +38 -0
- data/spec/ramaze/template/remarkably/external.rem +8 -0
- data/spec/ramaze/template/remarkably/sum.rem +1 -0
- data/spec/ramaze/template/remarkably.rb +58 -0
- data/spec/ramaze/template/sass/file.css.sass +5 -0
- data/spec/ramaze/template/sass.rb +69 -0
- data/spec/ramaze/template/tagz/external.tagz +8 -0
- data/spec/ramaze/template/tagz/sum.tagz +1 -0
- data/spec/ramaze/template/tagz.rb +62 -0
- data/spec/ramaze/template/tenjin/external.tenjin +1 -0
- data/spec/ramaze/template/tenjin.rb +47 -0
- data/spec/ramaze/template/xslt/concat_words.xsl +16 -0
- data/spec/ramaze/template/xslt/index.xsl +14 -0
- data/spec/ramaze/template/xslt/products.xsl +32 -0
- data/spec/ramaze/template/xslt/ruby_version.xsl +14 -0
- data/spec/ramaze/template/xslt.rb +90 -0
- data/spec/ramaze/template.rb +128 -0
- data/spec/snippets/array/put_within.rb +33 -0
- data/spec/snippets/binding/locals.rb +9 -0
- data/spec/snippets/divide.rb +19 -0
- data/spec/snippets/kernel/constant.rb +23 -0
- data/spec/snippets/numeric/filesize_format.rb +12 -0
- data/spec/snippets/numeric/time.rb +12 -0
- data/spec/snippets/object/__dir__.rb +8 -0
- data/spec/snippets/object/acquire.rb +71 -0
- data/spec/snippets/ordered_set.rb +63 -0
- data/spec/snippets/ramaze/caller_info.rb +39 -0
- data/spec/snippets/ramaze/caller_lines.rb +30 -0
- data/spec/snippets/string/camel_case.rb +25 -0
- data/spec/snippets/string/color.rb +11 -0
- data/spec/snippets/string/snake_case.rb +24 -0
- data/spec/snippets/string/unindent.rb +43 -0
- data/spec/snippets/thread/into.rb +20 -0
- metadata +823 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
|
6
|
+
# A helper that provides the means to wrap actions of the controller with
|
7
|
+
# other methods.
|
8
|
+
#
|
9
|
+
# For examples please look at the spec/ramaze/helper/aspect.rb
|
10
|
+
#
|
11
|
+
# Like every other helper, you can use it in your controller with:
|
12
|
+
#
|
13
|
+
# helper :aspect
|
14
|
+
|
15
|
+
module Helper::Aspect
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# lazily and smartly inherit copy of aspects trait from parent, or
|
20
|
+
# bootstrap our own
|
21
|
+
def aspects
|
22
|
+
trait[:aspects] ||= (
|
23
|
+
if hash = ancestral_trait[:aspects]
|
24
|
+
{ :before => hash[:before].dup, :after => hash[:after].dup }
|
25
|
+
else
|
26
|
+
{ :before => {}, :after => {} }
|
27
|
+
end
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
# run block before given actions or, if no actions specified, all actions.
|
32
|
+
def before(*meths, &block)
|
33
|
+
return before_all(*meths, &block) if meths.empty?
|
34
|
+
meths.each do |meth|
|
35
|
+
aspects[:before][meth.to_s] = block
|
36
|
+
end
|
37
|
+
end
|
38
|
+
alias pre before
|
39
|
+
|
40
|
+
# Run block before all actions.
|
41
|
+
def before_all(&block)
|
42
|
+
aspects[:before][:all] = block
|
43
|
+
end
|
44
|
+
alias pre_all before_all
|
45
|
+
|
46
|
+
# run block after given actions or, if no actions specified, all actions.
|
47
|
+
def after(*meths, &block)
|
48
|
+
return after_all(*meths, &block) if meths.empty?
|
49
|
+
meths.each do |meth|
|
50
|
+
aspects[:after][meth.to_s] = block
|
51
|
+
end
|
52
|
+
end
|
53
|
+
alias post after
|
54
|
+
|
55
|
+
# Run block after all actions.
|
56
|
+
def after_all(&block)
|
57
|
+
aspects[:after][:all] = block
|
58
|
+
end
|
59
|
+
alias post_all after_all
|
60
|
+
|
61
|
+
# run block before and after given actions, or, if no actions specified.
|
62
|
+
# all actions
|
63
|
+
def wrap(*meths, &block)
|
64
|
+
return wrap_all(*meths, &block) if meths.empty?
|
65
|
+
before(*meths, &block)
|
66
|
+
after(*meths, &block)
|
67
|
+
end
|
68
|
+
|
69
|
+
# run block before and after all actions.
|
70
|
+
def wrap_all(&block)
|
71
|
+
aspects[:before][:all] = block
|
72
|
+
aspects[:after][:all] = block
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class Action
|
77
|
+
|
78
|
+
# overwrites the default Action hook and runs the neccesary blocks in its
|
79
|
+
# scope. before actions are run starting from Ramaze::Controller down the
|
80
|
+
# ancestor chain.
|
81
|
+
def before_process
|
82
|
+
common_aspect(:before)
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
# overwrites the default Action hook and runs the neccesary blocks in its
|
87
|
+
# scope. before actions are run starting from Ramaze::Controller down the
|
88
|
+
# ancestor chain.
|
89
|
+
def after_process
|
90
|
+
common_aspect(:after)
|
91
|
+
end
|
92
|
+
|
93
|
+
def common_aspect(aspect)
|
94
|
+
return unless path
|
95
|
+
|
96
|
+
controller.relevant_ancestors.reverse_each do |controller|
|
97
|
+
next unless aspects = controller.trait[:aspects]
|
98
|
+
|
99
|
+
[ aspects[aspect][name], aspects[aspect][:all] ].compact.map do |block|
|
100
|
+
instance.instance_eval(&block) if block
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
3
|
+
|
4
|
+
require 'digest/sha1'
|
5
|
+
|
6
|
+
module Ramaze
|
7
|
+
|
8
|
+
# A simple way to do authentication. Please have a look at the docs for the
|
9
|
+
# check_auth method for detailed information
|
10
|
+
|
11
|
+
module Helper::Auth
|
12
|
+
Helper::LOOKUP << self
|
13
|
+
|
14
|
+
# add Helper::Aspect and Helper::Stack on inclusion of Helper::Auth
|
15
|
+
|
16
|
+
def self.included(klass)
|
17
|
+
klass.send(:helper, :aspect, :stack)
|
18
|
+
end
|
19
|
+
|
20
|
+
# The default Element to use (if any)
|
21
|
+
|
22
|
+
AUTH_ELEMENT = 'Page'
|
23
|
+
|
24
|
+
# action for login, takes a password
|
25
|
+
# ( ?password=passwort or /login/passwort or via a form )
|
26
|
+
# if no password given, shows a simple form to input it.
|
27
|
+
|
28
|
+
def login
|
29
|
+
username, password = request[:username, :password]
|
30
|
+
if check_auth(username, password)
|
31
|
+
session[:logged_in] = true
|
32
|
+
session[:username] = username
|
33
|
+
inside_stack? ? answer : redirect_referrer
|
34
|
+
else
|
35
|
+
if defined? AUTH_ELEMENT and AUTH_ELEMENT.to_s.split.any?
|
36
|
+
open_element = "<#{AUTH_ELEMENT}>"
|
37
|
+
close_element = "</#{AUTH_ELEMENT}>"
|
38
|
+
end
|
39
|
+
%{
|
40
|
+
#{open_element}
|
41
|
+
<form method="POST" action="#{Rs(:login)}">
|
42
|
+
<ul style="list-style:none;">
|
43
|
+
<li>Username: <input type="text" name="username" /></li>
|
44
|
+
<li>Password: <input type="password" name="password" /></li>
|
45
|
+
<li><input type="submit" /></li>
|
46
|
+
</ul>
|
47
|
+
</form>
|
48
|
+
#{close_element}
|
49
|
+
}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# clear the session and redirect to the index action of the mapping of the
|
54
|
+
# current controller.
|
55
|
+
|
56
|
+
def logout
|
57
|
+
session.clear
|
58
|
+
redirect_referer
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
# call( R(self, :login) ) if not logged in
|
64
|
+
|
65
|
+
def login_required
|
66
|
+
call(Rs(:login)) unless logged_in?
|
67
|
+
end
|
68
|
+
|
69
|
+
# checks if the user is already logged in.
|
70
|
+
# session[:logged_in] is not nil/false
|
71
|
+
|
72
|
+
def logged_in?
|
73
|
+
!!session[:logged_in]
|
74
|
+
end
|
75
|
+
|
76
|
+
# check the authentication (username and password) against the auth_table.
|
77
|
+
#
|
78
|
+
# auth_table is a trait, it may be the name of a method, a Proc or a simple
|
79
|
+
# Hash.
|
80
|
+
# If it is neither of the above it has at least to respond to #[]
|
81
|
+
# which will pass it the username as key and it should answer with the
|
82
|
+
# password as a Digest::SHA1.hexdigest.
|
83
|
+
#
|
84
|
+
# The method and Proc are both called on demand.
|
85
|
+
#
|
86
|
+
# If you want to change the way the password is hashed, change
|
87
|
+
# trait[:auth_hashify]
|
88
|
+
#
|
89
|
+
# The default looks like:
|
90
|
+
# lambda{ |pass| Digest::SHA1.hexdigest(pass.to_s) }
|
91
|
+
#
|
92
|
+
# As with the auth_table, this has to be an object that responds to #[]
|
93
|
+
#
|
94
|
+
# If you want all your controllers to use the same mechanism set the trait
|
95
|
+
# on one of the ancestors, the traits are looked up by #ancestral_trait
|
96
|
+
#
|
97
|
+
# Examples:
|
98
|
+
#
|
99
|
+
# # The method to be called.
|
100
|
+
# trait :auth_table => :auth_table
|
101
|
+
# trait :auth_table => 'auth_table'
|
102
|
+
#
|
103
|
+
# # Lambda that will be called upon demand
|
104
|
+
# trait :auth_table => lambda{ {'manveru' => Digest::SHA1.hexdigest 'password'} }
|
105
|
+
#
|
106
|
+
# # Hash holding the data.
|
107
|
+
# trait :auth_table => {'manveru' => Digest::SHA1.hexdigest('password')}
|
108
|
+
|
109
|
+
def check_auth user, pass
|
110
|
+
return false if (not user or user.empty?) and (not pass or pass.empty?)
|
111
|
+
auth_table = ancestral_trait[:auth_table] ||= {}
|
112
|
+
|
113
|
+
auth_table = method(auth_table) if auth_table.is_a?(Symbol)
|
114
|
+
auth_table = method(auth_table) if auth_table.respond_to?(:to_str)
|
115
|
+
auth_table = auth_table.call if auth_table.respond_to?(:call)
|
116
|
+
|
117
|
+
default_hashify = lambda{ |pass| Digest::SHA1.hexdigest(pass.to_s) }
|
118
|
+
|
119
|
+
hashify = (ancestral_trait[:auth_hashify] ||= default_hashify)
|
120
|
+
password = hashify[pass.to_s]
|
121
|
+
|
122
|
+
auth_table[user.to_s] == password
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,140 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
|
6
|
+
# This helper is providing easy access to a couple of Caches to use for
|
7
|
+
# smaller amounts of data.
|
8
|
+
|
9
|
+
module Helper::Cache
|
10
|
+
C = Ramaze::Cache
|
11
|
+
|
12
|
+
# Create the Cache.value_cache on inclusion if it doesn't exist yet.
|
13
|
+
def self.included(klass)
|
14
|
+
C.add(:value_cache) unless C::CACHES.has_key?(:value_cache)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Example:
|
18
|
+
#
|
19
|
+
# class FooController < Ramaze::Controller
|
20
|
+
# helper :cache
|
21
|
+
# cache :index, :map_of_the_internet
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# cache supports these options
|
25
|
+
# [+:ttl+] time-to-live in seconds
|
26
|
+
# [+:key+] proc that returns a key to store cache with
|
27
|
+
#
|
28
|
+
# Example:
|
29
|
+
#
|
30
|
+
# class CacheController < Ramaze::Controller
|
31
|
+
# helper :cache
|
32
|
+
#
|
33
|
+
# # for each distinct value of request['name']
|
34
|
+
# # cache rendered output of name action for 60 seconds
|
35
|
+
# cache :name, :key => lambda{ request['name'] }, :ttl => 60
|
36
|
+
#
|
37
|
+
# def name
|
38
|
+
# "hi #{request['name']}"
|
39
|
+
# end
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# cache acts as a wrapper for value_cache if no args are given
|
43
|
+
|
44
|
+
def cache *args
|
45
|
+
return value_cache if args.size == 0
|
46
|
+
|
47
|
+
opts = args.last.is_a?(Hash) ? args.pop : {}
|
48
|
+
|
49
|
+
args.compact.each do |arg|
|
50
|
+
actions_cached[arg.to_sym] = opts
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
# use this to cache values in your controller and templates,
|
57
|
+
# for example heavy calculations or time-consuming queries.
|
58
|
+
|
59
|
+
def value_cache
|
60
|
+
C.value_cache
|
61
|
+
end
|
62
|
+
|
63
|
+
# action_cache holds rendered output of actions for which caching is enabled.
|
64
|
+
#
|
65
|
+
# For simple cases:
|
66
|
+
#
|
67
|
+
# class Controller < Ramaze::Controller
|
68
|
+
# map '/path/to'
|
69
|
+
# helper :cache
|
70
|
+
# cache :action
|
71
|
+
#
|
72
|
+
# def action with, params
|
73
|
+
# 'rendered output'
|
74
|
+
# end
|
75
|
+
# end
|
76
|
+
#
|
77
|
+
# { '/path/to/action/with/params' => {
|
78
|
+
# :time => Time.at(rendering),
|
79
|
+
# :type => 'content/type',
|
80
|
+
# :content => 'rendered output'
|
81
|
+
# }
|
82
|
+
# }
|
83
|
+
#
|
84
|
+
# If an additional key is provided:
|
85
|
+
#
|
86
|
+
# class Controller < Ramaze::Controller
|
87
|
+
# map '/path/to'
|
88
|
+
# helper :cache
|
89
|
+
# cache :action, :key => lambda{ 'value of key proc' }
|
90
|
+
#
|
91
|
+
# def action
|
92
|
+
# 'output'
|
93
|
+
# end
|
94
|
+
# end
|
95
|
+
#
|
96
|
+
# { '/path/to/action' => {
|
97
|
+
# 'value of key proc' => {
|
98
|
+
# :time => Time.at(rendering),
|
99
|
+
# :type => 'content/type',
|
100
|
+
# :content => 'output'
|
101
|
+
# }
|
102
|
+
# }
|
103
|
+
# }
|
104
|
+
#
|
105
|
+
# Caches can be invalidated after a certain amount of time
|
106
|
+
# by supplying a :ttl option (in seconds)
|
107
|
+
#
|
108
|
+
# class Controller < Ramaze::Controller
|
109
|
+
# helper :cache
|
110
|
+
# cache :index, :ttl => 60
|
111
|
+
#
|
112
|
+
# def index
|
113
|
+
# Time.now.to_s
|
114
|
+
# end
|
115
|
+
# end
|
116
|
+
#
|
117
|
+
# or by deleting values from action_cache directly
|
118
|
+
#
|
119
|
+
# action_cache.clear
|
120
|
+
# action_cache.delete '/index'
|
121
|
+
# action_cache.delete '/path/to/action'
|
122
|
+
|
123
|
+
def action_cache
|
124
|
+
C.actions
|
125
|
+
end
|
126
|
+
|
127
|
+
# This refers to the class-trait of cached actions, you can
|
128
|
+
# add/remove actions to be cached.
|
129
|
+
#
|
130
|
+
# Example:
|
131
|
+
#
|
132
|
+
# class FooController < Ramaze::Controller
|
133
|
+
# trait :actions_cached => [:index, :map_of_the_internet]
|
134
|
+
# end
|
135
|
+
|
136
|
+
def actions_cached
|
137
|
+
ancestral_trait[:actions_cached]
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
|
6
|
+
# Shortcuts to some CGI methods
|
7
|
+
|
8
|
+
module Helper::CGI
|
9
|
+
|
10
|
+
# shortcut for Rack::Utils.escape
|
11
|
+
def url_encode(*args)
|
12
|
+
Rack::Utils.escape(*args.map{|a| a.to_s })
|
13
|
+
end
|
14
|
+
|
15
|
+
# shortcut for Rack::Utils.unescape
|
16
|
+
def url_decode(*args)
|
17
|
+
Rack::Utils.unescape(*args.map{|a| a.to_s })
|
18
|
+
end
|
19
|
+
|
20
|
+
# shortcut for Rack::Utils.escape_html
|
21
|
+
def html_escape(string)
|
22
|
+
Rack::Utils.escape_html(string)
|
23
|
+
end
|
24
|
+
|
25
|
+
# shortcut for CGI.unescapeHTML
|
26
|
+
def html_unescape(string)
|
27
|
+
::CGI.unescapeHTML(string.to_s)
|
28
|
+
end
|
29
|
+
|
30
|
+
# safely escape all HTML and code
|
31
|
+
def h(string)
|
32
|
+
Rack::Utils.escape_html(string).gsub(/#([{@$]@?)/, '#\1')
|
33
|
+
end
|
34
|
+
|
35
|
+
# one-letter versions help in case like #{h foo.inspect}
|
36
|
+
# ERb/ERuby/Rails compatible
|
37
|
+
alias u url_encode
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
3
|
+
|
4
|
+
module Ramaze
|
5
|
+
|
6
|
+
# The purpose of this class is to provide an easy way of setting/retrieving
|
7
|
+
# from the current flash.
|
8
|
+
#
|
9
|
+
# Flash is a way to keep a temporary pairs of keys and values for the duration
|
10
|
+
# of two requests, the current and following.
|
11
|
+
#
|
12
|
+
# Very vague Example:
|
13
|
+
#
|
14
|
+
# On the first request, for example on registering:
|
15
|
+
#
|
16
|
+
# flash[:error] = "You should reconsider your username, it's taken already"
|
17
|
+
# redirect R(self, :register)
|
18
|
+
#
|
19
|
+
# This is the request from the redirect:
|
20
|
+
#
|
21
|
+
# do_stuff if flash[:error]
|
22
|
+
#
|
23
|
+
# On the request after this, flash[:error] is gone.
|
24
|
+
|
25
|
+
module Helper::Flash
|
26
|
+
trait :flashbox => "<div class='flash' id='flash_%key'>%value</div>"
|
27
|
+
# answers with Session.current.flash
|
28
|
+
|
29
|
+
def flash
|
30
|
+
Session.current.flash
|
31
|
+
end
|
32
|
+
|
33
|
+
# Use in your template to display all flash messages that may be stored.
|
34
|
+
# For example, given you stored:
|
35
|
+
#
|
36
|
+
# flash # => { :error => 'Pleae enter your name'
|
37
|
+
# :info => 'Do you see the fnords?' }
|
38
|
+
#
|
39
|
+
# Then a flashbox would display:
|
40
|
+
#
|
41
|
+
# <div class='flash' id='flash_error'>Please enter your name</div>
|
42
|
+
# <div class='flash' id='flash_info'>Do you see the fnords?</div>
|
43
|
+
#
|
44
|
+
# This is designed to be customized permanently or per usage:
|
45
|
+
#
|
46
|
+
# flashbox("<div class='flash_%key'>%value</div>")
|
47
|
+
#
|
48
|
+
# Where any occurrence of %key and %value will be replaced by the actual
|
49
|
+
# contents of each element of flash
|
50
|
+
|
51
|
+
def flashbox(tag = ancestral_trait[:flashbox])
|
52
|
+
flash.map{|key, *values|
|
53
|
+
values.flatten.map do |value|
|
54
|
+
tag.gsub(/%key/, key.to_s).gsub(/%value/, value.to_s)
|
55
|
+
end
|
56
|
+
}.flatten.join("\n")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|