metry 1.0.0
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/History.txt +5 -0
- data/Manifest.txt +376 -0
- data/README.txt +62 -0
- data/Rakefile +23 -0
- data/TODO +10 -0
- data/example/example.rb +22 -0
- data/features/app_tracking.feature +11 -0
- data/features/basic_tracking.feature +88 -0
- data/features/sample_application.feature +12 -0
- data/features/step_definitions/tracking.rb +35 -0
- data/features/step_definitions/web.rb +31 -0
- data/features/support/env.rb +22 -0
- data/lib/metry.rb +19 -0
- data/lib/metry/experiment.rb +25 -0
- data/lib/metry/memory.rb +27 -0
- data/lib/metry/rack/tracking.rb +51 -0
- data/lib/metry/tokyo.rb +153 -0
- data/radiant/example/CHANGELOG +611 -0
- data/radiant/example/CONTRIBUTORS +168 -0
- data/radiant/example/INSTALL +38 -0
- data/radiant/example/LICENSE +21 -0
- data/radiant/example/README +60 -0
- data/radiant/example/Rakefile +21 -0
- data/radiant/example/config/boot.rb +161 -0
- data/radiant/example/config/database.yml +20 -0
- data/radiant/example/config/environment.rb +83 -0
- data/radiant/example/config/environments/cucumber.rb +18 -0
- data/radiant/example/config/environments/development.rb +17 -0
- data/radiant/example/config/environments/production.rb +19 -0
- data/radiant/example/config/environments/test.rb +36 -0
- data/radiant/example/config/routes.rb +1 -0
- data/radiant/example/db/schema.rb +112 -0
- data/radiant/example/features/metry.feature +139 -0
- data/radiant/example/features/step_definitions/experiments.rb +12 -0
- data/radiant/example/features/step_definitions/radiant.rb +14 -0
- data/radiant/example/features/step_definitions/tracking.rb +35 -0
- data/radiant/example/features/step_definitions/web.rb +22 -0
- data/radiant/example/features/support/env.rb +52 -0
- data/radiant/example/public/.htaccess +40 -0
- data/radiant/example/public/404.html +8 -0
- data/radiant/example/public/500.html +8 -0
- data/radiant/example/public/dispatch.cgi +10 -0
- data/radiant/example/public/dispatch.fcgi +24 -0
- data/radiant/example/public/dispatch.rb +10 -0
- data/radiant/example/public/favicon.ico +0 -0
- data/radiant/example/public/images/admin/add-child.png +0 -0
- data/radiant/example/public/images/admin/brown-bottom-line.gif +0 -0
- data/radiant/example/public/images/admin/clear-page-cache.png +0 -0
- data/radiant/example/public/images/admin/collapse.png +0 -0
- data/radiant/example/public/images/admin/expand.png +0 -0
- data/radiant/example/public/images/admin/layout.png +0 -0
- data/radiant/example/public/images/admin/minus.png +0 -0
- data/radiant/example/public/images/admin/new-homepage.png +0 -0
- data/radiant/example/public/images/admin/new-layout.png +0 -0
- data/radiant/example/public/images/admin/new-snippet.png +0 -0
- data/radiant/example/public/images/admin/new-user.png +0 -0
- data/radiant/example/public/images/admin/page.png +0 -0
- data/radiant/example/public/images/admin/plus.png +0 -0
- data/radiant/example/public/images/admin/remove-disabled.png +0 -0
- data/radiant/example/public/images/admin/remove.png +0 -0
- data/radiant/example/public/images/admin/snippet.png +0 -0
- data/radiant/example/public/images/admin/spinner.gif +0 -0
- data/radiant/example/public/images/admin/view-site.gif +0 -0
- data/radiant/example/public/images/admin/virtual-page.png +0 -0
- data/radiant/example/public/javascripts/admin/admin.js +149 -0
- data/radiant/example/public/javascripts/admin/ruledtable.js +13 -0
- data/radiant/example/public/javascripts/admin/sitemap.js +132 -0
- data/radiant/example/public/javascripts/admin/tabcontrol.js +133 -0
- data/radiant/example/public/javascripts/application.js +2 -0
- data/radiant/example/public/javascripts/controls.js +963 -0
- data/radiant/example/public/javascripts/dragdrop.js +973 -0
- data/radiant/example/public/javascripts/effects.js +1128 -0
- data/radiant/example/public/javascripts/pngfix.js +39 -0
- data/radiant/example/public/javascripts/prototype.js +4320 -0
- data/radiant/example/public/javascripts/string.js +17 -0
- data/radiant/example/public/robots.txt +1 -0
- data/radiant/example/public/stylesheets/admin/main.css +640 -0
- data/radiant/example/script/about +3 -0
- data/radiant/example/script/autospec +5 -0
- data/radiant/example/script/breakpointer +3 -0
- data/radiant/example/script/console +3 -0
- data/radiant/example/script/cucumber +8 -0
- data/radiant/example/script/dbconsole +3 -0
- data/radiant/example/script/extension +5 -0
- data/radiant/example/script/generate +18 -0
- data/radiant/example/script/performance/benchmarker +3 -0
- data/radiant/example/script/performance/profiler +3 -0
- data/radiant/example/script/performance/request +3 -0
- data/radiant/example/script/process/inspector +3 -0
- data/radiant/example/script/process/reaper +3 -0
- data/radiant/example/script/process/spawner +3 -0
- data/radiant/example/script/process/spinner +3 -0
- data/radiant/example/script/runner +3 -0
- data/radiant/example/script/server +3 -0
- data/radiant/example/script/spec +5 -0
- data/radiant/example/script/spec_server +116 -0
- data/radiant/example/script/version +5 -0
- data/radiant/extension/README +3 -0
- data/radiant/extension/Rakefile +120 -0
- data/radiant/extension/lib/metry_tags.rb +25 -0
- data/radiant/extension/lib/tasks/metry_extension_tasks.rake +28 -0
- data/radiant/extension/metry_extension.rb +24 -0
- data/test/shared.rb +6 -0
- data/test/test_tokyo.rb +14 -0
- data/vendor/rufus-tokyo/CHANGELOG.txt +112 -0
- data/vendor/rufus-tokyo/CREDITS.txt +27 -0
- data/vendor/rufus-tokyo/LICENSE.txt +21 -0
- data/vendor/rufus-tokyo/README.txt +310 -0
- data/vendor/rufus-tokyo/Rakefile +118 -0
- data/vendor/rufus-tokyo/TODO.txt +25 -0
- data/vendor/rufus-tokyo/doc/decision_table.numbers +0 -0
- data/vendor/rufus-tokyo/doc/rdoc-style.css +320 -0
- data/vendor/rufus-tokyo/lib/rufus-edo.rb +3 -0
- data/vendor/rufus-tokyo/lib/rufus-tokyo.rb +3 -0
- data/vendor/rufus-tokyo/lib/rufus/edo.rb +39 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/README.txt +106 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/cabcore.rb +333 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/cabinet/abstract.rb +219 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/cabinet/table.rb +159 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/error.rb +36 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant.rb +4 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant/abstract.rb +137 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant/table.rb +141 -0
- data/vendor/rufus-tokyo/lib/rufus/edo/tabcore.rb +567 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo.rb +58 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/abstract.rb +568 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/lib.rb +230 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/table.rb +753 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/util.rb +425 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/config.rb +161 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia.rb +43 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia/lib.rb +65 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia/words.rb +71 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/hmethods.rb +111 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/query.rb +102 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/transactions.rb +74 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/ttcommons.rb +59 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant.rb +35 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/abstract.rb +146 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/lib.rb +153 -0
- data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/table.rb +162 -0
- data/vendor/rufus-tokyo/rufus-tokyo.gemspec +25 -0
- data/vendor/rufus-tokyo/spec/cabinet_spec.rb +472 -0
- data/vendor/rufus-tokyo/spec/cabinetconfig_spec.rb +82 -0
- data/vendor/rufus-tokyo/spec/edo_cabinet_spec.rb +447 -0
- data/vendor/rufus-tokyo/spec/edo_ntyrant_spec.rb +299 -0
- data/vendor/rufus-tokyo/spec/edo_ntyrant_table_spec.rb +462 -0
- data/vendor/rufus-tokyo/spec/edo_table_spec.rb +560 -0
- data/vendor/rufus-tokyo/spec/hmethods_spec.rb +44 -0
- data/vendor/rufus-tokyo/spec/incr.lua +20 -0
- data/vendor/rufus-tokyo/spec/spec.rb +9 -0
- data/vendor/rufus-tokyo/spec/spec_base.rb +23 -0
- data/vendor/rufus-tokyo/spec/start_tyrants.sh +26 -0
- data/vendor/rufus-tokyo/spec/stop_tyrants.sh +9 -0
- data/vendor/rufus-tokyo/spec/table_spec.rb +567 -0
- data/vendor/rufus-tokyo/spec/tyrant_spec.rb +309 -0
- data/vendor/rufus-tokyo/spec/tyrant_table_spec.rb +479 -0
- data/vendor/rufus-tokyo/spec/util_list_spec.rb +200 -0
- data/vendor/rufus-tokyo/spec/util_map_spec.rb +132 -0
- data/vendor/rufus-tokyo/tasks/dev.rb +70 -0
- data/vendor/rufus-tokyo/test/bm0.rb +353 -0
- data/vendor/rufus-tokyo/test/bm1_compression.rb +54 -0
- data/vendor/rufus-tokyo/test/con0.rb +30 -0
- data/vendor/rufus-tokyo/test/mem.rb +49 -0
- data/vendor/rufus-tokyo/test/mem1.rb +44 -0
- data/vendor/rufus-tokyo/test/readme0.rb +17 -0
- data/vendor/rufus-tokyo/test/readme1.rb +21 -0
- data/vendor/rufus-tokyo/test/readme2.rb +15 -0
- data/vendor/rufus-tokyo/test/readme3.rb +24 -0
- data/vendor/rufus-tokyo/test/readmes_test.sh +17 -0
- data/vendor/webrat/.document +4 -0
- data/vendor/webrat/History.txt +358 -0
- data/vendor/webrat/MIT-LICENSE.txt +19 -0
- data/vendor/webrat/README.rdoc +85 -0
- data/vendor/webrat/Rakefile +200 -0
- data/vendor/webrat/install.rb +1 -0
- data/vendor/webrat/lib/webrat.rb +31 -0
- data/vendor/webrat/lib/webrat/core.rb +14 -0
- data/vendor/webrat/lib/webrat/core/configuration.rb +102 -0
- data/vendor/webrat/lib/webrat/core/elements/area.rb +31 -0
- data/vendor/webrat/lib/webrat/core/elements/element.rb +33 -0
- data/vendor/webrat/lib/webrat/core/elements/field.rb +411 -0
- data/vendor/webrat/lib/webrat/core/elements/form.rb +103 -0
- data/vendor/webrat/lib/webrat/core/elements/label.rb +31 -0
- data/vendor/webrat/lib/webrat/core/elements/link.rb +93 -0
- data/vendor/webrat/lib/webrat/core/elements/select_option.rb +35 -0
- data/vendor/webrat/lib/webrat/core/locators.rb +20 -0
- data/vendor/webrat/lib/webrat/core/locators/area_locator.rb +38 -0
- data/vendor/webrat/lib/webrat/core/locators/button_locator.rb +54 -0
- data/vendor/webrat/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
- data/vendor/webrat/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
- data/vendor/webrat/lib/webrat/core/locators/field_locator.rb +25 -0
- data/vendor/webrat/lib/webrat/core/locators/field_named_locator.rb +41 -0
- data/vendor/webrat/lib/webrat/core/locators/form_locator.rb +19 -0
- data/vendor/webrat/lib/webrat/core/locators/label_locator.rb +34 -0
- data/vendor/webrat/lib/webrat/core/locators/link_locator.rb +74 -0
- data/vendor/webrat/lib/webrat/core/locators/locator.rb +20 -0
- data/vendor/webrat/lib/webrat/core/locators/select_option_locator.rb +59 -0
- data/vendor/webrat/lib/webrat/core/logging.rb +24 -0
- data/vendor/webrat/lib/webrat/core/matchers.rb +4 -0
- data/vendor/webrat/lib/webrat/core/matchers/have_content.rb +73 -0
- data/vendor/webrat/lib/webrat/core/matchers/have_selector.rb +74 -0
- data/vendor/webrat/lib/webrat/core/matchers/have_tag.rb +21 -0
- data/vendor/webrat/lib/webrat/core/matchers/have_xpath.rb +147 -0
- data/vendor/webrat/lib/webrat/core/methods.rb +63 -0
- data/vendor/webrat/lib/webrat/core/mime.rb +29 -0
- data/vendor/webrat/lib/webrat/core/save_and_open_page.rb +48 -0
- data/vendor/webrat/lib/webrat/core/scope.rb +350 -0
- data/vendor/webrat/lib/webrat/core/session.rb +290 -0
- data/vendor/webrat/lib/webrat/core/xml.rb +115 -0
- data/vendor/webrat/lib/webrat/core/xml/hpricot.rb +19 -0
- data/vendor/webrat/lib/webrat/core/xml/nokogiri.rb +76 -0
- data/vendor/webrat/lib/webrat/core/xml/rexml.rb +24 -0
- data/vendor/webrat/lib/webrat/core_extensions/blank.rb +58 -0
- data/vendor/webrat/lib/webrat/core_extensions/deprecate.rb +8 -0
- data/vendor/webrat/lib/webrat/core_extensions/detect_mapped.rb +12 -0
- data/vendor/webrat/lib/webrat/core_extensions/meta_class.rb +6 -0
- data/vendor/webrat/lib/webrat/core_extensions/nil_to_param.rb +5 -0
- data/vendor/webrat/lib/webrat/core_extensions/tcp_socket.rb +27 -0
- data/vendor/webrat/lib/webrat/mechanize.rb +74 -0
- data/vendor/webrat/lib/webrat/merb.rb +9 -0
- data/vendor/webrat/lib/webrat/merb_multipart_support.rb +27 -0
- data/vendor/webrat/lib/webrat/merb_session.rb +80 -0
- data/vendor/webrat/lib/webrat/rack.rb +24 -0
- data/vendor/webrat/lib/webrat/rack_test.rb +32 -0
- data/vendor/webrat/lib/webrat/rails.rb +105 -0
- data/vendor/webrat/lib/webrat/rspec-rails.rb +10 -0
- data/vendor/webrat/lib/webrat/selenium.rb +81 -0
- data/vendor/webrat/lib/webrat/selenium/application_server_factory.rb +40 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers.rb +5 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/base.rb +46 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/external.rb +26 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/merb.rb +50 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/rails.rb +44 -0
- data/vendor/webrat/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js +19 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/label.js +16 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlink.js +12 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
- data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
- data/vendor/webrat/lib/webrat/selenium/matchers.rb +4 -0
- data/vendor/webrat/lib/webrat/selenium/matchers/have_content.rb +66 -0
- data/vendor/webrat/lib/webrat/selenium/matchers/have_selector.rb +49 -0
- data/vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb +72 -0
- data/vendor/webrat/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
- data/vendor/webrat/lib/webrat/selenium/selenium_extensions.js +6 -0
- data/vendor/webrat/lib/webrat/selenium/selenium_rc_server.rb +84 -0
- data/vendor/webrat/lib/webrat/selenium/selenium_session.rb +248 -0
- data/vendor/webrat/lib/webrat/selenium/silence_stream.rb +18 -0
- data/vendor/webrat/lib/webrat/sinatra.rb +44 -0
- data/vendor/webrat/spec/fakes/test_session.rb +34 -0
- data/vendor/webrat/spec/integration/merb/Rakefile +35 -0
- data/vendor/webrat/spec/integration/merb/app/controllers/application.rb +2 -0
- data/vendor/webrat/spec/integration/merb/app/controllers/exceptions.rb +13 -0
- data/vendor/webrat/spec/integration/merb/app/controllers/testing.rb +27 -0
- data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
- data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
- data/vendor/webrat/spec/integration/merb/app/views/layout/application.html.erb +12 -0
- data/vendor/webrat/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
- data/vendor/webrat/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
- data/vendor/webrat/spec/integration/merb/config/environments/development.rb +15 -0
- data/vendor/webrat/spec/integration/merb/config/environments/rake.rb +11 -0
- data/vendor/webrat/spec/integration/merb/config/environments/test.rb +14 -0
- data/vendor/webrat/spec/integration/merb/config/init.rb +25 -0
- data/vendor/webrat/spec/integration/merb/config/rack.rb +11 -0
- data/vendor/webrat/spec/integration/merb/config/router.rb +34 -0
- data/vendor/webrat/spec/integration/merb/spec/spec.opts +1 -0
- data/vendor/webrat/spec/integration/merb/spec/spec_helper.rb +24 -0
- data/vendor/webrat/spec/integration/merb/spec/webrat_spec.rb +39 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
- data/vendor/webrat/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
- data/vendor/webrat/spec/integration/rack/Rakefile +5 -0
- data/vendor/webrat/spec/integration/rack/rack_app.rb +16 -0
- data/vendor/webrat/spec/integration/rack/test/test_helper.rb +20 -0
- data/vendor/webrat/spec/integration/rack/test/webrat_rack_test.rb +67 -0
- data/vendor/webrat/spec/integration/rails/Rakefile +30 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/application.rb +15 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/links_controller.rb +7 -0
- data/vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb +43 -0
- data/vendor/webrat/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
- data/vendor/webrat/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
- data/vendor/webrat/spec/integration/rails/app/helpers/links_helper.rb +2 -0
- data/vendor/webrat/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
- data/vendor/webrat/spec/integration/rails/app/views/fields/show.html.erb +9 -0
- data/vendor/webrat/spec/integration/rails/app/views/links/show.html.erb +5 -0
- data/vendor/webrat/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
- data/vendor/webrat/spec/integration/rails/app/views/webrat/buttons.html.erb +11 -0
- data/vendor/webrat/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
- data/vendor/webrat/spec/integration/rails/config/boot.rb +109 -0
- data/vendor/webrat/spec/integration/rails/config/environment.rb +12 -0
- data/vendor/webrat/spec/integration/rails/config/environments/development.rb +17 -0
- data/vendor/webrat/spec/integration/rails/config/environments/selenium.rb +22 -0
- data/vendor/webrat/spec/integration/rails/config/environments/test.rb +22 -0
- data/vendor/webrat/spec/integration/rails/config/initializers/inflections.rb +10 -0
- data/vendor/webrat/spec/integration/rails/config/initializers/mime_types.rb +5 -0
- data/vendor/webrat/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
- data/vendor/webrat/spec/integration/rails/config/locales/en.yml +5 -0
- data/vendor/webrat/spec/integration/rails/config/routes.rb +18 -0
- data/vendor/webrat/spec/integration/rails/public/404.html +30 -0
- data/vendor/webrat/spec/integration/rails/public/422.html +30 -0
- data/vendor/webrat/spec/integration/rails/public/500.html +33 -0
- data/vendor/webrat/spec/integration/rails/script/about +4 -0
- data/vendor/webrat/spec/integration/rails/script/console +3 -0
- data/vendor/webrat/spec/integration/rails/script/dbconsole +3 -0
- data/vendor/webrat/spec/integration/rails/script/destroy +3 -0
- data/vendor/webrat/spec/integration/rails/script/generate +3 -0
- data/vendor/webrat/spec/integration/rails/script/performance/benchmarker +3 -0
- data/vendor/webrat/spec/integration/rails/script/performance/profiler +3 -0
- data/vendor/webrat/spec/integration/rails/script/performance/request +3 -0
- data/vendor/webrat/spec/integration/rails/script/plugin +3 -0
- data/vendor/webrat/spec/integration/rails/script/process/inspector +3 -0
- data/vendor/webrat/spec/integration/rails/script/process/reaper +3 -0
- data/vendor/webrat/spec/integration/rails/script/process/spawner +3 -0
- data/vendor/webrat/spec/integration/rails/script/runner +3 -0
- data/vendor/webrat/spec/integration/rails/script/server +3 -0
- data/vendor/webrat/spec/integration/rails/test/integration/button_click_test.rb +80 -0
- data/vendor/webrat/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
- data/vendor/webrat/spec/integration/rails/test/integration/link_click_test.rb +27 -0
- data/vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb +97 -0
- data/vendor/webrat/spec/integration/rails/test/test_helper.rb +25 -0
- data/vendor/webrat/spec/integration/sinatra/Rakefile +5 -0
- data/vendor/webrat/spec/integration/sinatra/classic_app.rb +64 -0
- data/vendor/webrat/spec/integration/sinatra/modular_app.rb +16 -0
- data/vendor/webrat/spec/integration/sinatra/test/classic_app_test.rb +37 -0
- data/vendor/webrat/spec/integration/sinatra/test/modular_app_test.rb +18 -0
- data/vendor/webrat/spec/integration/sinatra/test/test_helper.rb +16 -0
- data/vendor/webrat/spec/private/core/configuration_spec.rb +116 -0
- data/vendor/webrat/spec/private/core/field_spec.rb +85 -0
- data/vendor/webrat/spec/private/core/link_spec.rb +24 -0
- data/vendor/webrat/spec/private/core/logging_spec.rb +10 -0
- data/vendor/webrat/spec/private/core/session_spec.rb +195 -0
- data/vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb +81 -0
- data/vendor/webrat/spec/private/merb/attaches_file_spec.rb +93 -0
- data/vendor/webrat/spec/private/merb/merb_session_spec.rb +61 -0
- data/vendor/webrat/spec/private/nokogiri_spec.rb +77 -0
- data/vendor/webrat/spec/private/rails/attaches_file_spec.rb +81 -0
- data/vendor/webrat/spec/private/rails/rails_session_spec.rb +110 -0
- data/vendor/webrat/spec/private/selenium/application_servers/rails_spec.rb +26 -0
- data/vendor/webrat/spec/public/basic_auth_spec.rb +24 -0
- data/vendor/webrat/spec/public/check_spec.rb +191 -0
- data/vendor/webrat/spec/public/choose_spec.rb +118 -0
- data/vendor/webrat/spec/public/click_area_spec.rb +106 -0
- data/vendor/webrat/spec/public/click_button_spec.rb +496 -0
- data/vendor/webrat/spec/public/click_link_spec.rb +511 -0
- data/vendor/webrat/spec/public/fill_in_spec.rb +209 -0
- data/vendor/webrat/spec/public/locators/field_by_xpath_spec.rb +19 -0
- data/vendor/webrat/spec/public/locators/field_labeled_spec.rb +172 -0
- data/vendor/webrat/spec/public/locators/field_with_id_spec.rb +16 -0
- data/vendor/webrat/spec/public/matchers/contain_spec.rb +114 -0
- data/vendor/webrat/spec/public/matchers/have_selector_spec.rb +142 -0
- data/vendor/webrat/spec/public/matchers/have_tag_spec.rb +39 -0
- data/vendor/webrat/spec/public/matchers/have_xpath_spec.rb +136 -0
- data/vendor/webrat/spec/public/reload_spec.rb +10 -0
- data/vendor/webrat/spec/public/save_and_open_spec.rb +70 -0
- data/vendor/webrat/spec/public/select_date_spec.rb +112 -0
- data/vendor/webrat/spec/public/select_datetime_spec.rb +137 -0
- data/vendor/webrat/spec/public/select_spec.rb +249 -0
- data/vendor/webrat/spec/public/select_time_spec.rb +100 -0
- data/vendor/webrat/spec/public/selenium/application_server_factory_spec.rb +49 -0
- data/vendor/webrat/spec/public/selenium/application_servers/external_spec.rb +12 -0
- data/vendor/webrat/spec/public/selenium/selenium_session_spec.rb +37 -0
- data/vendor/webrat/spec/public/set_hidden_field_spec.rb +5 -0
- data/vendor/webrat/spec/public/submit_form_spec.rb +5 -0
- data/vendor/webrat/spec/public/visit_spec.rb +58 -0
- data/vendor/webrat/spec/public/within_spec.rb +177 -0
- data/vendor/webrat/spec/rcov.opts +1 -0
- data/vendor/webrat/spec/spec.opts +2 -0
- data/vendor/webrat/spec/spec_helper.rb +50 -0
- data/vendor/webrat/vendor/selenium-server.jar +0 -0
- metadata +442 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2009, John Mettraux, jmettraux@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
# furnished to do so, subject to the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
|
12
|
+
# all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
20
|
+
# THE SOFTWARE.
|
|
21
|
+
#
|
|
22
|
+
# Made in Japan.
|
|
23
|
+
#++
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
require 'tokyocabinet' # gem install careo-tokyocabinet
|
|
27
|
+
|
|
28
|
+
require 'rufus/edo/cabcore'
|
|
29
|
+
require 'rufus/tokyo/config'
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
module Rufus::Edo
|
|
33
|
+
|
|
34
|
+
#
|
|
35
|
+
# A cabinet wired 'natively' to the libtokyocabinet.dynlib (approximatevely
|
|
36
|
+
# 2 times faster than the wiring over FFI).
|
|
37
|
+
#
|
|
38
|
+
# This class has the exact same methods as Rufus::Tokyo::Cabinet. It's faster
|
|
39
|
+
# though. The advantage of Rufus::Tokyo::Cabinet lies in that in runs on
|
|
40
|
+
# Ruby 1.8, 1.9 and JRuby.
|
|
41
|
+
#
|
|
42
|
+
# You need to have Hirabayashi-san's binding installed to use this
|
|
43
|
+
# Rufus::Edo::Cabinet :
|
|
44
|
+
#
|
|
45
|
+
# http://github.com/jmettraux/rufus-tokyo/tree/master/lib/rufus/edo
|
|
46
|
+
#
|
|
47
|
+
# You can then write code like :
|
|
48
|
+
#
|
|
49
|
+
# require 'rubygems'
|
|
50
|
+
# require 'rufus/edo' # sudo gem install rufus-tokyo
|
|
51
|
+
#
|
|
52
|
+
# db = Rufus::Edo::Cabinet.new('data.tch')
|
|
53
|
+
#
|
|
54
|
+
# db['hello'] = 'world'
|
|
55
|
+
#
|
|
56
|
+
# puts db['hello']
|
|
57
|
+
# # -> 'world'
|
|
58
|
+
#
|
|
59
|
+
# db.close
|
|
60
|
+
#
|
|
61
|
+
# This cabinet wraps hashes, b+ trees and fixed length databases. For tables,
|
|
62
|
+
# see Rufus::Edo::Table
|
|
63
|
+
#
|
|
64
|
+
class Cabinet
|
|
65
|
+
|
|
66
|
+
include Rufus::Edo::CabinetCore
|
|
67
|
+
include Rufus::Tokyo::CabinetConfig
|
|
68
|
+
|
|
69
|
+
# Initializes and open a cabinet (hash, b+ tree or fixed-size)
|
|
70
|
+
#
|
|
71
|
+
# db = Rufus::Edo::Cabinet.new('data.tch')
|
|
72
|
+
# # or
|
|
73
|
+
# db = Rufus::Edo::Cabinet.new('data', :type => :hash)
|
|
74
|
+
#
|
|
75
|
+
# 3 types are recognized :hash (.tch), :btree (.tcb) and :fixed (.tcf). For
|
|
76
|
+
# tables, see Rufus::Edo::Table
|
|
77
|
+
#
|
|
78
|
+
# == parameters
|
|
79
|
+
#
|
|
80
|
+
# There are two ways to pass parameters at the opening of a db :
|
|
81
|
+
#
|
|
82
|
+
# db = Rufus::Edo::Cabinet.new('data.tch#opts=ld#mode=w') # or
|
|
83
|
+
# db = Rufus::Edo::Cabinet.new('data.tch', :opts => 'ld', :mode => 'w')
|
|
84
|
+
#
|
|
85
|
+
# most verbose :
|
|
86
|
+
#
|
|
87
|
+
# db = Rufus::Edo::Cabinet.new(
|
|
88
|
+
# 'data', :type => :hash, :opts => 'ld', :mode => 'w')
|
|
89
|
+
#
|
|
90
|
+
# === mode
|
|
91
|
+
#
|
|
92
|
+
# * :mode a set of chars ('r'ead, 'w'rite, 'c'reate, 't'runcate,
|
|
93
|
+
# 'e' non locking, 'f' non blocking lock), default is 'wc'
|
|
94
|
+
#
|
|
95
|
+
# === other parameters
|
|
96
|
+
#
|
|
97
|
+
# 'On-memory hash database supports "bnum", "capnum", and "capsiz".
|
|
98
|
+
# On-memory tree database supports "capnum" and "capsiz".
|
|
99
|
+
# Hash database supports "mode", "bnum", "apow", "fpow", "opts",
|
|
100
|
+
# "rcnum", and "xmsiz".
|
|
101
|
+
# B+ tree database supports "mode", "lmemb", "nmemb", "bnum", "apow",
|
|
102
|
+
# "fpow", "opts", "lcnum", "ncnum", and "xmsiz".
|
|
103
|
+
# Fixed-length database supports "mode", "width", and "limsiz"'
|
|
104
|
+
#
|
|
105
|
+
# * :opts a set of chars ('l'arge, 'd'eflate, 'b'zip2, 't'cbs)
|
|
106
|
+
# (usually empty or something like 'ld' or 'lb')
|
|
107
|
+
#
|
|
108
|
+
# * :bnum number of elements of the bucket array
|
|
109
|
+
# * :apow size of record alignment by power of 2 (defaults to 4)
|
|
110
|
+
# * :fpow maximum number of elements of the free block pool by
|
|
111
|
+
# power of 2 (defaults to 10)
|
|
112
|
+
# * :mutex when set to true, makes sure only 1 thread at a time
|
|
113
|
+
# accesses the table (well, Ruby, global thread lock, ...)
|
|
114
|
+
#
|
|
115
|
+
# * :rcnum specifies the maximum number of records to be cached.
|
|
116
|
+
# If it is not more than 0, the record cache is disabled.
|
|
117
|
+
# It is disabled by default.
|
|
118
|
+
# * :lcnum specifies the maximum number of leaf nodes to be cached.
|
|
119
|
+
# If it is not more than 0, the default value is specified.
|
|
120
|
+
# The default value is 2048.
|
|
121
|
+
# * :ncnum specifies the maximum number of non-leaf nodes to be
|
|
122
|
+
# cached. If it is not more than 0, the default value is
|
|
123
|
+
# specified. The default value is 512.
|
|
124
|
+
#
|
|
125
|
+
# * :lmemb number of members in each leaf page (defaults to 128) (btree)
|
|
126
|
+
# * :nmemb number of members in each non-leaf page (default 256) (btree)
|
|
127
|
+
#
|
|
128
|
+
# * :width width of the value of each record (default 255) (fixed)
|
|
129
|
+
# * :limsiz limit size of the database file (default 268_435_456) (fixed)
|
|
130
|
+
#
|
|
131
|
+
# * :xmsiz specifies the size of the extra mapped memory. If it is
|
|
132
|
+
# not more than 0, the extra mapped memory is disabled.
|
|
133
|
+
# The default size is 67108864.
|
|
134
|
+
#
|
|
135
|
+
# * :capnum specifies the capacity number of records.
|
|
136
|
+
# * :capsiz specifies the capacity size of using memory.
|
|
137
|
+
#
|
|
138
|
+
# * :dfunit unit step number. If it is not more than 0,
|
|
139
|
+
# the auto defragmentation is disabled. (Since TC 1.4.21)
|
|
140
|
+
#
|
|
141
|
+
#
|
|
142
|
+
# = NOTE :
|
|
143
|
+
#
|
|
144
|
+
# On reopening a file, Cabinet will tend to stick to the parameters as
|
|
145
|
+
# set when the file was opened. To change that, have a look at the
|
|
146
|
+
# man pages of the various command line tools coming with Tokyo Cabinet.
|
|
147
|
+
#
|
|
148
|
+
def initialize (path, params={})
|
|
149
|
+
|
|
150
|
+
conf = determine_conf(path, params)
|
|
151
|
+
|
|
152
|
+
klass = {
|
|
153
|
+
:abstract => defined?(TokyoCabinet::ADB) ?
|
|
154
|
+
TokyoCabinet::ADB : TokyoCabinet::HDB,
|
|
155
|
+
:hash => TokyoCabinet::HDB,
|
|
156
|
+
:btree => TokyoCabinet::BDB,
|
|
157
|
+
:fixed => TokyoCabinet::FDB
|
|
158
|
+
}[conf[:type]]
|
|
159
|
+
|
|
160
|
+
@db = klass.new
|
|
161
|
+
|
|
162
|
+
#
|
|
163
|
+
# tune
|
|
164
|
+
|
|
165
|
+
tuning_parameters = case conf[:type]
|
|
166
|
+
when :abstract then nil
|
|
167
|
+
when :hash then [ :bnum, :apow, :fpow, :opts ]
|
|
168
|
+
when :btree then [ :lmemb, :nmemb, :bnum, :apow, :fpow, :opts ]
|
|
169
|
+
when :fixed then [ :bnum, :width, :limsiz ]
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
@db.tune(*tuning_parameters.collect { |o| conf[o] }) \
|
|
173
|
+
if tuning_parameters
|
|
174
|
+
|
|
175
|
+
#
|
|
176
|
+
# set cache
|
|
177
|
+
|
|
178
|
+
cache_values = case conf[:type]
|
|
179
|
+
when :abstract then nil
|
|
180
|
+
when :hash then [ :rcnum ]
|
|
181
|
+
when :btree then [ :lcnum, :ncnum ]
|
|
182
|
+
when :fixed then nil
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
@db.setcache(*cache_values.collect { |o| conf[o] }) \
|
|
186
|
+
if cache_values
|
|
187
|
+
|
|
188
|
+
#
|
|
189
|
+
# set xmsiz
|
|
190
|
+
|
|
191
|
+
@db.setxmsiz(conf[:xmsiz]) \
|
|
192
|
+
unless [ :abstract, :fixed ].include?(conf[:type])
|
|
193
|
+
|
|
194
|
+
#
|
|
195
|
+
# set dfunit (TC > 1.4.21)
|
|
196
|
+
|
|
197
|
+
@db.setdfunit(conf[:dfunit]) \
|
|
198
|
+
if @db.respond_to?(:setdfunit)
|
|
199
|
+
|
|
200
|
+
#
|
|
201
|
+
# open
|
|
202
|
+
|
|
203
|
+
@path = conf[:path]
|
|
204
|
+
|
|
205
|
+
if @db.class.name == 'TokyoCabinet::ADB'
|
|
206
|
+
@db.open(@path) || raise_error
|
|
207
|
+
else
|
|
208
|
+
@db.open(@path, conf[:mode]) || raise_error
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
#
|
|
212
|
+
# default
|
|
213
|
+
|
|
214
|
+
self.default = params[:default]
|
|
215
|
+
@default_proc ||= params[:default_proc]
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2009, John Mettraux, jmettraux@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
# furnished to do so, subject to the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
|
12
|
+
# all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
20
|
+
# THE SOFTWARE.
|
|
21
|
+
#
|
|
22
|
+
# Made in Japan.
|
|
23
|
+
#++
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
require 'tokyocabinet'
|
|
27
|
+
|
|
28
|
+
require 'rufus/edo/error'
|
|
29
|
+
require 'rufus/edo/tabcore'
|
|
30
|
+
require 'rufus/tokyo/config'
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
module Rufus::Edo
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# Rufus::Edo::Table wraps Hirabayashi-san's Ruby bindings for Tokyo Cabinet
|
|
37
|
+
# tables.
|
|
38
|
+
#
|
|
39
|
+
# This class has the exact same methods as Rufus::Tokyo::Table. It's faster
|
|
40
|
+
# though. The advantage of Rufus::Tokyo::Table lies in that in runs on
|
|
41
|
+
# Ruby 1.8, 1.9 and JRuby.
|
|
42
|
+
#
|
|
43
|
+
# You need to have Hirabayashi-san's binding installed to use this
|
|
44
|
+
# Rufus::Edo::Table :
|
|
45
|
+
#
|
|
46
|
+
# http://github.com/jmettraux/rufus-tokyo/tree/master/lib/rufus/edo
|
|
47
|
+
#
|
|
48
|
+
# Example usage :
|
|
49
|
+
#
|
|
50
|
+
# require 'rufus/edo'
|
|
51
|
+
# db = Rufus::Edo::Table.new('data.tct')
|
|
52
|
+
# db['customer1'] = { 'name' => 'Taira no Kyomori', 'age' => '55' }
|
|
53
|
+
# # ...
|
|
54
|
+
# db.close
|
|
55
|
+
#
|
|
56
|
+
class Table
|
|
57
|
+
|
|
58
|
+
include Rufus::Tokyo::CabinetConfig
|
|
59
|
+
include Rufus::Edo::TableCore
|
|
60
|
+
|
|
61
|
+
# Initializes and open a table.
|
|
62
|
+
#
|
|
63
|
+
# db = Rufus::Edo::Table.new('data.tct')
|
|
64
|
+
# # or
|
|
65
|
+
# db = Rufus::Edo::Table.new('data', :type => :table)
|
|
66
|
+
# # or
|
|
67
|
+
# db = Rufus::Edo::Table.new('data')
|
|
68
|
+
#
|
|
69
|
+
# == parameters
|
|
70
|
+
#
|
|
71
|
+
# There are two ways to pass parameters at the opening of a db :
|
|
72
|
+
#
|
|
73
|
+
# db = Rufus::Edo::Table.new('data.tct#opts=ld#mode=w') # or
|
|
74
|
+
# db = Rufus::Edo::Table.new('data.tct', :opts => 'ld', :mode => 'w')
|
|
75
|
+
#
|
|
76
|
+
# === mode
|
|
77
|
+
#
|
|
78
|
+
# * :mode a set of chars ('r'ead, 'w'rite, 'c'reate, 't'runcate,
|
|
79
|
+
# 'e' non locking, 'f' non blocking lock), default is 'wc'
|
|
80
|
+
#
|
|
81
|
+
# === other parameters
|
|
82
|
+
#
|
|
83
|
+
# * :opts a set of chars ('l'arge, 'd'eflate, 'b'zip2, 't'cbs)
|
|
84
|
+
# (usually empty or something like 'ld' or 'lb')
|
|
85
|
+
#
|
|
86
|
+
# * :bnum number of elements of the bucket array
|
|
87
|
+
# * :apow size of record alignment by power of 2 (defaults to 4)
|
|
88
|
+
# * :fpow maximum number of elements of the free block pool by
|
|
89
|
+
# power of 2 (defaults to 10)
|
|
90
|
+
#
|
|
91
|
+
# * :rcnum specifies the maximum number of records to be cached.
|
|
92
|
+
# If it is not more than 0, the record cache is disabled.
|
|
93
|
+
# It is disabled by default.
|
|
94
|
+
# * :lcnum specifies the maximum number of leaf nodes to be cached.
|
|
95
|
+
# If it is not more than 0, the default value is specified.
|
|
96
|
+
# The default value is 2048.
|
|
97
|
+
# * :ncnum specifies the maximum number of non-leaf nodes to be
|
|
98
|
+
# cached. If it is not more than 0, the default value is
|
|
99
|
+
# specified. The default value is 512.
|
|
100
|
+
#
|
|
101
|
+
# * :dfunit unit step number. If it is not more than 0,
|
|
102
|
+
# the auto defragmentation is disabled. (Since TC 1.4.21)
|
|
103
|
+
#
|
|
104
|
+
# = NOTE :
|
|
105
|
+
#
|
|
106
|
+
# On reopening a file, Cabinet will tend to stick to the parameters as
|
|
107
|
+
# set when the file was opened. To change that, have a look at the
|
|
108
|
+
# man pages of the various command line tools coming with Tokyo Cabinet.
|
|
109
|
+
#
|
|
110
|
+
def initialize (path, params={})
|
|
111
|
+
|
|
112
|
+
conf = determine_conf(path, params, :table)
|
|
113
|
+
|
|
114
|
+
@db = TokyoCabinet::TDB.new
|
|
115
|
+
|
|
116
|
+
#
|
|
117
|
+
# tune
|
|
118
|
+
|
|
119
|
+
@db.tune(conf[:bnum], conf[:apow], conf[:fpow], conf[:opts])
|
|
120
|
+
|
|
121
|
+
#
|
|
122
|
+
# set cache
|
|
123
|
+
|
|
124
|
+
@db.setcache(conf[:rcnum], conf[:lcnum], conf[:ncnum])
|
|
125
|
+
|
|
126
|
+
#
|
|
127
|
+
# set xmsiz
|
|
128
|
+
|
|
129
|
+
@db.setxmsiz(conf[:xmsiz])
|
|
130
|
+
|
|
131
|
+
#
|
|
132
|
+
# set dfunit (TC > 1.4.21)
|
|
133
|
+
|
|
134
|
+
@db.setdfunit(conf[:dfunit]) if @db.respond_to?(:setdfunit)
|
|
135
|
+
|
|
136
|
+
#
|
|
137
|
+
# open
|
|
138
|
+
|
|
139
|
+
@path = conf[:path]
|
|
140
|
+
|
|
141
|
+
@db.open(@path, conf[:mode]) || raise_error
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Returns the path to this table.
|
|
145
|
+
#
|
|
146
|
+
def path
|
|
147
|
+
|
|
148
|
+
@path
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
protected
|
|
152
|
+
|
|
153
|
+
def table_query_class #:nodoc#
|
|
154
|
+
|
|
155
|
+
TokyoCabinet::TDBQRY
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2009, John Mettraux, jmettraux@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
# furnished to do so, subject to the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
|
12
|
+
# all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
20
|
+
# THE SOFTWARE.
|
|
21
|
+
#
|
|
22
|
+
# Made in Japan.
|
|
23
|
+
#++
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
module Rufus
|
|
27
|
+
module Edo
|
|
28
|
+
|
|
29
|
+
#
|
|
30
|
+
# A common error class
|
|
31
|
+
#
|
|
32
|
+
class EdoError < RuntimeError; end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2009, John Mettraux, jmettraux@gmail.com
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
# furnished to do so, subject to the following conditions:
|
|
10
|
+
#
|
|
11
|
+
# The above copyright notice and this permission notice shall be included in
|
|
12
|
+
# all copies or substantial portions of the Software.
|
|
13
|
+
#
|
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
20
|
+
# THE SOFTWARE.
|
|
21
|
+
#
|
|
22
|
+
# Made in Japan.
|
|
23
|
+
#++
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
require 'tokyotyrant' # gem install careo-tokyotyrant
|
|
27
|
+
|
|
28
|
+
require 'rufus/edo/error'
|
|
29
|
+
require 'rufus/edo/cabcore'
|
|
30
|
+
require 'rufus/tokyo/ttcommons'
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
module Rufus::Edo
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# Connecting to a 'classic' Tokyo Tyrant server remotely
|
|
37
|
+
#
|
|
38
|
+
# require 'rufus/edo/ntyrant'
|
|
39
|
+
# t = Rufus::Edo::NetTyrant.new('127.0.0.1', 44001)
|
|
40
|
+
# t['toto'] = 'blah blah'
|
|
41
|
+
# t['toto'] # => 'blah blah'
|
|
42
|
+
#
|
|
43
|
+
class NetTyrant
|
|
44
|
+
|
|
45
|
+
include Rufus::Edo::CabinetCore
|
|
46
|
+
include Rufus::Tokyo::TyrantCommons
|
|
47
|
+
|
|
48
|
+
attr_reader :host, :port
|
|
49
|
+
|
|
50
|
+
# Connects to a given Tokyo Tyrant server.
|
|
51
|
+
#
|
|
52
|
+
# Note that if the port is not specified, the host parameter is expected
|
|
53
|
+
# to hold the path to a unix socket (not a TCP socket).
|
|
54
|
+
#
|
|
55
|
+
# (You can start a unix socket listening Tyrant with :
|
|
56
|
+
#
|
|
57
|
+
# ttserver -host /tmp/tyrant_socket -port 0 data.tch
|
|
58
|
+
#
|
|
59
|
+
# and then connect to it with rufus-tokyo via :
|
|
60
|
+
#
|
|
61
|
+
# require 'rufus/edo/ntyrant'
|
|
62
|
+
# db = Rufus::Edo::NetTyrant.new('/tmp/tyrant_socket')
|
|
63
|
+
# db['a'] = 'alpha'
|
|
64
|
+
# db.close
|
|
65
|
+
# )
|
|
66
|
+
#
|
|
67
|
+
# To connect to a classic TCP bound Tyrant (port 44001) :
|
|
68
|
+
#
|
|
69
|
+
# t = Rufus::Edo::NetTyrant.new('127.0.0.1', 44001)
|
|
70
|
+
#
|
|
71
|
+
def initialize (host, port=0)
|
|
72
|
+
|
|
73
|
+
@host = host
|
|
74
|
+
@port = port
|
|
75
|
+
|
|
76
|
+
@db = TokyoTyrant::RDB.new
|
|
77
|
+
@db.open(host, port) || raise_error
|
|
78
|
+
|
|
79
|
+
if self.stat['type'] == 'table'
|
|
80
|
+
|
|
81
|
+
@db.close
|
|
82
|
+
|
|
83
|
+
raise ArgumentError.new(
|
|
84
|
+
"tyrant at #{host}:#{port} is a table, " +
|
|
85
|
+
"use Rufus::Edo::NetTyrantTable instead to access it.")
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Returns the 'weight' of the db (in bytes)
|
|
90
|
+
#
|
|
91
|
+
def weight
|
|
92
|
+
|
|
93
|
+
self.stat['size']
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# isn't that a bit dangerous ? it creates a file on the server...
|
|
97
|
+
#
|
|
98
|
+
# DISABLED.
|
|
99
|
+
#
|
|
100
|
+
def copy (target_path)
|
|
101
|
+
|
|
102
|
+
#@db.copy(target_path)
|
|
103
|
+
raise 'not allowed to create files on the server'
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Copies the current cabinet to a new file.
|
|
107
|
+
#
|
|
108
|
+
# Does it by copying each entry afresh to the target file. Spares some
|
|
109
|
+
# space, hence the 'compact' label...
|
|
110
|
+
#
|
|
111
|
+
def compact_copy (target_path)
|
|
112
|
+
|
|
113
|
+
raise NotImplementedError.new('not creating files locally')
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Calls a lua embedded function
|
|
117
|
+
# (http://tokyocabinet.sourceforge.net/tyrantdoc/#luaext)
|
|
118
|
+
#
|
|
119
|
+
# Options are :global_locking and :record_locking
|
|
120
|
+
#
|
|
121
|
+
# Returns the return value of the called function.
|
|
122
|
+
#
|
|
123
|
+
# Nil is returned in case of failure.
|
|
124
|
+
#
|
|
125
|
+
def ext (func_name, key, value, opts={})
|
|
126
|
+
|
|
127
|
+
@db.ext(func_name.to_s, key.to_s, value.to_s, compute_ext_opts(opts))
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
protected
|
|
131
|
+
|
|
132
|
+
def do_stat #:nodoc#
|
|
133
|
+
@db.stat
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|