kbaum-webrat 0.5.1
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/.document +4 -0
- data/.gitignore +15 -0
- data/History.txt +406 -0
- data/MIT-LICENSE.txt +19 -0
- data/README.rdoc +85 -0
- data/Rakefile +186 -0
- data/VERSION +1 -0
- data/install.rb +1 -0
- data/lib/webrat.rb +18 -0
- data/lib/webrat/adapters/mechanize.rb +78 -0
- data/lib/webrat/adapters/merb.rb +11 -0
- data/lib/webrat/adapters/rack.rb +25 -0
- data/lib/webrat/adapters/rails.rb +96 -0
- data/lib/webrat/adapters/sinatra.rb +9 -0
- data/lib/webrat/core.rb +13 -0
- data/lib/webrat/core/configuration.rb +96 -0
- data/lib/webrat/core/elements/area.rb +31 -0
- data/lib/webrat/core/elements/element.rb +33 -0
- data/lib/webrat/core/elements/field.rb +487 -0
- data/lib/webrat/core/elements/form.rb +103 -0
- data/lib/webrat/core/elements/label.rb +31 -0
- data/lib/webrat/core/elements/link.rb +93 -0
- data/lib/webrat/core/elements/select_option.rb +48 -0
- data/lib/webrat/core/locators.rb +20 -0
- data/lib/webrat/core/locators/area_locator.rb +38 -0
- data/lib/webrat/core/locators/button_locator.rb +54 -0
- data/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
- data/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
- data/lib/webrat/core/locators/field_locator.rb +25 -0
- data/lib/webrat/core/locators/field_named_locator.rb +41 -0
- data/lib/webrat/core/locators/form_locator.rb +19 -0
- data/lib/webrat/core/locators/label_locator.rb +34 -0
- data/lib/webrat/core/locators/link_locator.rb +74 -0
- data/lib/webrat/core/locators/locator.rb +20 -0
- data/lib/webrat/core/locators/select_option_locator.rb +59 -0
- data/lib/webrat/core/logging.rb +23 -0
- data/lib/webrat/core/matchers.rb +4 -0
- data/lib/webrat/core/matchers/have_content.rb +68 -0
- data/lib/webrat/core/matchers/have_selector.rb +74 -0
- data/lib/webrat/core/matchers/have_tag.rb +21 -0
- data/lib/webrat/core/matchers/have_xpath.rb +122 -0
- data/lib/webrat/core/methods.rb +64 -0
- data/lib/webrat/core/mime.rb +18 -0
- data/lib/webrat/core/save_and_open_page.rb +48 -0
- data/lib/webrat/core/scope.rb +365 -0
- data/lib/webrat/core/session.rb +307 -0
- data/lib/webrat/core/xml.rb +72 -0
- data/lib/webrat/core_extensions/blank.rb +58 -0
- data/lib/webrat/core_extensions/deprecate.rb +8 -0
- data/lib/webrat/core_extensions/detect_mapped.rb +12 -0
- data/lib/webrat/core_extensions/meta_class.rb +6 -0
- data/lib/webrat/core_extensions/nil_to_param.rb +5 -0
- data/lib/webrat/core_extensions/tcp_socket.rb +27 -0
- data/lib/webrat/integrations/merb.rb +10 -0
- data/lib/webrat/integrations/rails.rb +9 -0
- data/lib/webrat/integrations/rspec-rails.rb +10 -0
- data/lib/webrat/integrations/selenium.rb +11 -0
- data/lib/webrat/merb.rb +9 -0
- data/lib/webrat/rspec-rails.rb +2 -0
- data/lib/webrat/selenium.rb +70 -0
- data/lib/webrat/selenium/application_server_factory.rb +40 -0
- data/lib/webrat/selenium/application_servers.rb +5 -0
- data/lib/webrat/selenium/application_servers/base.rb +46 -0
- data/lib/webrat/selenium/application_servers/external.rb +26 -0
- data/lib/webrat/selenium/application_servers/merb.rb +50 -0
- data/lib/webrat/selenium/application_servers/rails.rb +44 -0
- data/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
- data/lib/webrat/selenium/location_strategy_javascript/button.js +19 -0
- data/lib/webrat/selenium/location_strategy_javascript/label.js +24 -0
- data/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +12 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
- data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
- data/lib/webrat/selenium/matchers.rb +4 -0
- data/lib/webrat/selenium/matchers/have_content.rb +66 -0
- data/lib/webrat/selenium/matchers/have_selector.rb +74 -0
- data/lib/webrat/selenium/matchers/have_tag.rb +49 -0
- data/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
- data/lib/webrat/selenium/selenium_extensions.js +6 -0
- data/lib/webrat/selenium/selenium_rc_server.rb +86 -0
- data/lib/webrat/selenium/selenium_session.rb +250 -0
- data/lib/webrat/selenium/silence_stream.rb +18 -0
- data/selenium_rc_server.patch +20 -0
- data/spec/fakes/test_adapter.rb +37 -0
- data/spec/integration/mechanize/Rakefile +7 -0
- data/spec/integration/mechanize/config.ru +2 -0
- data/spec/integration/mechanize/sample_app.rb +20 -0
- data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -0
- data/spec/integration/mechanize/spec/spec_helper.rb +27 -0
- data/spec/integration/merb/.gitignore +21 -0
- data/spec/integration/merb/Rakefile +35 -0
- data/spec/integration/merb/app/controllers/application.rb +2 -0
- data/spec/integration/merb/app/controllers/exceptions.rb +13 -0
- data/spec/integration/merb/app/controllers/testing.rb +27 -0
- data/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
- data/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
- data/spec/integration/merb/app/views/layout/application.html.erb +12 -0
- data/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
- data/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
- data/spec/integration/merb/config/environments/development.rb +15 -0
- data/spec/integration/merb/config/environments/rake.rb +11 -0
- data/spec/integration/merb/config/environments/test.rb +14 -0
- data/spec/integration/merb/config/init.rb +25 -0
- data/spec/integration/merb/config/rack.rb +11 -0
- data/spec/integration/merb/config/router.rb +34 -0
- data/spec/integration/merb/spec/spec.opts +1 -0
- data/spec/integration/merb/spec/spec_helper.rb +26 -0
- data/spec/integration/merb/spec/webrat_spec.rb +39 -0
- data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
- data/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
- data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
- data/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
- data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
- data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
- data/spec/integration/rack/Rakefile +5 -0
- data/spec/integration/rack/app.rb +89 -0
- data/spec/integration/rack/test/helper.rb +21 -0
- data/spec/integration/rack/test/webrat_rack_test.rb +73 -0
- data/spec/integration/rails/.gitignore +3 -0
- data/spec/integration/rails/Rakefile +30 -0
- data/spec/integration/rails/app/controllers/application.rb +15 -0
- data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
- data/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
- data/spec/integration/rails/app/controllers/links_controller.rb +7 -0
- data/spec/integration/rails/app/controllers/webrat_controller.rb +43 -0
- data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
- data/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
- data/spec/integration/rails/app/helpers/links_helper.rb +2 -0
- data/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
- data/spec/integration/rails/app/views/fields/show.html.erb +9 -0
- data/spec/integration/rails/app/views/links/show.html.erb +5 -0
- data/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
- data/spec/integration/rails/app/views/webrat/buttons.html.erb +11 -0
- data/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
- data/spec/integration/rails/config/boot.rb +109 -0
- data/spec/integration/rails/config/environment.rb +12 -0
- data/spec/integration/rails/config/environments/development.rb +17 -0
- data/spec/integration/rails/config/environments/selenium.rb +22 -0
- data/spec/integration/rails/config/environments/test.rb +22 -0
- data/spec/integration/rails/config/initializers/inflections.rb +10 -0
- data/spec/integration/rails/config/initializers/mime_types.rb +5 -0
- data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
- data/spec/integration/rails/config/locales/en.yml +5 -0
- data/spec/integration/rails/config/routes.rb +18 -0
- data/spec/integration/rails/public/404.html +30 -0
- data/spec/integration/rails/public/422.html +30 -0
- data/spec/integration/rails/public/500.html +33 -0
- data/spec/integration/rails/script/about +4 -0
- data/spec/integration/rails/script/console +3 -0
- data/spec/integration/rails/script/dbconsole +3 -0
- data/spec/integration/rails/script/destroy +3 -0
- data/spec/integration/rails/script/generate +3 -0
- data/spec/integration/rails/script/performance/benchmarker +3 -0
- data/spec/integration/rails/script/performance/profiler +3 -0
- data/spec/integration/rails/script/performance/request +3 -0
- data/spec/integration/rails/script/plugin +3 -0
- data/spec/integration/rails/script/process/inspector +3 -0
- data/spec/integration/rails/script/process/reaper +3 -0
- data/spec/integration/rails/script/process/spawner +3 -0
- data/spec/integration/rails/script/runner +3 -0
- data/spec/integration/rails/script/server +3 -0
- data/spec/integration/rails/test/integration/button_click_test.rb +80 -0
- data/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
- data/spec/integration/rails/test/integration/link_click_test.rb +27 -0
- data/spec/integration/rails/test/integration/webrat_test.rb +97 -0
- data/spec/integration/rails/test/test_helper.rb +26 -0
- data/spec/integration/sinatra/Rakefile +5 -0
- data/spec/integration/sinatra/classic_app.rb +64 -0
- data/spec/integration/sinatra/modular_app.rb +16 -0
- data/spec/integration/sinatra/test/classic_app_test.rb +37 -0
- data/spec/integration/sinatra/test/modular_app_test.rb +18 -0
- data/spec/integration/sinatra/test/test_helper.rb +17 -0
- data/spec/private/core/configuration_spec.rb +87 -0
- data/spec/private/core/field_spec.rb +85 -0
- data/spec/private/core/link_spec.rb +24 -0
- data/spec/private/core/session_spec.rb +200 -0
- data/spec/private/mechanize/mechanize_adapter_spec.rb +73 -0
- data/spec/private/nokogiri_spec.rb +77 -0
- data/spec/private/rails/attaches_file_spec.rb +81 -0
- data/spec/private/rails/rails_adapter_spec.rb +110 -0
- data/spec/private/selenium/application_servers/rails_spec.rb +26 -0
- data/spec/public/basic_auth_spec.rb +24 -0
- data/spec/public/check_spec.rb +191 -0
- data/spec/public/choose_spec.rb +118 -0
- data/spec/public/click_area_spec.rb +106 -0
- data/spec/public/click_button_spec.rb +494 -0
- data/spec/public/click_link_spec.rb +511 -0
- data/spec/public/fill_in_spec.rb +224 -0
- data/spec/public/locators/field_by_xpath_spec.rb +19 -0
- data/spec/public/locators/field_labeled_spec.rb +172 -0
- data/spec/public/locators/field_with_id_spec.rb +16 -0
- data/spec/public/matchers/contain_spec.rb +114 -0
- data/spec/public/matchers/have_selector_spec.rb +146 -0
- data/spec/public/matchers/have_tag_spec.rb +39 -0
- data/spec/public/matchers/have_xpath_spec.rb +136 -0
- data/spec/public/reload_spec.rb +10 -0
- data/spec/public/save_and_open_spec.rb +70 -0
- data/spec/public/select_date_spec.rb +112 -0
- data/spec/public/select_datetime_spec.rb +137 -0
- data/spec/public/select_spec.rb +455 -0
- data/spec/public/select_time_spec.rb +100 -0
- data/spec/public/selenium/application_server_factory_spec.rb +49 -0
- data/spec/public/selenium/application_servers/external_spec.rb +12 -0
- data/spec/public/selenium/selenium_session_spec.rb +37 -0
- data/spec/public/set_hidden_field_spec.rb +5 -0
- data/spec/public/submit_form_spec.rb +5 -0
- data/spec/public/visit_spec.rb +58 -0
- data/spec/public/within_spec.rb +177 -0
- data/spec/rcov.opts +1 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +54 -0
- data/vendor/selenium-server.jar +0 -0
- data/webrat.gemspec +356 -0
- metadata +410 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Webrat
|
|
2
|
+
module Selenium
|
|
3
|
+
module SilenceStream
|
|
4
|
+
# active_support already defines silence_stream, no need to do that again if it's already present.
|
|
5
|
+
# http://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/kernel/reporting.rb
|
|
6
|
+
unless Kernel.respond_to?(:silence_stream)
|
|
7
|
+
def silence_stream(stream)
|
|
8
|
+
old_stream = stream.dup
|
|
9
|
+
stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
|
|
10
|
+
stream.sync = true
|
|
11
|
+
yield
|
|
12
|
+
ensure
|
|
13
|
+
stream.reopen(old_stream)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
--- old_selenium_rc_server.rb 2009-07-06 14:11:57.000000000 -0400
|
|
2
|
+
+++ selenium_rc_server.rb 2009-07-06 14:12:18.000000000 -0400
|
|
3
|
+
@@ -30,7 +30,7 @@
|
|
4
|
+
def remote_control
|
|
5
|
+
return @remote_control if @remote_control
|
|
6
|
+
|
|
7
|
+
- @remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, 5)
|
|
8
|
+
+ @remote_control = ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, :timeout => 5)
|
|
9
|
+
@remote_control.jar_file = jar_path
|
|
10
|
+
|
|
11
|
+
return @remote_control
|
|
12
|
+
@@ -70,7 +70,7 @@
|
|
13
|
+
|
|
14
|
+
def stop
|
|
15
|
+
silence_stream(STDOUT) do
|
|
16
|
+
- ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, 5).stop
|
|
17
|
+
+ ::Selenium::RemoteControl::RemoteControl.new("0.0.0.0", Webrat.configuration.selenium_server_port, :timeout => 5).stop
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Webrat #:nodoc:
|
|
2
|
+
def self.adapter_class #:nodoc:
|
|
3
|
+
TestAdapter
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
class TestAdapter #:nodoc:
|
|
7
|
+
attr_accessor :response_body
|
|
8
|
+
attr_writer :response_code
|
|
9
|
+
|
|
10
|
+
def initialize(*args)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def doc_root
|
|
14
|
+
File.expand_path(File.join(".", "public"))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def response
|
|
18
|
+
@response ||= Object.new
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def response_code
|
|
22
|
+
@response_code || 200
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def get(url, data, headers = nil)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def post(url, data, headers = nil)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def put(url, data, headers = nil)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def delete(url, data, headers = nil)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "sinatra/base"
|
|
3
|
+
|
|
4
|
+
class SampleApp < Sinatra::Default
|
|
5
|
+
get "/" do
|
|
6
|
+
"Hello World"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
get "/internal_redirect" do
|
|
10
|
+
redirect URI.join(request.url, "redirected").to_s
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
get "/external_redirect" do
|
|
14
|
+
redirect "http://example.tst/"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
get "/redirected" do
|
|
18
|
+
"Redirected"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
+
|
|
3
|
+
describe "Webrat's Mechanize mode" do
|
|
4
|
+
it "should work" do
|
|
5
|
+
response = visit("http://localhost:9292/")
|
|
6
|
+
response.should contain("Hello World")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should follow redirects" do
|
|
10
|
+
response = visit("http://localhost:9292/internal_redirect")
|
|
11
|
+
response.should contain("Redirected")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should follow links"
|
|
15
|
+
it "should submit forms"
|
|
16
|
+
it "should not follow external redirects" do
|
|
17
|
+
pending do
|
|
18
|
+
response = visit("http://localhost:9292/external_redirect")
|
|
19
|
+
response.should contain("Foo")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "spec"
|
|
3
|
+
|
|
4
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + "/../../../../lib"
|
|
5
|
+
require "webrat"
|
|
6
|
+
|
|
7
|
+
Webrat.configure do |config|
|
|
8
|
+
config.mode = :mechanize
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Spec::Runner.configure do |config|
|
|
12
|
+
config.include Webrat::Methods
|
|
13
|
+
config.include Webrat::Matchers
|
|
14
|
+
|
|
15
|
+
config.before :suite do
|
|
16
|
+
if File.exists?("rack.pid")
|
|
17
|
+
Process.kill("TERM", File.read("rack.pid").to_i)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
system "rackup --daemonize --pid rack.pid config.ru"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
config.after :suite do
|
|
24
|
+
Process.kill("TERM", File.read("rack.pid").to_i)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.DS_Store
|
|
2
|
+
log/*
|
|
3
|
+
tmp/*
|
|
4
|
+
TAGS
|
|
5
|
+
*~
|
|
6
|
+
.#*
|
|
7
|
+
schema/schema.rb
|
|
8
|
+
schema/*_structure.sql
|
|
9
|
+
schema/*.sqlite3
|
|
10
|
+
schema/*.sqlite
|
|
11
|
+
schema/*.db
|
|
12
|
+
*.sqlite
|
|
13
|
+
*.sqlite3
|
|
14
|
+
*.db
|
|
15
|
+
src/*
|
|
16
|
+
.hgignore
|
|
17
|
+
.hg/*
|
|
18
|
+
.svn/*
|
|
19
|
+
gems/gems/*
|
|
20
|
+
gems/specifications/*
|
|
21
|
+
merb_profile_results
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake/rdoctask'
|
|
3
|
+
|
|
4
|
+
require 'merb-core'
|
|
5
|
+
require 'merb-core/tasks/merb'
|
|
6
|
+
|
|
7
|
+
include FileUtils
|
|
8
|
+
|
|
9
|
+
# Load the basic runtime dependencies; this will include
|
|
10
|
+
# any plugins and therefore plugin rake tasks.
|
|
11
|
+
init_env = ENV['MERB_ENV'] || 'rake'
|
|
12
|
+
Merb.load_dependencies(:environment => init_env)
|
|
13
|
+
|
|
14
|
+
# Get Merb plugins and dependencies
|
|
15
|
+
Merb::Plugins.rakefiles.each { |r| require r }
|
|
16
|
+
|
|
17
|
+
# Load any app level custom rakefile extensions from lib/tasks
|
|
18
|
+
tasks_path = File.join(File.dirname(__FILE__), "lib", "tasks")
|
|
19
|
+
rake_files = Dir["#{tasks_path}/*.rake"]
|
|
20
|
+
rake_files.each{|rake_file| load rake_file }
|
|
21
|
+
|
|
22
|
+
desc "Start runner environment"
|
|
23
|
+
task :merb_env do
|
|
24
|
+
Merb.start_environment(:environment => init_env, :adapter => 'runner')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
require 'spec/rake/spectask'
|
|
28
|
+
require 'merb-core/test/tasks/spectasks'
|
|
29
|
+
desc 'Default: run spec examples'
|
|
30
|
+
task :default => 'spec'
|
|
31
|
+
|
|
32
|
+
##############################################################################
|
|
33
|
+
# ADD YOUR CUSTOM TASKS IN /lib/tasks
|
|
34
|
+
# NAME YOUR RAKE FILES file_name.rake
|
|
35
|
+
##############################################################################
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
class Testing < Application
|
|
2
|
+
|
|
3
|
+
def show_form
|
|
4
|
+
render
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def upload
|
|
8
|
+
case request.method
|
|
9
|
+
when :get then render
|
|
10
|
+
when :post then
|
|
11
|
+
uploaded_file = params[:uploaded_file]
|
|
12
|
+
render [uploaded_file[:filename], uploaded_file[:tempfile].class.name].inspect
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def submit_form
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def internal_redirect
|
|
20
|
+
redirect "/"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def external_redirect
|
|
24
|
+
redirect "http://google.com"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<div id="container">
|
|
2
|
+
<div id="header-container">
|
|
3
|
+
<img src="/images/merb.jpg" />
|
|
4
|
+
<!-- <h1>Mongrel + Erb</h1> -->
|
|
5
|
+
<h2>pocket rocket web framework</h2>
|
|
6
|
+
<hr />
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<div id="left-container">
|
|
10
|
+
<h3>Exception:</h3>
|
|
11
|
+
<p><%= request.exceptions.first.message %></p>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div id="main-container">
|
|
15
|
+
<h3>Why am I seeing this page?</h3>
|
|
16
|
+
<p>Merb couldn't find an appropriate content_type to return,
|
|
17
|
+
based on what you said was available via provides() and
|
|
18
|
+
what the client requested.</p>
|
|
19
|
+
|
|
20
|
+
<h3>How to add a mime-type</h3>
|
|
21
|
+
<pre><code>
|
|
22
|
+
Merb.add_mime_type :pdf, :to_pdf, %w[application/pdf], "Content-Encoding" => "gzip"
|
|
23
|
+
</code></pre>
|
|
24
|
+
<h3>What this means is:</h3>
|
|
25
|
+
<ul>
|
|
26
|
+
<li>Add a mime-type for :pdf</li>
|
|
27
|
+
<li>Register the method for converting objects to PDF as <code>#to_pdf</code>.</li>
|
|
28
|
+
<li>Register the incoming mime-type "Accept" header as <code>application/pdf</code>.</li>
|
|
29
|
+
<li>Specify a new header for PDF types so it will set <code>Content-Encoding</code> to gzip.</li>
|
|
30
|
+
</ul>
|
|
31
|
+
|
|
32
|
+
<h3>You can then do:</h3>
|
|
33
|
+
<pre><code>
|
|
34
|
+
class Foo < Application
|
|
35
|
+
provides :pdf
|
|
36
|
+
end
|
|
37
|
+
</code></pre>
|
|
38
|
+
|
|
39
|
+
<h3>Where can I find help?</h3>
|
|
40
|
+
<p>If you have any questions or if you can't figure something out, please take a
|
|
41
|
+
look at our <a href="http://merbivore.com/"> project page</a>,
|
|
42
|
+
feel free to come chat at irc.freenode.net, channel #merb,
|
|
43
|
+
or post to <a href="http://groups.google.com/group/merb">merb mailing list</a>
|
|
44
|
+
on Google Groups.</p>
|
|
45
|
+
|
|
46
|
+
<h3>What if I've found a bug?</h3>
|
|
47
|
+
<p>If you want to file a bug or make your own contribution to Merb,
|
|
48
|
+
feel free to register and create a ticket at our
|
|
49
|
+
<a href="http://merb.lighthouseapp.com/">project development page</a>
|
|
50
|
+
on Lighthouse.</p>
|
|
51
|
+
|
|
52
|
+
<h3>How do I edit this page?</h3>
|
|
53
|
+
<p>You can change what people see when this happens by editing <tt>app/views/exceptions/not_acceptable.html.erb</tt>.</p>
|
|
54
|
+
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<div id="footer-container">
|
|
58
|
+
<hr />
|
|
59
|
+
<div class="left"></div>
|
|
60
|
+
<div class="right">© 2008 the merb dev team</div>
|
|
61
|
+
<p> </p>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<div id="container">
|
|
2
|
+
<div id="header-container">
|
|
3
|
+
<img src="/images/merb.jpg" />
|
|
4
|
+
<!-- <h1>Mongrel + Erb</h1> -->
|
|
5
|
+
<h2>pocket rocket web framework</h2>
|
|
6
|
+
<hr />
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<div id="left-container">
|
|
10
|
+
<h3>Exception:</h3>
|
|
11
|
+
<p><%= request.exceptions.first.message %></p>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div id="main-container">
|
|
15
|
+
<h3>Welcome to Merb!</h3>
|
|
16
|
+
<p>Merb is a light-weight MVC framework written in Ruby. We hope you enjoy it.</p>
|
|
17
|
+
|
|
18
|
+
<h3>Where can I find help?</h3>
|
|
19
|
+
<p>If you have any questions or if you can't figure something out, please take a
|
|
20
|
+
look at our <a href="http://merbivore.com/"> project page</a>,
|
|
21
|
+
feel free to come chat at irc.freenode.net, channel #merb,
|
|
22
|
+
or post to <a href="http://groups.google.com/group/merb">merb mailing list</a>
|
|
23
|
+
on Google Groups.</p>
|
|
24
|
+
|
|
25
|
+
<h3>What if I've found a bug?</h3>
|
|
26
|
+
<p>If you want to file a bug or make your own contribution to Merb,
|
|
27
|
+
feel free to register and create a ticket at our
|
|
28
|
+
<a href="http://merb.lighthouseapp.com/">project development page</a>
|
|
29
|
+
on Lighthouse.</p>
|
|
30
|
+
|
|
31
|
+
<h3>How do I edit this page?</h3>
|
|
32
|
+
<p>You're seeing this page because you need to edit the following files:
|
|
33
|
+
<ul>
|
|
34
|
+
<li>config/router.rb <strong><em>(recommended)</em></strong></li>
|
|
35
|
+
<li>app/views/exceptions/not_found.html.erb <strong><em>(recommended)</em></strong></li>
|
|
36
|
+
<li>app/views/layout/application.html.erb <strong><em>(change this layout)</em></strong></li>
|
|
37
|
+
</ul>
|
|
38
|
+
</p>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div id="footer-container">
|
|
42
|
+
<hr />
|
|
43
|
+
<div class="left"></div>
|
|
44
|
+
<div class="right">© 2008 the merb dev team</div>
|
|
45
|
+
<p> </p>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us">
|
|
3
|
+
<head>
|
|
4
|
+
<title>Fresh Merb App</title>
|
|
5
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
|
6
|
+
<link rel="stylesheet" href="/stylesheets/master.css" type="text/css" media="screen" charset="utf-8" />
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<%#= message[:notice] %>
|
|
10
|
+
<%= catch_content :for_layout %>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<h1>Webrat Form</h1>
|
|
2
|
+
|
|
3
|
+
<form action="/testing/submit_form" method="post">
|
|
4
|
+
<label>
|
|
5
|
+
Text field
|
|
6
|
+
<input type="text" name="text_field" />
|
|
7
|
+
</label>
|
|
8
|
+
|
|
9
|
+
<label>
|
|
10
|
+
TOS <input type="checkbox" name="tos" />
|
|
11
|
+
</label>
|
|
12
|
+
|
|
13
|
+
<label>
|
|
14
|
+
Prefilled
|
|
15
|
+
<input type="text" name="prefilled" value="text" />
|
|
16
|
+
</label>
|
|
17
|
+
|
|
18
|
+
<label>
|
|
19
|
+
Month
|
|
20
|
+
<select name="month">
|
|
21
|
+
<option>None</option>
|
|
22
|
+
<option>January</option>
|
|
23
|
+
</select>
|
|
24
|
+
</label>
|
|
25
|
+
|
|
26
|
+
<input type="submit" value="Test">
|
|
27
|
+
</form>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Merb.logger.info("Loaded DEVELOPMENT Environment...")
|
|
2
|
+
Merb::Config.use { |c|
|
|
3
|
+
c[:exception_details] = true
|
|
4
|
+
c[:reload_templates] = true
|
|
5
|
+
c[:reload_classes] = true
|
|
6
|
+
c[:reload_time] = 0.5
|
|
7
|
+
c[:ignore_tampered_cookies] = true
|
|
8
|
+
c[:log_auto_flush ] = true
|
|
9
|
+
c[:log_level] = :debug
|
|
10
|
+
|
|
11
|
+
c[:log_stream] = STDOUT
|
|
12
|
+
c[:log_file] = nil
|
|
13
|
+
# Or redirect logging into a file:
|
|
14
|
+
# c[:log_file] = Merb.root / "log" / "development.log"
|
|
15
|
+
}
|