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
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
|
3
|
+
module Ramaze
|
4
|
+
def self.daemonize(runner, instruction, options = {})
|
5
|
+
puts "Instructing daemonize to: #{instruction}"
|
6
|
+
require 'daemons'
|
7
|
+
|
8
|
+
pids = File.join(Dir.tmpdir, 'ramaze.pids')
|
9
|
+
FileUtils.mkdir_p(pids)
|
10
|
+
|
11
|
+
# FIXME: there's a much better way, gotta search irc logs.
|
12
|
+
unless File.executable?(runner)
|
13
|
+
mode = File.stat(runner).mode.to_s(8)
|
14
|
+
mode[3,1] = '7'
|
15
|
+
File.chmod(mode.to_i(8), runner)
|
16
|
+
end
|
17
|
+
|
18
|
+
content = File.readlines(runner)
|
19
|
+
content.unshift('#!/usr/bin/env ruby') unless content[0] =~ /#!/
|
20
|
+
File.open(runner, 'w+'){|io| io.puts(content) }
|
21
|
+
|
22
|
+
options = {
|
23
|
+
:app_name => File.basename(File.dirname(runner)),
|
24
|
+
:ARGV => [instruction],
|
25
|
+
:script => runner,
|
26
|
+
:dir_mode => :normal,
|
27
|
+
:dir => pids,
|
28
|
+
:multiple => false,
|
29
|
+
:ontop => false,
|
30
|
+
:mode => :exec,
|
31
|
+
:backtrace => true,
|
32
|
+
:monitor => true,
|
33
|
+
}.merge(options)
|
34
|
+
|
35
|
+
Daemons.run(runner, options)
|
36
|
+
end
|
37
|
+
end
|
data/lib/ramaze/tool/localize.rb
CHANGED
@@ -13,149 +13,185 @@ require 'ya2yaml'
|
|
13
13
|
# Ramaze::Dispatcher::Action::FILTER << Ramaze::Tool::Localize
|
14
14
|
|
15
15
|
module Ramaze
|
16
|
-
|
16
|
+
module Tool
|
17
|
+
class Localize
|
18
|
+
|
19
|
+
# Enable Localization
|
20
|
+
trait :enable => true
|
21
|
+
|
22
|
+
# Default language that is used if the browser don't suggests otherwise or
|
23
|
+
# the language requested is not available.
|
24
|
+
trait :default_language => 'en'
|
25
|
+
|
26
|
+
# languages supported
|
27
|
+
trait :languages => %w[ en ]
|
28
|
+
|
29
|
+
# This block should respond with the correct location of the yaml file
|
30
|
+
# for the given locale.
|
31
|
+
# Alternative is setting the value as a string that used by String#% with
|
32
|
+
# the locale as argument.
|
33
|
+
# The YAML file is used for saving and loading the localization.
|
34
|
+
#
|
35
|
+
# Example:
|
36
|
+
# trait :file => "locale/%s.yaml"
|
37
|
+
#
|
38
|
+
# Please note that giving a relative String can lead to issues when the
|
39
|
+
# application is started from another pwd.
|
40
|
+
# That is why we, by default, use a dynamic lambda and set the path
|
41
|
+
# relative to Global.root.
|
42
|
+
trait :file => lambda{|locale|
|
43
|
+
Ramaze::Global.root/"conf/locale_#{locale}.yaml"
|
44
|
+
}
|
45
|
+
|
46
|
+
# The pattern that is substituted with the translation of the current locale.
|
47
|
+
trait :regex => /\[\[(.*?)\]\]/
|
48
|
+
|
49
|
+
# Browsers may send different keys for the same language, this allows you to
|
50
|
+
# do some coercion between what you use as keys and what the browser sends.
|
51
|
+
trait :mapping => { /^en-/ => 'en', 'ja' => 'jp'}
|
52
|
+
|
53
|
+
# When this is set to false, it will not save newly collected translatable
|
54
|
+
# strings to disk. Disable this for production use, as it slows the
|
55
|
+
# application down.
|
56
|
+
trait :collect => true
|
57
|
+
|
58
|
+
class << self
|
59
|
+
|
60
|
+
include Trinity
|
61
|
+
|
62
|
+
# Enables being plugged into Dispatcher::Action::FILTER
|
63
|
+
|
64
|
+
def call(response, options = {})
|
65
|
+
return response unless trait[:enable]
|
66
|
+
return response if response.body.nil?
|
67
|
+
return response if response.body.respond_to?(:read)
|
68
|
+
response.body = localize_body(response.body, options)
|
69
|
+
response
|
70
|
+
end
|
17
71
|
|
18
|
-
|
19
|
-
|
72
|
+
# Localizes a response body. It reacts to a regular expression as given
|
73
|
+
# in trait[:regex]. Every 'entity' in it will be translated, see
|
74
|
+
# `localize` for more information.
|
20
75
|
|
21
|
-
|
22
|
-
|
23
|
-
|
76
|
+
def localize_body(body, options)
|
77
|
+
locale =
|
78
|
+
if languages.include?(response["Content-Language"])
|
79
|
+
response["Content-Language"]
|
80
|
+
else
|
81
|
+
(session[:LOCALE] || set_session_locale).to_s
|
82
|
+
end
|
24
83
|
|
25
|
-
|
26
|
-
|
84
|
+
body.gsub!(trait[:regex]) do
|
85
|
+
localize($1, locale) unless $1.to_s.empty?
|
86
|
+
end
|
27
87
|
|
28
|
-
|
29
|
-
# substituted by the values from trait[:languages]
|
30
|
-
trait :file => 'conf/locale_%s.yaml'.freeze
|
88
|
+
store(locale, default_language) if trait[:collect]
|
31
89
|
|
32
|
-
|
33
|
-
|
90
|
+
body
|
91
|
+
end
|
34
92
|
|
35
|
-
|
36
|
-
|
37
|
-
trait :mapping => { 'en-us' => 'en', 'ja' => 'jp'}
|
93
|
+
# Localizes a single 'entity'. If a translation in the chosen language is
|
94
|
+
# not available, it falls back to the default language.
|
38
95
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
96
|
+
def localize(str, locale)
|
97
|
+
dict = dictionary
|
98
|
+
dict[locale] ||= {}
|
99
|
+
dict[default_language] ||= {}
|
43
100
|
|
44
|
-
|
101
|
+
trans = dict[locale][str] ||= dict[default_language][str] ||= str
|
102
|
+
rescue Object => ex
|
103
|
+
Log.error(ex)
|
104
|
+
str
|
105
|
+
end
|
45
106
|
|
46
|
-
|
107
|
+
# Sets session[:LOCALE] to one of the languages defined in the dictionary.
|
108
|
+
# It first tries to honor the browsers accepted languages and then falls
|
109
|
+
# back to the default language.
|
47
110
|
|
48
|
-
|
111
|
+
def set_session_locale
|
112
|
+
session[:LOCALE] = default_language
|
113
|
+
accepted_langs = request.locales << default_language
|
49
114
|
|
50
|
-
|
51
|
-
|
52
|
-
return response if response.body.nil?
|
53
|
-
return response if response.body.respond_to?(:read)
|
54
|
-
response.body = localize_body(response.body, options)
|
55
|
-
response
|
56
|
-
end
|
115
|
+
mapping = trait[:mapping]
|
116
|
+
dict = dictionary
|
57
117
|
|
58
|
-
|
59
|
-
|
60
|
-
|
118
|
+
accepted_langs.each do |language|
|
119
|
+
if mapped = mapping.find{|k,v| k === language }
|
120
|
+
language = mapped[1]
|
121
|
+
end
|
61
122
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
else
|
67
|
-
(session[:LOCALE] || set_session_locale).to_s
|
123
|
+
if dict.key?(language)
|
124
|
+
session[:LOCALE] = language
|
125
|
+
break
|
126
|
+
end
|
68
127
|
end
|
69
128
|
|
70
|
-
|
71
|
-
localize($1, locale) unless $1.to_s.empty?
|
129
|
+
session[:LOCALE]
|
72
130
|
end
|
73
131
|
|
74
|
-
|
132
|
+
# Returns the dictionary used for translation.
|
75
133
|
|
76
|
-
|
77
|
-
|
134
|
+
def dictionary
|
135
|
+
trait[:languages].map! {|x| x.to_s }.uniq!
|
136
|
+
trait[:dictionary] || load(*languages)
|
137
|
+
end
|
78
138
|
|
79
|
-
|
80
|
-
# not available, it falls back to the default language.
|
139
|
+
# Load given locales from disk and save it into the dictionary.
|
81
140
|
|
82
|
-
|
83
|
-
|
84
|
-
dict = dictionary
|
85
|
-
dict[locale] ||= {}
|
86
|
-
dict[default_language] ||= {}
|
141
|
+
def load(*locales)
|
142
|
+
Log.debug "loading locales: #{locales.inspect}"
|
87
143
|
|
88
|
-
|
89
|
-
dict[locale][str] ||= trans
|
90
|
-
dict[default_language][str] ||= trans
|
144
|
+
dict = trait[:dictionary] || {}
|
91
145
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
146
|
+
locales.each do |locale|
|
147
|
+
begin
|
148
|
+
dict[locale] = YAML.load_file(file_for(locale))
|
149
|
+
rescue Errno::ENOENT
|
150
|
+
dict[locale] = {}
|
151
|
+
end
|
152
|
+
end
|
97
153
|
|
98
|
-
|
99
|
-
|
100
|
-
# back to the default language.
|
154
|
+
trait[:dictionary] = dict
|
155
|
+
end
|
101
156
|
|
102
|
-
|
103
|
-
session[:LOCALE] = trait[:default_language]
|
104
|
-
accepted_langs = request.http_accept_language rescue 'en'
|
157
|
+
# Stores given locales from the dictionary to disk.
|
105
158
|
|
106
|
-
|
107
|
-
|
108
|
-
|
159
|
+
def store(*locales)
|
160
|
+
locales.uniq.compact.each do |locale|
|
161
|
+
file = file_for(locale)
|
162
|
+
data = dictionary[locale].ya2yaml
|
109
163
|
|
110
|
-
|
111
|
-
|
112
|
-
if dict.key?(language)
|
113
|
-
session[:LOCALE] = language
|
114
|
-
break
|
164
|
+
Log.dev "saving localized to: #{file}"
|
165
|
+
File.open(file, 'w+'){|fd| fd << data }
|
115
166
|
end
|
167
|
+
rescue Errno::ENOENT => e
|
168
|
+
Log.error e
|
116
169
|
end
|
117
170
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
# Returns the dictionary used for translation.
|
122
|
-
|
123
|
-
def dictionary
|
124
|
-
trait[:languages].map! {|x| x.to_s }.uniq!
|
125
|
-
trait[:dictionary] || load(*trait[:languages])
|
126
|
-
end
|
127
|
-
|
128
|
-
# Load given locales from disk and save it into the dictionary.
|
129
|
-
|
130
|
-
def load(*locales)
|
131
|
-
Log.debug "loading locales: #{locales.inspect}"
|
171
|
+
# Call trait[:file] with the passed locale if it reponds to that,
|
172
|
+
# otherwise we call #to_s and % with the locale on it.
|
132
173
|
|
133
|
-
|
174
|
+
def file_for(locale)
|
175
|
+
file_source = trait[:file]
|
134
176
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
dict[locale] = {}
|
177
|
+
if file_source.respond_to?(:call)
|
178
|
+
file = file_source.call(locale)
|
179
|
+
else
|
180
|
+
file = file_source.to_s % locale
|
140
181
|
end
|
141
182
|
end
|
142
183
|
|
143
|
-
trait[:
|
144
|
-
end
|
184
|
+
# alias for trait[:languages]
|
145
185
|
|
146
|
-
|
186
|
+
def languages
|
187
|
+
trait[:languages]
|
188
|
+
end
|
147
189
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
file = trait[:file] % locale
|
153
|
-
File.open(file, File::CREAT|File::TRUNC|File::WRONLY) do |fd|
|
154
|
-
fd.write data
|
155
|
-
end
|
190
|
+
# alias for trait[:default_language]
|
191
|
+
|
192
|
+
def default_language
|
193
|
+
trait[:default_language]
|
156
194
|
end
|
157
|
-
rescue Errno::ENOENT => e
|
158
|
-
Log.error e
|
159
195
|
end
|
160
196
|
end
|
161
197
|
end
|
data/lib/ramaze/version.rb
CHANGED
@@ -1,14 +1,6 @@
|
|
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
|
-
module Ramaze
|
5
|
-
|
6
|
-
MAJOR = 0
|
7
|
-
MINOR = 3
|
8
|
-
TINY = 9.1
|
9
|
-
|
10
|
-
STRING = [MAJOR, MINOR, TINY].join('.')
|
11
|
-
end
|
12
|
-
|
13
|
-
VERSION = Version::STRING
|
4
|
+
module Ramaze
|
5
|
+
VERSION = "2008.06"
|
14
6
|
end
|
data/rake_tasks/conf.rake
CHANGED
@@ -1,17 +1,11 @@
|
|
1
|
-
AUTHOR = "manveru"
|
2
|
-
EMAIL = "m.fellinger@gmail.com"
|
3
|
-
DESCRIPTION = "Ramaze is a simple and modular web framework"
|
4
|
-
HOMEPATH = 'http://ramaze.rubyforge.org'
|
5
|
-
BIN_FILES = %w( ramaze )
|
6
|
-
|
7
1
|
BASEDIR = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
8
2
|
|
9
|
-
NAME = "ramaze"
|
10
3
|
VERS = Ramaze::VERSION
|
11
4
|
COPYRIGHT = [
|
12
5
|
"# Copyright (c) #{Time.now.year} Michael Fellinger m.fellinger@gmail.com",
|
13
6
|
"# All files in this distribution are subject to the terms of the Ruby license."
|
14
7
|
]
|
8
|
+
README = 'README.markdown'
|
15
9
|
CLEAN.include %w[
|
16
10
|
**/.*.sw?
|
17
11
|
*.gem
|
@@ -22,22 +16,22 @@ CLEAN.include %w[
|
|
22
16
|
pkg
|
23
17
|
rdoc
|
24
18
|
]
|
25
|
-
RDOC_OPTS = %
|
19
|
+
RDOC_OPTS = %W[
|
26
20
|
--all
|
27
21
|
--quiet
|
28
22
|
--op rdoc
|
29
23
|
--line-numbers
|
30
24
|
--inline-source
|
31
|
-
--main
|
25
|
+
--main #{README}
|
32
26
|
--opname index.html
|
33
27
|
--title "Ramaze\ documentation"
|
34
|
-
--exclude "^(
|
28
|
+
--exclude "^(spec|examples|bin|pkg)/"
|
35
29
|
--exclude "lib/proto"
|
36
30
|
--include "doc"
|
37
31
|
--accessor "trait"
|
38
32
|
]
|
39
|
-
RDOC_FILES = %
|
40
|
-
lib doc
|
33
|
+
RDOC_FILES = %W[
|
34
|
+
lib doc #{README} doc/FAQ doc/CHANGELOG
|
41
35
|
]
|
42
36
|
POST_INSTALL_MESSAGE = %{
|
43
37
|
#{'=' * 60}
|
@@ -52,11 +46,13 @@ You can now do following:
|
|
52
46
|
}.strip
|
53
47
|
|
54
48
|
AUTHOR_MAP = {
|
49
|
+
'andy@tinnedfruit.org' => 'Andy Smith',
|
55
50
|
'ahoward' => 'Ara T. Howard',
|
56
51
|
'ara.t.howard@gmail.com' => 'Ara T. Howard',
|
57
52
|
'blueonyx@dev-area.net' => 'Martin Hilbig',
|
58
53
|
'clive@crous.co.za' => 'Clive Crous',
|
59
|
-
'comp.lang.zenix+ramaze@gmail.com' => '
|
54
|
+
'comp.lang.zenix+ramaze@gmail.com' => 'Colin Shea',
|
55
|
+
'evaryont@gmx.us' => 'Colin Shea',
|
60
56
|
'jesusisramazing.10.pistos@geoshell.com' => 'Pistos',
|
61
57
|
'jesuswasramazing.10.pistos@geoshell.com' => 'Pistos',
|
62
58
|
'keita.yamaguchi@gmail.com' => 'Keita Yamaguchi',
|
@@ -64,9 +60,11 @@ AUTHOR_MAP = {
|
|
64
60
|
'manveru@weez-int.com' => 'Michael Fellinger',
|
65
61
|
'm.fellinger@gmail.com' => 'Michael Fellinger',
|
66
62
|
'outtenr@gmail.com' => 'Richard Outten',
|
63
|
+
'ryan@wonko.com' => 'Ryan Grove',
|
67
64
|
'rff.rff@gmail.com' => 'Gabriele Renzi',
|
68
65
|
'skaar@waste.org' => 'skaar',
|
69
66
|
'stephan@spaceboyz.net' => 'Stephan Maka',
|
67
|
+
'samcarr@gmail.com' => 'samcarr',
|
70
68
|
}
|
71
69
|
|
72
70
|
# * Browse and try the Examples in
|
data/rake_tasks/gem.rake
CHANGED
@@ -1,43 +1,65 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
s.files = (RDOC_FILES + %w[Rakefile] + Dir["{examples,bin,doc,spec,lib,rake_tasks}/**/*"]).uniq
|
24
|
-
|
25
|
-
# s.extensions = FileList["ext/**/extconf.rb"].to_a
|
26
|
-
end
|
1
|
+
def generate_gemspec(version)
|
2
|
+
Gem::Specification.new{|s|
|
3
|
+
s.name = "ramaze"
|
4
|
+
s.version = version
|
5
|
+
s.summary = "Ramaze is a simple and modular web framework"
|
6
|
+
s.description = s.summary
|
7
|
+
|
8
|
+
s.author = "Michael 'manveru' Fellinger"
|
9
|
+
s.email = "m.fellinger@gmail.com"
|
10
|
+
s.homepage = "http://ramaze.rubyforge.org"
|
11
|
+
s.rubyforge_project = "ramaze"
|
12
|
+
|
13
|
+
s.bindir = "bin"
|
14
|
+
s.require_path = "lib"
|
15
|
+
|
16
|
+
s.executables = Dir["#{s.bindir}/*"].map{|f| File.basename(f) }
|
17
|
+
s.files = FileList.new('**/*'){|fl|
|
18
|
+
fl.exclude(/^pkg\//)
|
19
|
+
}
|
20
|
+
|
21
|
+
s.has_rdoc = true
|
22
|
+
s.post_install_message = POST_INSTALL_MESSAGE
|
27
23
|
|
28
|
-
|
29
|
-
|
30
|
-
p.gem_spec = spec
|
24
|
+
s.add_dependency('rack', '>=0.3.0')
|
25
|
+
}
|
31
26
|
end
|
32
27
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
28
|
+
def update_gemspec(spec)
|
29
|
+
gemspec = <<-OUT.strip
|
30
|
+
Gem::Specification.new do |s|
|
31
|
+
s.name = %name%
|
32
|
+
s.version = %version%
|
33
|
+
|
34
|
+
s.summary = %summary%
|
35
|
+
s.description = %description%
|
36
|
+
s.has_rdoc = %has_rdoc%
|
37
|
+
s.author = %author%
|
38
|
+
s.email = %email%
|
39
|
+
s.homepage = %homepage%
|
40
|
+
s.executables = %executables%
|
41
|
+
s.bindir = %bindir%
|
42
|
+
s.require_path = %require_path%
|
43
|
+
s.post_install_message = %post_install_message%
|
44
|
+
|
45
|
+
%dependencies%
|
46
|
+
|
47
|
+
s.files = %files%
|
38
48
|
end
|
49
|
+
OUT
|
50
|
+
|
51
|
+
gemspec.gsub!(/%(\w+)%/) do
|
52
|
+
case key = $1
|
53
|
+
when 'version'
|
54
|
+
spec.version.to_s.dump
|
55
|
+
when 'dependencies'
|
56
|
+
spec.dependencies.map{|dep|
|
57
|
+
"s.add_dependency('#{dep.name}', '#{dep.version_requirements}')"
|
58
|
+
}.join("\n ")
|
59
|
+
else
|
60
|
+
spec.send($1).pretty_inspect.strip
|
61
|
+
end
|
62
|
+
end
|
39
63
|
|
40
|
-
|
41
|
-
task :uninstall => [:clean] do
|
42
|
-
sh %{sudo gem uninstall #{NAME}}
|
64
|
+
File.open("ramaze.gemspec", 'w+'){|file| file.puts(gemspec) }
|
43
65
|
end
|