ramaze 0.3.9.1 → 2008.06
Sign up to get free protection for your applications and to get access to all the features.
- data/{doc/README → README.markdown} +78 -32
- data/Rakefile +53 -50
- 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 +32 -122
- data/cache.yaml +7 -0
- data/doc/AUTHORS +26 -22
- data/doc/CHANGELOG +16720 -3907
- data/doc/INSTALL +77 -19
- data/doc/LEGAL +0 -4
- data/doc/meta/announcement.txt +43 -54
- data/doc/meta/configuration.txt +3 -2
- data/doc/readme_chunks/examples.txt +2 -2
- data/doc/readme_chunks/installing.txt +66 -20
- data/doc/tutorial/todolist.html +338 -520
- data/doc/tutorial/todolist.mkd +36 -2
- data/examples/{auth → app/auth}/auth.rb +0 -0
- data/examples/{auth → app/auth}/template/layout.haml +0 -0
- data/examples/{auth → app/auth}/template/login.haml +0 -0
- data/examples/{blog → app/blog}/README +0 -0
- data/examples/{blog → app/blog}/controller/main.rb +1 -1
- data/examples/{blog → app/blog}/model/entry.rb +1 -1
- data/examples/{blog → app/blog}/public/styles/blog.css +0 -0
- data/examples/{blog → app/blog}/spec/blog.rb +2 -2
- data/examples/{blog → app/blog}/start.rb +0 -0
- data/examples/{blog → app/blog}/view/edit.xhtml +0 -0
- data/examples/{blog → app/blog}/view/index.xhtml +0 -0
- data/examples/{blog → app/blog}/view/layout.xhtml +0 -0
- data/examples/{blog → app/blog}/view/new.xhtml +0 -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/{rammit → app/rammit}/spec/rammit.rb +2 -1
- data/examples/{rammit → app/rammit}/src/controller/main.rb +0 -0
- data/examples/{rammit → app/rammit}/src/controller/page.rb +0 -0
- data/examples/{rammit → app/rammit}/src/model.rb +0 -0
- data/examples/{rammit → app/rammit}/start.rb +0 -0
- data/examples/{rammit → app/rammit}/template/index.xhtml +0 -0
- data/examples/{rammit → app/rammit}/template/page/view.xhtml +0 -0
- data/examples/{rapaste → app/rapaste}/Rakefile +0 -1
- data/examples/{rapaste → app/rapaste}/controller/paste.rb +3 -3
- data/examples/{rapaste → app/rapaste}/model/paste.rb +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/active4d.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/all_hallows_eve.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/amy.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/blackboard.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/brilliance_black.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/brilliance_dull.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/cobalt.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/dawn.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/display.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/eiffel.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/espresso_libre.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/idle.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/iplastic.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/lazy.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/mac_classic.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/magicwb_amiga.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/pastels_on_dark.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/slush_poppies.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/spacecadet.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/sunburst.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/twilight.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/css/zenburnesque.css +0 -0
- data/examples/{rapaste → app/rapaste}/public/js/jquery.js +0 -0
- data/examples/{rapaste → app/rapaste}/spec/rapaste.rb +2 -2
- data/examples/{rapaste → app/rapaste}/start.rb +0 -0
- data/examples/{rapaste → app/rapaste}/view/copy.xhtml +0 -0
- data/examples/{rapaste → app/rapaste}/view/index.xhtml +0 -0
- data/examples/{rapaste → app/rapaste}/view/layout.xhtml +0 -0
- data/examples/{rapaste → app/rapaste}/view/list.xhtml +0 -0
- data/examples/{rapaste → app/rapaste}/view/search.xhtml +0 -0
- data/examples/{rapaste → app/rapaste}/view/view.xhtml +0 -0
- data/examples/{sourceview → app/sourceview}/public/coderay.css +0 -0
- data/examples/{sourceview → app/sourceview}/public/images/file.gif +0 -0
- data/examples/{sourceview → app/sourceview}/public/images/folder.gif +0 -0
- data/examples/{sourceview → app/sourceview}/public/images/tv-collapsable-last.gif +0 -0
- data/examples/{sourceview → app/sourceview}/public/images/tv-collapsable.gif +0 -0
- data/examples/{sourceview → app/sourceview}/public/images/tv-expandable-last.gif +0 -0
- data/examples/{sourceview → app/sourceview}/public/images/tv-expandable.gif +0 -0
- data/examples/{sourceview → app/sourceview}/public/images/tv-item-last.gif +0 -0
- data/examples/{sourceview → app/sourceview}/public/images/tv-item.gif +0 -0
- data/examples/{sourceview → app/sourceview}/public/jquery.js +0 -0
- data/examples/{sourceview → app/sourceview}/public/jquery.treeview.css +0 -0
- data/examples/{sourceview → app/sourceview}/public/jquery.treeview.js +0 -0
- data/examples/{sourceview → app/sourceview}/public/sourceview.js +0 -0
- data/examples/{sourceview → app/sourceview}/sourceview.rb +1 -1
- data/examples/{sourceview → app/sourceview}/template/index.haml +0 -0
- data/examples/{todolist → app/todolist}/README +0 -0
- data/examples/{todolist → app/todolist}/public/favicon.ico +0 -0
- data/examples/{todolist → app/todolist}/public/js/jquery.js +0 -0
- data/examples/{todolist → app/todolist}/public/ramaze.png +0 -0
- data/examples/{todolist → app/todolist}/spec/todolist.rb +2 -2
- data/examples/{todolist → app/todolist}/src/controller/main.rb +0 -0
- data/examples/{todolist → app/todolist}/src/element/page.rb +0 -0
- data/examples/{todolist → app/todolist}/src/model.rb +0 -0
- data/examples/{todolist → app/todolist}/start.rb +0 -0
- data/examples/{todolist → app/todolist}/template/index.xhtml +0 -0
- data/examples/{todolist → app/todolist}/template/new.xhtml +0 -0
- data/examples/{upload → app/upload}/start.rb +0 -0
- data/examples/{upload → app/upload}/view/index.xhtml +0 -0
- data/examples/{whywiki → app/whywiki}/spec/whywiki.rb +3 -3
- data/examples/{whywiki → app/whywiki}/start.rb +0 -0
- data/examples/{whywiki → app/whywiki}/template/edit.xhtml +0 -0
- data/examples/{whywiki → app/whywiki}/template/show.xhtml +0 -0
- data/examples/{wikore → app/wikore}/spec/wikore.rb +2 -2
- data/examples/{wikore → app/wikore}/src/controller.rb +0 -0
- data/examples/{wikore → app/wikore}/src/model.rb +0 -0
- data/examples/{wikore → app/wikore}/start.rb +0 -0
- data/examples/{wikore → app/wikore}/template/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}/mkd/main/2007-07-20_19-21-12.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-23-10.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-45-07.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/main/current.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/markdown/current.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_16-43-46.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_19-43-50.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-01.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-32.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-08.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-54.mkd +0 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/current.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 → app/wiktacular}/spec/wiktacular.rb +4 -5
- data/examples/{wiktacular → app/wiktacular}/src/controller.rb +0 -0
- data/examples/{wiktacular → app/wiktacular}/src/model.rb +0 -0
- data/examples/{wiktacular → app/wiktacular}/start.rb +0 -0
- data/examples/{wiktacular → app/wiktacular}/template/edit.xhtml +0 -0
- data/examples/{wiktacular → app/wiktacular}/template/html_layout.xhtml +0 -0
- data/examples/{wiktacular → app/wiktacular}/template/index.xhtml +0 -0
- data/examples/{wiktacular → app/wiktacular}/template/new.xhtml +0 -0
- data/examples/{element.rb → basic/element.rb} +0 -0
- data/examples/basic/gestalt.rb +27 -0
- data/examples/{hello.rb → basic/hello.rb} +0 -0
- data/examples/{layout.rb → basic/layout.rb} +0 -0
- data/examples/{linking.rb → basic/linking.rb} +0 -0
- data/examples/{simple.rb → basic/simple.rb} +3 -3
- data/examples/{caching.rb → helpers/cache.rb} +0 -0
- data/examples/helpers/form_with_sequel.rb +24 -0
- data/examples/helpers/httpdigest.rb +50 -0
- data/examples/{identity.rb → helpers/identity.rb} +0 -0
- data/examples/{nitro_form.rb → helpers/nitro_form.rb} +0 -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/{css.rb → misc/css.rb} +0 -0
- data/examples/{facebook.rb → misc/facebook.rb} +0 -0
- data/examples/{memleak_detector.rb → misc/memleak_detector.rb} +0 -0
- data/examples/misc/nagoro_element.rb +43 -0
- data/examples/{ramaise.rb → misc/ramaise.rb} +0 -0
- data/examples/misc/rapp.rb +45 -0
- data/examples/misc/sequel_scaffolding.rb +34 -0
- data/examples/{simple_auth.rb → misc/simple_auth.rb} +0 -0
- data/examples/templates/template_amrita2.rb +1 -1
- data/examples/templates/template_erubis.rb +2 -2
- data/examples/templates/template_ezamar.rb +1 -1
- data/examples/templates/template_haml.rb +2 -2
- data/examples/templates/template_liquid.rb +2 -2
- data/examples/templates/template_markaby.rb +1 -1
- data/examples/templates/template_nagoro.rb +1 -1
- data/examples/templates/template_redcloth.rb +2 -2
- data/examples/templates/template_remarkably.rb +1 -1
- data/examples/templates/template_tenjin.rb +5 -9
- data/examples/templates/template_xslt.rb +1 -1
- data/lib/proto/public/dispatch.fcgi +0 -0
- data/lib/proto/public/js/jquery.js +750 -577
- data/lib/proto/spec/main.rb +1 -1
- data/lib/proto/start.ru +8 -0
- data/lib/proto/view/page.xhtml +13 -1
- data/lib/ramaze.rb +32 -15
- data/lib/ramaze/action.rb +18 -1
- data/lib/ramaze/action/render.rb +45 -17
- data/lib/ramaze/adapter.rb +8 -7
- data/lib/ramaze/adapter/base.rb +79 -13
- data/lib/ramaze/adapter/cgi.rb +5 -10
- data/lib/ramaze/adapter/ebb.rb +6 -20
- data/lib/ramaze/adapter/fake.rb +12 -0
- data/lib/ramaze/adapter/fcgi.rb +5 -11
- data/lib/ramaze/adapter/lsws.rb +5 -9
- data/lib/ramaze/adapter/mongrel.rb +5 -9
- data/lib/ramaze/adapter/scgi.rb +4 -8
- data/lib/ramaze/adapter/thin.rb +6 -11
- data/lib/ramaze/adapter/webrick.rb +13 -22
- data/lib/ramaze/cache.rb +36 -10
- data/lib/ramaze/cache/memcached.rb +3 -2
- data/lib/ramaze/contrib.rb +1 -1
- data/lib/ramaze/contrib/email.rb +1 -1
- data/lib/ramaze/contrib/file_cache.rb +1 -1
- data/lib/ramaze/contrib/gems.rb +79 -0
- data/lib/ramaze/contrib/gettext/po.rb +0 -0
- data/lib/ramaze/contrib/profiling.rb +1 -1
- data/lib/ramaze/contrib/rest.rb +14 -0
- data/lib/ramaze/controller.rb +45 -12
- data/lib/ramaze/controller/error.rb +4 -4
- data/lib/ramaze/controller/resolve.rb +61 -42
- data/lib/ramaze/current.rb +2 -2
- data/lib/ramaze/current/request.rb +25 -2
- data/lib/ramaze/current/response.rb +8 -0
- data/lib/ramaze/current/session.rb +64 -36
- data/lib/ramaze/current/session/flash.rb +14 -2
- data/lib/ramaze/current/session/hash.rb +3 -2
- data/lib/ramaze/dispatcher.rb +25 -12
- data/lib/ramaze/dispatcher/action.rb +12 -3
- data/lib/ramaze/dispatcher/directory.rb +4 -1
- data/lib/ramaze/dispatcher/error.rb +3 -3
- data/lib/ramaze/dispatcher/file.rb +11 -3
- data/lib/ramaze/gestalt.rb +1 -1
- data/lib/ramaze/helper.rb +17 -21
- data/lib/ramaze/helper/aspect.rb +20 -14
- data/lib/ramaze/helper/auth.rb +1 -1
- data/lib/ramaze/helper/cache.rb +3 -6
- data/lib/ramaze/helper/cgi.rb +6 -2
- data/lib/ramaze/helper/flash.rb +7 -7
- data/lib/ramaze/helper/form.rb +281 -0
- data/lib/ramaze/helper/formatting.rb +76 -0
- data/lib/ramaze/helper/gestalt.rb +15 -0
- data/lib/ramaze/helper/gravatar.rb +15 -0
- data/lib/ramaze/helper/httpdigest.rb +48 -0
- data/lib/ramaze/helper/identity.rb +87 -62
- data/lib/ramaze/helper/partial.rb +11 -2
- data/lib/ramaze/helper/redirect.rb +12 -3
- data/lib/ramaze/helper/rest.rb +43 -0
- data/lib/ramaze/helper/sendfile.rb +1 -3
- data/lib/ramaze/helper/sequel.rb +3 -0
- data/lib/ramaze/helper/simple_captcha.rb +31 -0
- data/lib/ramaze/helper/stack.rb +14 -5
- data/lib/ramaze/helper/user.rb +86 -34
- data/lib/ramaze/helper/xhtml.rb +23 -0
- data/lib/ramaze/log.rb +1 -2
- data/lib/ramaze/log/analogger.rb +24 -19
- data/lib/ramaze/log/growl.rb +24 -19
- data/lib/ramaze/log/hub.rb +25 -22
- data/lib/ramaze/log/informer.rb +104 -99
- data/lib/ramaze/log/knotify.rb +17 -12
- data/lib/ramaze/log/logger.rb +14 -8
- data/lib/ramaze/log/logging.rb +63 -60
- data/lib/ramaze/log/syslog.rb +24 -19
- data/lib/ramaze/log/xosd.rb +77 -71
- data/lib/ramaze/option.rb +153 -0
- data/lib/ramaze/option/dsl.rb +45 -0
- data/lib/ramaze/option/holder.rb +153 -0
- data/lib/ramaze/option/merger.rb +108 -0
- data/lib/ramaze/route.rb +15 -2
- data/lib/ramaze/setup.rb +50 -0
- data/lib/ramaze/snippets/binding/locals.rb +1 -1
- data/lib/ramaze/snippets/dictionary.rb +3 -3
- data/lib/ramaze/snippets/divide.rb +7 -7
- data/lib/ramaze/snippets/kernel/__dir__.rb +1 -1
- data/lib/ramaze/snippets/kernel/acquire.rb +0 -5
- data/lib/ramaze/snippets/metaid.rb +1 -1
- data/lib/ramaze/snippets/numeric/filesize_format.rb +11 -5
- data/lib/ramaze/snippets/object/instance_variable_defined.rb +8 -0
- data/lib/ramaze/snippets/object/scope.rb +1 -1
- data/lib/ramaze/snippets/object/thread_accessor.rb +1 -1
- data/lib/ramaze/snippets/ordered_set.rb +5 -1
- data/lib/ramaze/snippets/ramaze/deprecated.rb +7 -0
- data/lib/ramaze/snippets/ramaze/thread_accessor.rb +15 -1
- data/lib/ramaze/snippets/string/esc.rb +2 -2
- data/lib/ramaze/snippets/string/start_with.rb +1 -0
- data/lib/ramaze/snippets/string/unindent.rb +9 -1
- data/lib/ramaze/snippets/struct/values_at.rb +17 -1
- data/lib/ramaze/snippets/thread/into.rb +1 -1
- data/lib/ramaze/sourcereload.rb +83 -76
- data/lib/ramaze/spec/helper.rb +39 -26
- data/lib/ramaze/spec/helper/bacon.rb +5 -5
- data/lib/ramaze/spec/helper/mock_http.rb +1 -7
- data/lib/ramaze/spec/helper/pretty_output.rb +10 -2
- data/lib/ramaze/spec/helper/requester.rb +14 -0
- data/lib/ramaze/template.rb +6 -3
- data/lib/ramaze/template/amrita2.rb +1 -0
- data/lib/ramaze/template/erubis.rb +7 -1
- data/lib/ramaze/template/ezamar/render_partial.rb +1 -1
- data/lib/ramaze/template/nagoro.rb +1 -0
- data/lib/ramaze/template/redcloth.rb +1 -0
- data/lib/ramaze/template/tagz.rb +8 -8
- data/lib/ramaze/template/tenjin.rb +42 -2
- data/lib/ramaze/template/xslt.rb +4 -0
- data/lib/ramaze/tool/daemonize.rb +37 -0
- data/lib/ramaze/tool/localize.rb +142 -106
- data/lib/ramaze/version.rb +2 -10
- data/rake_tasks/conf.rake +11 -13
- data/rake_tasks/gem.rake +59 -37
- data/rake_tasks/git.rake +41 -0
- data/rake_tasks/maintenance.rake +263 -299
- data/rake_tasks/release.rake +63 -0
- data/rake_tasks/spec.rake +1 -1
- data/ramaze.gemspec +731 -0
- data/spec/contrib/profiling.rb +5 -2
- data/spec/examples/caching.rb +1 -1
- data/spec/examples/css.rb +1 -1
- data/spec/examples/element.rb +1 -1
- data/spec/examples/hello.rb +1 -1
- data/spec/examples/linking.rb +1 -1
- data/spec/examples/simple.rb +1 -1
- data/spec/examples/simple_auth.rb +1 -1
- data/spec/ramaze/action/cache.rb +58 -14
- data/spec/ramaze/action/file_cache.rb +48 -0
- data/spec/ramaze/action/layout.rb +2 -2
- data/spec/ramaze/action/render.rb +1 -2
- 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 → view}/sub/sub_wrapper.xhtml +0 -0
- data/spec/ramaze/adapter.rb +29 -2
- data/spec/ramaze/adapter/ebb.rb +12 -0
- data/spec/ramaze/cache.rb +82 -15
- data/spec/ramaze/controller.rb +6 -3
- data/spec/ramaze/controller/actionless_templates.rb +2 -2
- data/spec/ramaze/controller/resolve.rb +1 -1
- data/spec/ramaze/controller/template_resolving.rb +4 -6
- 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/error.rb +1 -1
- data/spec/ramaze/helper/aspect.rb +4 -4
- data/spec/ramaze/helper/cache.rb +56 -39
- data/spec/ramaze/helper/flash.rb +14 -1
- data/spec/ramaze/helper/form.rb +118 -0
- data/spec/ramaze/helper/formatting.rb +21 -0
- data/spec/ramaze/helper/link.rb +2 -2
- data/spec/ramaze/helper/pager.rb +2 -2
- data/spec/ramaze/helper/partial.rb +13 -1
- data/spec/ramaze/helper/simple_captcha.rb +22 -0
- data/spec/ramaze/helper/user.rb +7 -10
- 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/localize.rb +22 -0
- data/spec/ramaze/log/informer.rb +10 -10
- data/spec/ramaze/log/syslog.rb +1 -1
- data/spec/ramaze/request.rb +13 -1
- data/spec/ramaze/request/ebb.rb +9 -0
- data/spec/ramaze/rewrite.rb +36 -0
- data/spec/ramaze/rewrite/file.css +1 -0
- data/spec/ramaze/route.rb +1 -0
- data/spec/ramaze/template.rb +5 -5
- data/spec/ramaze/template/amrita2.rb +1 -1
- data/spec/ramaze/template/builder.rb +18 -22
- data/spec/ramaze/template/erubis.rb +1 -1
- data/spec/ramaze/template/ezamar.rb +1 -1
- data/spec/ramaze/template/haml.rb +2 -2
- data/spec/ramaze/template/liquid.rb +1 -1
- data/spec/ramaze/template/markaby.rb +1 -1
- data/spec/ramaze/template/nagoro.rb +1 -1
- data/spec/ramaze/template/redcloth.rb +1 -1
- data/spec/ramaze/template/remarkably.rb +1 -1
- data/spec/ramaze/template/sass.rb +1 -1
- data/spec/ramaze/template/tagz.rb +1 -1
- data/spec/ramaze/template/tenjin.rb +4 -6
- data/spec/ramaze/template/xslt.rb +1 -1
- data/spec/snippets/string/unindent.rb +6 -0
- data/spec/snippets/struct/values_at.rb +8 -0
- metadata +522 -487
- data/doc/ProjectInfo +0 -53
- data/doc/migrate/1110_to_1111.txt +0 -131
- data/lib/ramaze/contrib/route.rb +0 -22
- data/lib/ramaze/global.rb +0 -116
- data/lib/ramaze/global/dsl.rb +0 -39
- data/lib/ramaze/global/globalstruct.rb +0 -147
- data/lib/ramaze/helper/inform.rb +0 -40
- data/lib/ramaze/inform.rb +0 -4
- data/lib/ramaze/snippets/kernel/aquire.rb +0 -1
- data/lib/vendor/bacon.rb +0 -323
- data/rake_tasks/darcs.rake +0 -5
- data/spec/contrib/route.rb +0 -36
data/lib/ramaze/controller.rb
CHANGED
@@ -50,7 +50,7 @@ module Ramaze
|
|
50
50
|
Log.dev("found Controllers: #{Global.controllers.inspect}")
|
51
51
|
|
52
52
|
check_path("Public root: '%s' doesn't exist", Global.public_root)
|
53
|
-
check_path("
|
53
|
+
check_path("View root: '%s' doesn't exist", Global.view_root)
|
54
54
|
|
55
55
|
require 'ramaze/controller/main' if Global.mapping.empty?
|
56
56
|
|
@@ -72,8 +72,8 @@ module Ramaze
|
|
72
72
|
def mapping
|
73
73
|
global_mapping = Global.mapping.invert[self]
|
74
74
|
return global_mapping if global_mapping
|
75
|
-
if ancestral_trait[:automap]
|
76
|
-
name = self.to_s.gsub('Controller', '').gsub('::', '/')
|
75
|
+
if ancestral_trait[:automap] && self.to_s !~ /#<Class:/
|
76
|
+
name = self.to_s.gsub('Controller', '').gsub('::', '/').clone
|
77
77
|
name == 'Main' ? '/' : "/#{name.snake_case}"
|
78
78
|
end
|
79
79
|
end
|
@@ -126,25 +126,43 @@ module Ramaze
|
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
129
|
+
# Deny layout for passed names of actions.
|
130
|
+
# Name should be name of the method or template without extension, as
|
131
|
+
# String or Symbol
|
132
|
+
#
|
133
|
+
# Usage:
|
134
|
+
# class MainController < Ramaze::Controller
|
135
|
+
# deny_layout :atom
|
136
|
+
#
|
137
|
+
# def atom
|
138
|
+
# "I won't have layout"
|
139
|
+
# end
|
140
|
+
# end
|
141
|
+
|
129
142
|
def deny_layout(*actions)
|
130
143
|
actions.each do |action|
|
131
144
|
layout[:deny] << action.to_s
|
132
145
|
end
|
133
146
|
end
|
134
147
|
|
135
|
-
# Define a
|
148
|
+
# Define a view_root for Controller, returns the current view_root
|
136
149
|
# if no argument is given.
|
137
150
|
# Runs every given path through Controller::check_path
|
138
151
|
|
139
|
-
def
|
152
|
+
def view_root *args
|
140
153
|
if args.empty?
|
141
|
-
@
|
154
|
+
@view_root
|
142
155
|
else
|
143
|
-
check_path("#{self}.
|
144
|
-
@
|
156
|
+
check_path("#{self}.view_root: '%s' doesn't exist", *args)
|
157
|
+
@view_root = args.flatten
|
145
158
|
end
|
146
159
|
end
|
147
160
|
|
161
|
+
def template_root(*args)
|
162
|
+
Ramaze.deprecated("Controller::template_root", "Controller::view_root")
|
163
|
+
view_root(*args)
|
164
|
+
end
|
165
|
+
|
148
166
|
# This is used for template rerouting, takes action, optionally a
|
149
167
|
# controller and action to route to.
|
150
168
|
#
|
@@ -152,8 +170,8 @@ module Ramaze
|
|
152
170
|
# class MainController
|
153
171
|
# template :index, OtherController, :list
|
154
172
|
# template :foo, :bar
|
155
|
-
# template :bar, :file => '/absolute/path'
|
156
|
-
# template :baz, :file => 'relative/path'
|
173
|
+
# template :bar, :file => '/absolute/path'
|
174
|
+
# template :baz, :file => 'relative/path'
|
157
175
|
# template :abc, :controller => OtherController
|
158
176
|
# template :xyz, :controller => OtherController, :action => 'list'
|
159
177
|
#
|
@@ -193,7 +211,7 @@ module Ramaze
|
|
193
211
|
if file
|
194
212
|
file = file.to_s
|
195
213
|
unless Pathname(file).absolute?
|
196
|
-
root = [
|
214
|
+
root = [view_root || Global.view_root].flatten.first
|
197
215
|
file = File.join(root, file)
|
198
216
|
end
|
199
217
|
info[:file] = file
|
@@ -207,10 +225,19 @@ module Ramaze
|
|
207
225
|
else
|
208
226
|
controller, action, *ignored = argv
|
209
227
|
controller, action = self, controller unless action
|
210
|
-
trait "#{this}_template" => {:controller => controller, :action => action}
|
228
|
+
trait "#{this}_template" => {:controller => controller, :action => action}
|
211
229
|
end
|
212
230
|
end
|
213
231
|
|
232
|
+
# This is a method to specify the templating engine for your controller.
|
233
|
+
# It basically just is sugar for:
|
234
|
+
# trait :engine => Haml
|
235
|
+
#
|
236
|
+
# Usage:
|
237
|
+
# class MainController < Ramaze::Controller
|
238
|
+
# engine :Haml
|
239
|
+
# end
|
240
|
+
|
214
241
|
def engine(name)
|
215
242
|
name = Template.const_get(name)
|
216
243
|
rescue NameError => ex
|
@@ -235,6 +262,12 @@ module Ramaze
|
|
235
262
|
Thread.current[:controller] = action.controller
|
236
263
|
action.render
|
237
264
|
end
|
265
|
+
|
266
|
+
def relevant_ancestors(parent = Ramaze::Controller)
|
267
|
+
ancestors.select do |anc|
|
268
|
+
anc.ancestors.include?(parent)
|
269
|
+
end
|
270
|
+
end
|
238
271
|
end
|
239
272
|
|
240
273
|
private
|
@@ -26,18 +26,18 @@ module Ramaze
|
|
26
26
|
end
|
27
27
|
|
28
28
|
backtrace_size = Global.backtrace_size
|
29
|
-
@backtrace = error.backtrace[0..20].map
|
29
|
+
@backtrace = error.backtrace[0..20].map{|line|
|
30
30
|
file, lineno, meth = *Ramaze.parse_backtrace(line)
|
31
31
|
lines = Ramaze.caller_lines(file, lineno, backtrace_size)
|
32
32
|
|
33
33
|
[ lines, lines.object_id.abs, file, lineno, meth ]
|
34
|
-
|
34
|
+
}
|
35
35
|
|
36
36
|
# for backwards-compat with old error.zmr
|
37
37
|
@colors = [255] * @backtrace.size
|
38
38
|
|
39
|
-
@title =
|
40
|
-
@editor =
|
39
|
+
@title = h(title)
|
40
|
+
@editor = ENV['EDITOR'] || 'vim'
|
41
41
|
title
|
42
42
|
rescue Object => ex
|
43
43
|
Log.error(ex)
|
@@ -3,7 +3,10 @@
|
|
3
3
|
|
4
4
|
module Ramaze
|
5
5
|
class Controller
|
6
|
-
|
6
|
+
# TODO:
|
7
|
+
# * fix caching, see todos below
|
8
|
+
# FILTER = [ :cached, :default ] unless defined?(FILTER)
|
9
|
+
FILTER = [ :default ] unless defined?(FILTER)
|
7
10
|
|
8
11
|
class << self
|
9
12
|
|
@@ -54,14 +57,21 @@ module Ramaze
|
|
54
57
|
|
55
58
|
raise_no_controller(path) if controllers.empty? or mapping.empty?
|
56
59
|
|
57
|
-
|
60
|
+
# TODO:
|
61
|
+
# * following code is dangerous (DoS):
|
62
|
+
# patterns = Cache.patterns[path] ||= pattern_for(path)
|
63
|
+
|
58
64
|
first_controller = nil
|
59
65
|
|
60
|
-
|
66
|
+
# Look through the possible ways of interpreting the path until we find
|
67
|
+
# one that matches an existing controller action.
|
68
|
+
patterns_for(path) do |controller, method, params|
|
61
69
|
if controller = mapping[controller]
|
62
70
|
first_controller ||= controller
|
63
71
|
|
64
72
|
action = controller.resolve_action(method, *params)
|
73
|
+
next unless action
|
74
|
+
|
65
75
|
template = action.template
|
66
76
|
|
67
77
|
valid_action =
|
@@ -72,8 +82,10 @@ module Ramaze
|
|
72
82
|
end
|
73
83
|
|
74
84
|
if valid_action
|
75
|
-
|
76
|
-
|
85
|
+
# TODO:
|
86
|
+
# * dangerous as well
|
87
|
+
# Cache.resolved[path] = action
|
88
|
+
return action
|
77
89
|
end
|
78
90
|
end
|
79
91
|
end
|
@@ -106,11 +118,14 @@ module Ramaze
|
|
106
118
|
template ||= resolve_template(path)
|
107
119
|
end
|
108
120
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
121
|
+
action =
|
122
|
+
Action.create :path => path,
|
123
|
+
:method => method,
|
124
|
+
:params => params,
|
125
|
+
:template => template,
|
126
|
+
:controller => self
|
127
|
+
return false unless action.valid_rest?
|
128
|
+
action
|
114
129
|
end
|
115
130
|
|
116
131
|
# Search the #template_paths for a fitting template for path.
|
@@ -128,14 +143,14 @@ module Ramaze
|
|
128
143
|
end
|
129
144
|
|
130
145
|
# Composes an array with the template-paths to look up in the right order.
|
131
|
-
# Usually this is composed of Global.
|
146
|
+
# Usually this is composed of Global.view_root and the mapping of the
|
132
147
|
# controller.
|
133
148
|
|
134
149
|
def template_paths
|
135
|
-
if paths =
|
150
|
+
if paths = view_root
|
136
151
|
paths
|
137
152
|
else
|
138
|
-
|
153
|
+
view_root(Global.view_root / Global.mapping.invert[self])
|
139
154
|
end
|
140
155
|
end
|
141
156
|
|
@@ -151,15 +166,15 @@ module Ramaze
|
|
151
166
|
return nil, []
|
152
167
|
end
|
153
168
|
|
169
|
+
# List or create a list of action methods to be cached
|
170
|
+
|
154
171
|
def cached_action_methods
|
155
172
|
Cache.action_methods[self] ||= action_methods
|
156
173
|
end
|
157
174
|
|
158
175
|
# methodnames that may be used for current controller.
|
159
176
|
def action_methods
|
160
|
-
ancs =
|
161
|
-
ancestor <= Ramaze::Controller
|
162
|
-
} + Helper::LOOKUP.to_a
|
177
|
+
ancs = relevant_ancestors + Helper::LOOKUP.to_a
|
163
178
|
|
164
179
|
ancs.reverse.inject [] do |meths, anc|
|
165
180
|
meths +
|
@@ -168,34 +183,33 @@ module Ramaze
|
|
168
183
|
end
|
169
184
|
end
|
170
185
|
|
171
|
-
#
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
186
|
+
# Iterator that yields potential ways in which a given path could be mapped
|
187
|
+
# to controller, action and params. It produces them in strict order, with
|
188
|
+
# longest controller path favoured, then longest action path.
|
189
|
+
|
190
|
+
def patterns_for path
|
191
|
+
# Split into fragments, and remove empty ones (which split may have output).
|
192
|
+
# The to_s is vital as sometimes we are passed an array.
|
193
|
+
fragments = path.to_s.split '/'
|
194
|
+
fragments.delete ''
|
195
|
+
|
196
|
+
# Work through all the possible splits of controller and 'the rest' (action
|
197
|
+
# + params) starting with longest possible controller.
|
198
|
+
fragments.length.downto(0) do |ca_split|
|
199
|
+
controller = '/' + fragments[0...ca_split].join('/')
|
200
|
+
|
201
|
+
# Work on the remaining portion, generating all the action/params splits.
|
202
|
+
fragments.length.downto(ca_split) do |ap_split|
|
203
|
+
action = fragments[ca_split...ap_split].join '__'
|
204
|
+
params = fragments[ap_split..-1]
|
205
|
+
if action.empty?
|
206
|
+
yield controller, 'index', params
|
207
|
+
else
|
208
|
+
yield controller, "#{action}__index", params
|
209
|
+
yield controller, action, params
|
210
|
+
end
|
195
211
|
end
|
196
212
|
end
|
197
|
-
|
198
|
-
patterns.reverse!
|
199
213
|
end
|
200
214
|
|
201
215
|
# Uses custom defined engines and all available engines and throws it
|
@@ -213,6 +227,11 @@ module Ramaze
|
|
213
227
|
all_extensions
|
214
228
|
end
|
215
229
|
|
230
|
+
# Raises Ramaze::Error::NoFilter
|
231
|
+
# TODO:
|
232
|
+
# * is this called at all for anybody?
|
233
|
+
# I think everybody does have filters.
|
234
|
+
|
216
235
|
def raise_no_filter(path)
|
217
236
|
raise Ramaze::Error::NoFilter, "No Filter found for `#{path}'"
|
218
237
|
end
|
data/lib/ramaze/current.rb
CHANGED
@@ -44,7 +44,7 @@ module Ramaze
|
|
44
44
|
begin
|
45
45
|
before.call
|
46
46
|
rescue Object => e
|
47
|
-
Ramaze::Log.error e
|
47
|
+
Ramaze::Log.error e
|
48
48
|
raise
|
49
49
|
end
|
50
50
|
end
|
@@ -60,7 +60,7 @@ module Ramaze
|
|
60
60
|
begin
|
61
61
|
after.call
|
62
62
|
rescue Object => e
|
63
|
-
Ramaze::Log.error e
|
63
|
+
Ramaze::Log.error e
|
64
64
|
raise
|
65
65
|
end
|
66
66
|
end
|
@@ -107,7 +107,14 @@ module Ramaze
|
|
107
107
|
def params
|
108
108
|
return {} if put?
|
109
109
|
return @ramaze_params if @ramaze_params
|
110
|
-
|
110
|
+
|
111
|
+
begin
|
112
|
+
@rack_params ||= rack_params
|
113
|
+
rescue EOFError => ex
|
114
|
+
@rack_params = {}
|
115
|
+
Log.error(ex)
|
116
|
+
end
|
117
|
+
|
111
118
|
@ramaze_params = {}
|
112
119
|
|
113
120
|
@rack_params.each do |key, value|
|
@@ -122,7 +129,13 @@ module Ramaze
|
|
122
129
|
if i + 1 >= keys.size
|
123
130
|
ref[k] = value
|
124
131
|
else
|
125
|
-
|
132
|
+
# in case the value is a string we cannot let it be ref next
|
133
|
+
# time, so throw it away
|
134
|
+
if ref[k].is_a?(String)
|
135
|
+
ref = ref[k] = {}
|
136
|
+
else
|
137
|
+
ref = ref[k] ||= {}
|
138
|
+
end
|
126
139
|
end
|
127
140
|
end
|
128
141
|
else
|
@@ -177,5 +190,15 @@ module Ramaze
|
|
177
190
|
keys = keys.map{|k| k.to_s }
|
178
191
|
params.reject{|k,v| not keys.include?(k) }
|
179
192
|
end
|
193
|
+
|
194
|
+
def domain(path = '/')
|
195
|
+
scheme = env['rack.url_scheme'] || 'http'
|
196
|
+
host = env['HTTP_HOST']
|
197
|
+
URI("#{scheme}://#{host}#{path}")
|
198
|
+
end
|
199
|
+
|
200
|
+
def locales
|
201
|
+
env['HTTP_ACCEPT_LANGUAGE'].to_s.split(/(?:,|;q=[\d.,]+)/)
|
202
|
+
end
|
180
203
|
end
|
181
204
|
end
|
@@ -4,9 +4,17 @@
|
|
4
4
|
module Ramaze
|
5
5
|
class Response < Rack::Response
|
6
6
|
class << self
|
7
|
+
# Alias for Current::response
|
7
8
|
def current() Current.response end
|
8
9
|
end
|
9
10
|
|
11
|
+
def initialize(body = [], status = 200, header = {}, &block)
|
12
|
+
header['Content-Type'] ||= Global.content_type
|
13
|
+
header['Accept-Charset'] = Global.accept_charset if Global.accept_charset
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
# Build/replace this responses data
|
10
18
|
def build(body = body, status = status, header = header)
|
11
19
|
header.each do |key, value|
|
12
20
|
self[key] = value
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
2
|
# All files in this distribution are subject to the terms of the Ruby license.
|
3
3
|
|
4
|
-
|
5
|
-
require 'digest/sha1'
|
6
|
-
else
|
4
|
+
begin
|
7
5
|
require 'digest/sha2'
|
6
|
+
rescue LoadError
|
7
|
+
require 'digest/sha1'
|
8
8
|
end
|
9
9
|
|
10
10
|
require 'ramaze/current/session/flash'
|
@@ -28,6 +28,10 @@ module Ramaze
|
|
28
28
|
|
29
29
|
attr_accessor :flash
|
30
30
|
|
31
|
+
# Flag whether or not to drop this session on the floor
|
32
|
+
|
33
|
+
attr_accessor :dropped
|
34
|
+
|
31
35
|
# secret salt for client-side session data
|
32
36
|
|
33
37
|
trait :secret => 'change_me_please_123'
|
@@ -46,19 +50,42 @@ module Ramaze
|
|
46
50
|
|
47
51
|
# Holds the default cookie used for sessions
|
48
52
|
|
49
|
-
COOKIE = { :path => '/' }
|
53
|
+
COOKIE = { :path => '/' } unless defined?(COOKIE)
|
50
54
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
+
# Shortcut for Current.session
|
56
|
+
def self.current
|
57
|
+
Current.session
|
58
|
+
end
|
55
59
|
|
56
|
-
|
57
|
-
|
60
|
+
# called from Ramaze::startup and adds Cache.sessions if cookies are
|
61
|
+
# enabled
|
58
62
|
|
59
|
-
|
60
|
-
|
61
|
-
|
63
|
+
def self.startup(options = {})
|
64
|
+
Cache.add(:sessions) if Global.sessions
|
65
|
+
end
|
66
|
+
|
67
|
+
# retrieve a specific session given a session id
|
68
|
+
|
69
|
+
def self.[](sess_id)
|
70
|
+
Session.new(sess_id)
|
71
|
+
end
|
72
|
+
|
73
|
+
# generate a random (and hopefully unique) id for the current session.
|
74
|
+
#
|
75
|
+
# It consists of the current time, the current request, the current PID of
|
76
|
+
# ruby and object_id of this instance.
|
77
|
+
#
|
78
|
+
# All this is joined by some calls to Kernel#rand and returned as a
|
79
|
+
# Digest::SHA256::hexdigest
|
80
|
+
|
81
|
+
def self.random_key
|
82
|
+
h = [
|
83
|
+
Time.now.to_f.to_s, rand,
|
84
|
+
Current.request.hash, rand,
|
85
|
+
Process.pid, rand,
|
86
|
+
object_id, rand
|
87
|
+
].join
|
88
|
+
Digest::SHA256.hexdigest(h)
|
62
89
|
end
|
63
90
|
|
64
91
|
# Initialize a new Session, requires the original Rack::Request instance
|
@@ -66,17 +93,26 @@ module Ramaze
|
|
66
93
|
#
|
67
94
|
# sets @session_id and @session_flash
|
68
95
|
|
69
|
-
def initialize(
|
96
|
+
def initialize(sess_or_request = Current.request)
|
70
97
|
return unless Global.sessions
|
71
|
-
@session_id = (request.cookies[SESSION_KEY] || random_key)
|
72
98
|
|
73
|
-
|
99
|
+
if sess_or_request.is_a?(Request)
|
100
|
+
request = sess_or_request
|
101
|
+
@session_id = request.cookies[SESSION_KEY] || Session.random_key
|
102
|
+
else
|
103
|
+
request = nil
|
104
|
+
@session_id = sess_or_request
|
105
|
+
end
|
106
|
+
|
107
|
+
unless IP_COUNT.nil? or request.nil?
|
74
108
|
ip = request.ip
|
75
109
|
IP_COUNT[ip] << @session_id
|
76
110
|
sessions.delete(IP_COUNT[ip].shift) if IP_COUNT[ip].size > IP_COUNT_LIMIT
|
77
111
|
end
|
78
112
|
|
79
|
-
@flash =
|
113
|
+
@flash = Session::Flash.new(self)
|
114
|
+
@current = nil
|
115
|
+
@dropped = false
|
80
116
|
end
|
81
117
|
|
82
118
|
# relay all messages we don't understand to the currently active session
|
@@ -89,7 +125,10 @@ module Ramaze
|
|
89
125
|
# existing already, the session itself is an instance of SessionHash
|
90
126
|
|
91
127
|
def current
|
92
|
-
|
128
|
+
unless @current
|
129
|
+
@current = ( sessions[session_id] ||= Session::Hash.new(self) )
|
130
|
+
end
|
131
|
+
@current
|
93
132
|
end
|
94
133
|
|
95
134
|
# shortcut to Cache.sessions
|
@@ -98,30 +137,18 @@ module Ramaze
|
|
98
137
|
Cache.sessions
|
99
138
|
end
|
100
139
|
|
101
|
-
# generate a random (and hopefully unique) id for the current session.
|
102
|
-
#
|
103
|
-
# It consists of the current time, the current request, the current PID of
|
104
|
-
# ruby and object_id of this instance.
|
105
|
-
#
|
106
|
-
# All this is joined by some calls to Kernel#rand and returned as a
|
107
|
-
# Digest::SHA256::hexdigest
|
108
|
-
|
109
|
-
def random_key
|
110
|
-
h = [
|
111
|
-
Time.now.to_f.to_s, rand,
|
112
|
-
Current.request.hash, rand,
|
113
|
-
Process.pid, rand,
|
114
|
-
object_id, rand
|
115
|
-
].join
|
116
|
-
Digest::SHA256.hexdigest(h)
|
117
|
-
end
|
118
|
-
|
119
140
|
# Inspect on Session.current
|
120
141
|
|
121
142
|
def inspect
|
122
143
|
current.inspect
|
123
144
|
end
|
124
145
|
|
146
|
+
# don't finish this session
|
147
|
+
|
148
|
+
def drop!
|
149
|
+
self.dropped = true
|
150
|
+
end
|
151
|
+
|
125
152
|
# at the end of a request delete the current[:FLASH] and assign it to
|
126
153
|
# current[:FLASH_PREVIOUS]
|
127
154
|
#
|
@@ -133,6 +160,7 @@ module Ramaze
|
|
133
160
|
|
134
161
|
def finish
|
135
162
|
return unless Global.sessions
|
163
|
+
return if dropped
|
136
164
|
|
137
165
|
old = current.delete(:FLASH)
|
138
166
|
current[:FLASH_PREVIOUS] = old if old
|