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,434 @@
|
|
1
|
+
=begin
|
2
|
+
This package is copyrighted free software by Tim Becker <tim@kuriositaet.de>.
|
3
|
+
You can redistribute it and/or modify it under either the terms of the GPL
|
4
|
+
(see COPYING.txt file), or the conditions below:
|
5
|
+
|
6
|
+
1. You may make and give away verbatim copies of the source form of the
|
7
|
+
software without restriction, provided that you duplicate all of the
|
8
|
+
original copyright notices and associated disclaimers.
|
9
|
+
|
10
|
+
2. You may modify your copy of the software in any way, provided that
|
11
|
+
you do at least ONE of the following:
|
12
|
+
|
13
|
+
a) place your modifications in the Public Domain or otherwise
|
14
|
+
make them Freely Available, such as by posting said
|
15
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
16
|
+
the author to include your modifications in the software.
|
17
|
+
|
18
|
+
b) use the modified software only within your corporation or
|
19
|
+
organization.
|
20
|
+
|
21
|
+
c) rename any non-standard executables so the names do not conflict
|
22
|
+
with standard executables, which must also be provided.
|
23
|
+
|
24
|
+
d) make other distribution arrangements with the author.
|
25
|
+
|
26
|
+
3. You may distribute the software in object code or executable
|
27
|
+
form, provided that you do at least ONE of the following:
|
28
|
+
|
29
|
+
a) distribute the executables and library files of the software,
|
30
|
+
together with instructions (in the manual page or equivalent)
|
31
|
+
on where to get the original distribution.
|
32
|
+
|
33
|
+
b) accompany the distribution with the machine-readable source of
|
34
|
+
the software.
|
35
|
+
|
36
|
+
c) give non-standard executables non-standard names, with
|
37
|
+
instructions on where to get the original software distribution.
|
38
|
+
|
39
|
+
d) make other distribution arrangements with the author.
|
40
|
+
|
41
|
+
4. You may modify and include the part of the software into any other
|
42
|
+
software (possibly commercial). But some files in the distribution
|
43
|
+
are not written by the author, so that they are not under this terms.
|
44
|
+
|
45
|
+
They are gc.c(partly), utils.c(partly), regex.[ch], st.[ch] and some
|
46
|
+
files under the ./missing directory. See each file for the copying
|
47
|
+
condition.
|
48
|
+
|
49
|
+
5. The scripts and library files supplied as input to or produced as
|
50
|
+
output from the software do not automatically fall under the
|
51
|
+
copyright of the software, but belong to whomever generated them,
|
52
|
+
and may be sold commercially, and may be aggregated with this
|
53
|
+
software.
|
54
|
+
|
55
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
56
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
57
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
58
|
+
PURPOSE.
|
59
|
+
=end
|
60
|
+
|
61
|
+
require 'net/http'
|
62
|
+
require 'net/https'
|
63
|
+
require 'uri'
|
64
|
+
require 'cgi'
|
65
|
+
|
66
|
+
|
67
|
+
# Wrapper around ruby's standard net/http classes. Currently, only GET
|
68
|
+
# and POST https methods are supported. `SimpleHttp` provides class
|
69
|
+
# methods `get` and `post` to handle basic functionality. In case more
|
70
|
+
# complicated requests need to be made or default settings need to be
|
71
|
+
# overriden, it's possible to instantiate `SimpleHttp` and use instance
|
72
|
+
# methods `get` and `put`.
|
73
|
+
#
|
74
|
+
#
|
75
|
+
# Features:
|
76
|
+
#
|
77
|
+
# * Handles Redirects automatically
|
78
|
+
# * Proxy used transparently if http_proxy environment variable is
|
79
|
+
# set.
|
80
|
+
# * SSL handled automatically
|
81
|
+
# * fault tolerant uri, e.g. all of these would work:
|
82
|
+
# "www.example.com", "www.example.com/", "http://www.example.com"
|
83
|
+
#
|
84
|
+
# Some usage examples:
|
85
|
+
# # plain GET (using class methods)
|
86
|
+
# SimpleHttp.get "www.example.com"
|
87
|
+
#
|
88
|
+
# # POST using the instance methods
|
89
|
+
# uri = URI.parse "https://www.example.com/index.html"
|
90
|
+
# sh = SimpleHttp uri
|
91
|
+
# sh.set_proxy "my.proxy", "8080"
|
92
|
+
# sh.post {"query" => "query_data"}
|
93
|
+
#
|
94
|
+
# # POST using class methods.
|
95
|
+
# binaryData = getImage
|
96
|
+
# SimpleData.post binaryData, "image/png"
|
97
|
+
#
|
98
|
+
# # GET requst with a custom request_header
|
99
|
+
# sh = SimpleHttp.new "http://www.example.com"
|
100
|
+
# sh.request_headers= {'X-Special-Http-Header'=>'my-value'}
|
101
|
+
# sh.get
|
102
|
+
class SimpleHttp
|
103
|
+
|
104
|
+
VERSION='0.1.1'
|
105
|
+
|
106
|
+
attr_accessor :proxy_host, :proxy_port, :proxy_user, :proxy_pwd, :uri, :request_headers, :response_headers, :response_handlers, :follow_num_redirects
|
107
|
+
|
108
|
+
RESPONSE_HANDLERS = {
|
109
|
+
Net::HTTPResponse => lambda { |request, response, http|
|
110
|
+
response.each_header {|key, value|
|
111
|
+
http.response_headers[key]=value
|
112
|
+
}
|
113
|
+
raise response.to_s
|
114
|
+
},
|
115
|
+
Net::HTTPSuccess => lambda { |request, response, http|
|
116
|
+
response.each_header {|key, value|
|
117
|
+
http.response_headers[key]=value
|
118
|
+
}
|
119
|
+
return response.body
|
120
|
+
},
|
121
|
+
Net::HTTPRedirection => lambda { |request, response, http|
|
122
|
+
raise "too many redirects!" unless http.follow_num_redirects > 0
|
123
|
+
|
124
|
+
# create a new SimpleHttp for the location
|
125
|
+
# refered to decreasing the remaining redirects
|
126
|
+
# by one.
|
127
|
+
sh = SimpleHttp.new response['location']
|
128
|
+
sh.follow_num_redirects = http.follow_num_redirects-1
|
129
|
+
|
130
|
+
# copy the response handlers used in the current
|
131
|
+
# request in case they were non standard.
|
132
|
+
sh.response_handlers = http.response_handlers
|
133
|
+
|
134
|
+
# copy the request headers
|
135
|
+
sh.request_headers = http.request_headers
|
136
|
+
sh.response_headers = http.response_headers
|
137
|
+
|
138
|
+
# copy host and port
|
139
|
+
sh.uri.host = http.uri.host
|
140
|
+
sh.uri.port = http.uri.port
|
141
|
+
|
142
|
+
# http doesn't permit redirects for methods
|
143
|
+
# other than GET of HEAD, so we complain in case
|
144
|
+
# we get them in response to a POST request. (Or
|
145
|
+
# anything other than GET, for that matter.)
|
146
|
+
|
147
|
+
case request
|
148
|
+
when Net::HTTP::Get
|
149
|
+
sh.get
|
150
|
+
when Net::HTTP::Post
|
151
|
+
sh.post
|
152
|
+
else
|
153
|
+
raise "Not a valid HTTP method for redirection: #{request.class}"
|
154
|
+
end
|
155
|
+
}
|
156
|
+
|
157
|
+
}
|
158
|
+
|
159
|
+
# SimpleHttp can either be used directly through the +get+ and
|
160
|
+
# +post+ class methods or be instantiated, in case you need to
|
161
|
+
# to add custom behaviour to the requests.
|
162
|
+
#
|
163
|
+
# @param may be a URI or a String.
|
164
|
+
#
|
165
|
+
# Example:
|
166
|
+
# http = SimpleHttp.new(URI.parse("http://www.example.com"))
|
167
|
+
# http = SimpleHttp.new "www.example.com"
|
168
|
+
# http = SimpleHttp.new "http://usr:pwd@www.example.com:1234"
|
169
|
+
def initialize uri
|
170
|
+
set_proxy ENV['http_proxy'] if ENV['http_proxy']
|
171
|
+
|
172
|
+
if uri.class == String
|
173
|
+
|
174
|
+
unless uri =~ /^https?:\/\//
|
175
|
+
uri = "http://#{uri}"
|
176
|
+
end
|
177
|
+
|
178
|
+
uri = URI.parse uri
|
179
|
+
|
180
|
+
end
|
181
|
+
@uri = uri
|
182
|
+
if !@uri.path || "" == @uri.path.strip
|
183
|
+
@uri.path="/"
|
184
|
+
end
|
185
|
+
|
186
|
+
|
187
|
+
@request_headers={}
|
188
|
+
@response_headers={}
|
189
|
+
@response_handlers=RESPONSE_HANDLERS.clone
|
190
|
+
@follow_num_redirects=3
|
191
|
+
|
192
|
+
if @uri.user
|
193
|
+
basic_authentication @uri.user, @uri.password
|
194
|
+
end
|
195
|
+
|
196
|
+
end
|
197
|
+
|
198
|
+
#
|
199
|
+
# Provides facilities to perform http basic authentication. You
|
200
|
+
# don't need to provide +usr+ and +pwd+ if they are already included
|
201
|
+
# in the uri, i.e. http://user:password@www.example.com/
|
202
|
+
#
|
203
|
+
|
204
|
+
def basic_authentication usr, pwd
|
205
|
+
str = ["#{usr}:#{pwd}"].pack("*m")
|
206
|
+
str = "Basic #{str}"
|
207
|
+
@request_headers["Authorization"]=str
|
208
|
+
end
|
209
|
+
|
210
|
+
#
|
211
|
+
# this method can be used to register response handlers for specific
|
212
|
+
# http responses in case you need to override the default behaviour.
|
213
|
+
# Defaults are:
|
214
|
+
#
|
215
|
+
# HTTPSuccess : return the body of the response
|
216
|
+
# HTTPRedirection : follow the redirection until success
|
217
|
+
# Others : raise an exception
|
218
|
+
#
|
219
|
+
# `clazz` is the subclass of HTTPResponse (or HTTPResponse in case you
|
220
|
+
# want to define "default" behaviour) that you are registering the
|
221
|
+
# handler for.
|
222
|
+
#
|
223
|
+
# `block` is the handler itself, if a response of the appropriate class
|
224
|
+
# is received, `block` is called with three parameters: the the
|
225
|
+
# Net::HTTPRequest, the actual HTTPResponse object that was received
|
226
|
+
# and a reference to the instance of `SimpleHttp` that is executing the
|
227
|
+
# call.
|
228
|
+
#
|
229
|
+
# example:
|
230
|
+
#
|
231
|
+
# # to override the default action of following a HTTP
|
232
|
+
# # redirect, you could register the folllowing handler:
|
233
|
+
#
|
234
|
+
# sh = SimpleHttp "www.example.com"
|
235
|
+
# sh.register_response_handler Net::HTTPRedirection {|request, response, shttp|
|
236
|
+
# response['location']
|
237
|
+
# }
|
238
|
+
#
|
239
|
+
|
240
|
+
def register_response_handler clazz, &block
|
241
|
+
c = clazz
|
242
|
+
while c != Object
|
243
|
+
# completely unnecessary sanity check to make sure parameter
|
244
|
+
# `clazz` is in fact a HTTPResponse ...
|
245
|
+
if c == Net::HTTPResponse
|
246
|
+
@response_handlers[clazz]=block
|
247
|
+
return
|
248
|
+
end
|
249
|
+
c = c.superclass
|
250
|
+
end
|
251
|
+
|
252
|
+
raise "Trying to register a response handler for non-response class: #{clazz}"
|
253
|
+
end
|
254
|
+
|
255
|
+
#
|
256
|
+
# Set the proxy to use for the http request.
|
257
|
+
# Note that you don't need to set the proxy in case the
|
258
|
+
# `http_proxy` environment variable is set. To override
|
259
|
+
# previous proxy settings and connect directly, call
|
260
|
+
# `set_proxy nil`
|
261
|
+
#
|
262
|
+
# usage:
|
263
|
+
# http = SimpleHttp.new "www.example.com"
|
264
|
+
#
|
265
|
+
# http.set_proxy "http://proxy:8000"
|
266
|
+
# or:
|
267
|
+
# http.set_proxy(URI.parse("http://proxy:8000"))
|
268
|
+
# or:
|
269
|
+
# http.set_proxy 'proxy', '8000', 'my_user', 'secret'
|
270
|
+
# or:
|
271
|
+
# http.set_proxy nil # to override previous proxy
|
272
|
+
# settings and make the request directly.
|
273
|
+
#
|
274
|
+
|
275
|
+
|
276
|
+
def set_proxy proxy, port=nil, user=nil, pwd=nil
|
277
|
+
|
278
|
+
|
279
|
+
if !proxy
|
280
|
+
@proxy_host=@proxy_port=@proxy_user=@proxy_pwd=nil
|
281
|
+
return
|
282
|
+
end
|
283
|
+
|
284
|
+
if proxy.class == String
|
285
|
+
if !port && !user && !pwd
|
286
|
+
proxy = URI.parse(proxy)
|
287
|
+
else
|
288
|
+
@proxy_host= host
|
289
|
+
@proxy_port= port
|
290
|
+
@proxy_user= user
|
291
|
+
@proxy_pwd = pwd
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
if proxy.class == URI::HTTP
|
296
|
+
@proxy_host= proxy.host
|
297
|
+
@proxy_port= proxy.port
|
298
|
+
@proxy_user= proxy.user
|
299
|
+
@proxy_pwd = proxy.password
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
# interal
|
304
|
+
# Takes a HTTPResponse (or subclass) and determines how to
|
305
|
+
# handle the response. Default behaviour is:
|
306
|
+
#
|
307
|
+
# HTTPSuccess : return the body of the response
|
308
|
+
# HTTPRedirection : follow the redirect until success.
|
309
|
+
# default : raise the HTTPResponse.
|
310
|
+
#
|
311
|
+
# the default behaviour can be overidden by registering a
|
312
|
+
# response handler using the `register_response_handler` method.
|
313
|
+
#
|
314
|
+
|
315
|
+
def handle_response http_request, http_response
|
316
|
+
raise "Not a Net::HTTPResponse" unless http_response.is_a? Net::HTTPResponse
|
317
|
+
|
318
|
+
c = http_response.class
|
319
|
+
while c!=Object
|
320
|
+
# the response_handlers hash contains a handler
|
321
|
+
# for the specific response class.
|
322
|
+
if @response_handlers[c]
|
323
|
+
return @response_handlers[c].call(http_request, http_response, self)
|
324
|
+
end
|
325
|
+
|
326
|
+
c=c.superclass
|
327
|
+
end
|
328
|
+
|
329
|
+
# if we reached this place, no handler was registered
|
330
|
+
# for this response. default is to return the response.
|
331
|
+
|
332
|
+
return http_response
|
333
|
+
end
|
334
|
+
|
335
|
+
# internal
|
336
|
+
def do_http request
|
337
|
+
response = nil
|
338
|
+
|
339
|
+
http = Net::HTTP.new(@uri.host, @uri.port, proxy_host,
|
340
|
+
proxy_port, proxy_user, proxy_pwd)
|
341
|
+
http.use_ssl = @uri.scheme == 'https'
|
342
|
+
|
343
|
+
# add custom request headers.
|
344
|
+
|
345
|
+
@request_headers.each {|key,value|
|
346
|
+
request[key]=value
|
347
|
+
}
|
348
|
+
|
349
|
+
handle_response(request, http.request(request))
|
350
|
+
end
|
351
|
+
|
352
|
+
# internal
|
353
|
+
def make_query query
|
354
|
+
return query unless query && query.class == Hash
|
355
|
+
query.inject([]) do |s, (key, value)|
|
356
|
+
s + [CGI::escape(key) + "=" + CGI::escape(value)]
|
357
|
+
end.join('&')
|
358
|
+
end
|
359
|
+
|
360
|
+
# Make a simple GET request to the provided URI.
|
361
|
+
#
|
362
|
+
# Example:
|
363
|
+
# puts(SimpleHttp.get("www.example.com"))
|
364
|
+
def self.get uri, query=nil
|
365
|
+
http = SimpleHttp.new uri
|
366
|
+
http.get query
|
367
|
+
end
|
368
|
+
|
369
|
+
# Make a POST request to the provided URI.
|
370
|
+
#
|
371
|
+
# Example:
|
372
|
+
# puts(SimpleHttp.post("www.example.com", "query"=>"my_query"))
|
373
|
+
#
|
374
|
+
# Alternatively, you can post any sort of data, but will have to
|
375
|
+
# set the appriate content_type:
|
376
|
+
#
|
377
|
+
# SimpleHttp.post("http://www.example.com/", binary_data, "img/png")
|
378
|
+
|
379
|
+
def self.post uri, query=nil, content_type='application/x-www-form-urlencoded'
|
380
|
+
http = SimpleHttp.new uri
|
381
|
+
http.post query, content_type
|
382
|
+
end
|
383
|
+
|
384
|
+
# Call the +get+ method as an instance method if you need to
|
385
|
+
# modify the default behaviour of the library, or set special
|
386
|
+
# headers:
|
387
|
+
#
|
388
|
+
# http = SimpleHttp.new "www.example.com"
|
389
|
+
# http.request_headers["X-Special"]="whatever"
|
390
|
+
# str = http.get
|
391
|
+
def get query = nil
|
392
|
+
if (query = make_query query)
|
393
|
+
@uri.query = @uri.query ? @uri.query+"&"+query : query
|
394
|
+
end
|
395
|
+
full_path = @uri.path + (@uri.query ? "?#{@uri.query}" : "")
|
396
|
+
|
397
|
+
req = Net::HTTP::Get.new(full_path)
|
398
|
+
# puts Net::HTTP::Proxy(@proxy_host, @proxy_port, @proxy_user, @proxy_pwd).get(@uri)
|
399
|
+
do_http req
|
400
|
+
end
|
401
|
+
|
402
|
+
#
|
403
|
+
# Post the query data to the url.
|
404
|
+
# The body of the request remains empty if query=nil.
|
405
|
+
# In case `query` is a `Hash`, it's assumed that we are
|
406
|
+
# sending a form.
|
407
|
+
# In case `query` is a `String`, it's also assumed that a
|
408
|
+
# form is being sent, UNLESS the `content_type` parameter
|
409
|
+
# is set.
|
410
|
+
#
|
411
|
+
def post query=nil, content_type='application/x-www-form-urlencoded'
|
412
|
+
req = Net::HTTP::Post.new(@uri.path)
|
413
|
+
|
414
|
+
req.body= make_query query if query
|
415
|
+
req.content_type=content_type if query
|
416
|
+
req.content_length=query ? req.body.length : 0
|
417
|
+
|
418
|
+
do_http req
|
419
|
+
end
|
420
|
+
|
421
|
+
end
|
422
|
+
|
423
|
+
#ht = SimpleHttp.new "http://www.google.com/aldfksjaldskjfalskjfdlk"
|
424
|
+
##ht.register_response_handler(Net::HTTPRedirection) {|req, res, ht| puts res['location']}
|
425
|
+
#puts ht.get.class
|
426
|
+
##puts(ht.get("q"=>"bla"))
|
427
|
+
#
|
428
|
+
##puts (SimpleHttp.get "http://www.google.com")
|
429
|
+
#
|
430
|
+
#['http://www.google.com/', 'www.google.com', 'https://www.google.com'].each {|u|
|
431
|
+
# SimpleHttp.new u
|
432
|
+
#}
|
433
|
+
##puts ht.post
|
434
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
if caller
|
2
|
+
snippet = caller.grep(%r!spec/snippets/!).first.split(':').first
|
3
|
+
require File.expand_path(snippet).gsub('/spec/', '/lib/ramaze/')
|
4
|
+
|
5
|
+
if defined?(Ramaze::CoreExtensions)
|
6
|
+
Ramaze::CoreExtensions.constants.each do |const|
|
7
|
+
ext = Ramaze::CoreExtensions.const_get(const)
|
8
|
+
into = Module.const_get(const)
|
9
|
+
into.__send__(:include, ext)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'lib/ramaze/spec/helper/bacon'
|
@@ -0,0 +1,135 @@
|
|
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
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'ramaze'
|
10
|
+
require 'ramaze/spec/helper/bacon'
|
11
|
+
|
12
|
+
# Invoke ramaze with a set of default options suitable for testing.
|
13
|
+
# you may pass your options that will override the defaults.
|
14
|
+
class Bacon::Context
|
15
|
+
# Skip start from required files
|
16
|
+
Ramaze.trait[:started] = true
|
17
|
+
|
18
|
+
def ramaze(options = {})
|
19
|
+
options = {
|
20
|
+
:adapter => false,
|
21
|
+
:run_loose => true,
|
22
|
+
:error_page => false,
|
23
|
+
:port => 7007,
|
24
|
+
:host => '127.0.0.1',
|
25
|
+
:sourcereload => false,
|
26
|
+
:origin => :spec,
|
27
|
+
}.merge(options)
|
28
|
+
|
29
|
+
Ramaze.start!(options)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
SPEC_REQUIRE_DEPENDENCY = {
|
34
|
+
'sequel' => %w[sqlite3 sequel_model sequel_core]
|
35
|
+
}
|
36
|
+
|
37
|
+
# require each of the following and rescue LoadError, telling you why it failed.
|
38
|
+
def spec_require(*following)
|
39
|
+
following << following.map{|f| SPEC_REQUIRE_DEPENDENCY[f] }
|
40
|
+
following.flatten.uniq.compact.reverse.each do |file|
|
41
|
+
require file.to_s
|
42
|
+
end
|
43
|
+
rescue LoadError => ex
|
44
|
+
puts ex
|
45
|
+
puts "Can't run #{$0}: #{ex}"
|
46
|
+
puts "Usually you should not worry about this failure, just install the"
|
47
|
+
puts "library and try again (if you want to use that feature later on)"
|
48
|
+
exit
|
49
|
+
end
|
50
|
+
|
51
|
+
shared "http" do
|
52
|
+
require 'ramaze/spec/helper/mock_http'
|
53
|
+
extend MockHTTP
|
54
|
+
end
|
55
|
+
|
56
|
+
shared 'browser' do
|
57
|
+
require 'ramaze/spec/helper/simple_http'
|
58
|
+
require 'ramaze/spec/helper/browser'
|
59
|
+
end
|
60
|
+
|
61
|
+
shared 'requester' do
|
62
|
+
require 'ramaze/spec/helper/mock_http'
|
63
|
+
require 'ramaze/spec/helper/requester'
|
64
|
+
extend Requester
|
65
|
+
extend MockHTTP
|
66
|
+
end
|
67
|
+
|
68
|
+
# make it easier to use XPATH on the MockResponse#body - in cases you can't use
|
69
|
+
# Hpricot or if you want to keep dependencies down
|
70
|
+
shared 'xpath' do
|
71
|
+
behaves_like 'http'
|
72
|
+
|
73
|
+
require 'rexml/document'
|
74
|
+
require 'rexml/xpath'
|
75
|
+
|
76
|
+
class Rack::MockResponse
|
77
|
+
# Delegate to REXML::XPath::match
|
78
|
+
def match(xpath = '*')
|
79
|
+
REXML::XPath::match(REXML::Document.new(body), xpath)
|
80
|
+
end
|
81
|
+
alias / match
|
82
|
+
alias search match
|
83
|
+
|
84
|
+
# Delegate to REXML::XPath::first
|
85
|
+
def first(xpath = '*')
|
86
|
+
REXML::XPath::first(REXML::Document.new(body), xpath)
|
87
|
+
end
|
88
|
+
alias at first
|
89
|
+
|
90
|
+
# Delegate to REXML::XPath::each
|
91
|
+
def each(xpath = '*', &block)
|
92
|
+
REXML::XPath::each(REXML::Document.new(body), xpath, &block)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# Delegate to REXML::XPath::match
|
97
|
+
def xp_match(obj, xpath = '*', &block)
|
98
|
+
REXML::XPath::match(rexml_doc(obj), xpath, &block)
|
99
|
+
end
|
100
|
+
alias xp_search xp_match
|
101
|
+
|
102
|
+
# Delegate to REXML::XPath::first
|
103
|
+
def xp_first(obj, xpath = '*', &block)
|
104
|
+
REXML::XPath::first(rexml_doc(obj), xpath, &block)
|
105
|
+
end
|
106
|
+
alias xp_at xp_first
|
107
|
+
|
108
|
+
# Delegate to REXML::XPath::each
|
109
|
+
def xp_each(obj, xpath = '*', &block)
|
110
|
+
REXML::XPath::each(rexml_doc(obj), xpath, &block)
|
111
|
+
end
|
112
|
+
|
113
|
+
# Delegate to REXML::Document.new - return the obj if it's already an
|
114
|
+
# instance.
|
115
|
+
def rexml_doc(obj)
|
116
|
+
case obj
|
117
|
+
when REXML::Document, REXML::Element
|
118
|
+
obj
|
119
|
+
else
|
120
|
+
REXML::Document.new(obj)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
shared 'resolve' do
|
126
|
+
# shortcut for Ramaze::Controller::resolve
|
127
|
+
def resolve(url)
|
128
|
+
Ramaze::Controller::resolve(url)
|
129
|
+
end
|
130
|
+
|
131
|
+
# Shortcut to stack on the instance of Action return from resolve
|
132
|
+
def stack(url, &block)
|
133
|
+
resolve(url).stack(&block)
|
134
|
+
end
|
135
|
+
end
|
data/lib/ramaze/spec.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'ramaze/spec/helper'
|
@@ -0,0 +1,109 @@
|
|
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 'yaml/store'
|
5
|
+
|
6
|
+
module Ramaze
|
7
|
+
|
8
|
+
# Namespace for Stores in Ramaze
|
9
|
+
|
10
|
+
module Store
|
11
|
+
|
12
|
+
# A simple wrapper around YAML::Store
|
13
|
+
|
14
|
+
class Default
|
15
|
+
include Enumerable
|
16
|
+
|
17
|
+
attr_accessor :db
|
18
|
+
|
19
|
+
# create a new store with a filename
|
20
|
+
|
21
|
+
def initialize filename = 'db.yaml'
|
22
|
+
FileUtils.touch(filename)
|
23
|
+
@db = YAML::Store.new(filename)
|
24
|
+
end
|
25
|
+
|
26
|
+
# yield a block in a transaction, identical to #db.transaction{}
|
27
|
+
|
28
|
+
def transaction
|
29
|
+
@db.transaction do
|
30
|
+
yield
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# pass on all methods inside a transaction
|
35
|
+
|
36
|
+
def method_missing(meth, *args, &block)
|
37
|
+
read_only = (meth == :[])
|
38
|
+
|
39
|
+
@db.transaction(read_only) do
|
40
|
+
@db.send(meth, *args, &block)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# the actual content of the store in YAML format
|
45
|
+
|
46
|
+
def to_yaml
|
47
|
+
dump(:x)
|
48
|
+
end
|
49
|
+
|
50
|
+
# loads the #to_yaml
|
51
|
+
|
52
|
+
def original
|
53
|
+
YAML.load(to_yaml)
|
54
|
+
end
|
55
|
+
|
56
|
+
# available keys of the store
|
57
|
+
|
58
|
+
def keys
|
59
|
+
(original || {}).keys
|
60
|
+
end
|
61
|
+
|
62
|
+
# is the Store empty? (no keys)
|
63
|
+
|
64
|
+
def empty?
|
65
|
+
keys.empty?
|
66
|
+
end
|
67
|
+
|
68
|
+
# nondestructive merge on #original
|
69
|
+
|
70
|
+
def merge hash = {}
|
71
|
+
original.merge(hash)
|
72
|
+
end
|
73
|
+
|
74
|
+
# destructive #merge
|
75
|
+
|
76
|
+
def merge! hash = {}
|
77
|
+
hash.each do |key, value|
|
78
|
+
transaction do
|
79
|
+
@db[key] = value
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
original
|
84
|
+
end
|
85
|
+
|
86
|
+
# delete all entries
|
87
|
+
|
88
|
+
def clear
|
89
|
+
keys.each do |key|
|
90
|
+
delete key
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# number of #keys
|
95
|
+
|
96
|
+
def size
|
97
|
+
keys.size
|
98
|
+
end
|
99
|
+
|
100
|
+
# Iterate over #original and pass the key and value to a block.
|
101
|
+
|
102
|
+
def each
|
103
|
+
original.each do |key, value|
|
104
|
+
yield key, value
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|