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.
Files changed (214) hide show
  1. data/.document +4 -0
  2. data/.gitignore +15 -0
  3. data/History.txt +406 -0
  4. data/MIT-LICENSE.txt +19 -0
  5. data/README.rdoc +85 -0
  6. data/Rakefile +186 -0
  7. data/VERSION +1 -0
  8. data/install.rb +1 -0
  9. data/lib/webrat.rb +18 -0
  10. data/lib/webrat/adapters/mechanize.rb +78 -0
  11. data/lib/webrat/adapters/merb.rb +11 -0
  12. data/lib/webrat/adapters/rack.rb +25 -0
  13. data/lib/webrat/adapters/rails.rb +96 -0
  14. data/lib/webrat/adapters/sinatra.rb +9 -0
  15. data/lib/webrat/core.rb +13 -0
  16. data/lib/webrat/core/configuration.rb +96 -0
  17. data/lib/webrat/core/elements/area.rb +31 -0
  18. data/lib/webrat/core/elements/element.rb +33 -0
  19. data/lib/webrat/core/elements/field.rb +487 -0
  20. data/lib/webrat/core/elements/form.rb +103 -0
  21. data/lib/webrat/core/elements/label.rb +31 -0
  22. data/lib/webrat/core/elements/link.rb +93 -0
  23. data/lib/webrat/core/elements/select_option.rb +48 -0
  24. data/lib/webrat/core/locators.rb +20 -0
  25. data/lib/webrat/core/locators/area_locator.rb +38 -0
  26. data/lib/webrat/core/locators/button_locator.rb +54 -0
  27. data/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
  28. data/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
  29. data/lib/webrat/core/locators/field_locator.rb +25 -0
  30. data/lib/webrat/core/locators/field_named_locator.rb +41 -0
  31. data/lib/webrat/core/locators/form_locator.rb +19 -0
  32. data/lib/webrat/core/locators/label_locator.rb +34 -0
  33. data/lib/webrat/core/locators/link_locator.rb +74 -0
  34. data/lib/webrat/core/locators/locator.rb +20 -0
  35. data/lib/webrat/core/locators/select_option_locator.rb +59 -0
  36. data/lib/webrat/core/logging.rb +23 -0
  37. data/lib/webrat/core/matchers.rb +4 -0
  38. data/lib/webrat/core/matchers/have_content.rb +68 -0
  39. data/lib/webrat/core/matchers/have_selector.rb +74 -0
  40. data/lib/webrat/core/matchers/have_tag.rb +21 -0
  41. data/lib/webrat/core/matchers/have_xpath.rb +122 -0
  42. data/lib/webrat/core/methods.rb +64 -0
  43. data/lib/webrat/core/mime.rb +18 -0
  44. data/lib/webrat/core/save_and_open_page.rb +48 -0
  45. data/lib/webrat/core/scope.rb +365 -0
  46. data/lib/webrat/core/session.rb +307 -0
  47. data/lib/webrat/core/xml.rb +72 -0
  48. data/lib/webrat/core_extensions/blank.rb +58 -0
  49. data/lib/webrat/core_extensions/deprecate.rb +8 -0
  50. data/lib/webrat/core_extensions/detect_mapped.rb +12 -0
  51. data/lib/webrat/core_extensions/meta_class.rb +6 -0
  52. data/lib/webrat/core_extensions/nil_to_param.rb +5 -0
  53. data/lib/webrat/core_extensions/tcp_socket.rb +27 -0
  54. data/lib/webrat/integrations/merb.rb +10 -0
  55. data/lib/webrat/integrations/rails.rb +9 -0
  56. data/lib/webrat/integrations/rspec-rails.rb +10 -0
  57. data/lib/webrat/integrations/selenium.rb +11 -0
  58. data/lib/webrat/merb.rb +9 -0
  59. data/lib/webrat/rspec-rails.rb +2 -0
  60. data/lib/webrat/selenium.rb +70 -0
  61. data/lib/webrat/selenium/application_server_factory.rb +40 -0
  62. data/lib/webrat/selenium/application_servers.rb +5 -0
  63. data/lib/webrat/selenium/application_servers/base.rb +46 -0
  64. data/lib/webrat/selenium/application_servers/external.rb +26 -0
  65. data/lib/webrat/selenium/application_servers/merb.rb +50 -0
  66. data/lib/webrat/selenium/application_servers/rails.rb +44 -0
  67. data/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
  68. data/lib/webrat/selenium/location_strategy_javascript/button.js +19 -0
  69. data/lib/webrat/selenium/location_strategy_javascript/label.js +24 -0
  70. data/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
  71. data/lib/webrat/selenium/location_strategy_javascript/webratlink.js +12 -0
  72. data/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
  73. data/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
  74. data/lib/webrat/selenium/matchers.rb +4 -0
  75. data/lib/webrat/selenium/matchers/have_content.rb +66 -0
  76. data/lib/webrat/selenium/matchers/have_selector.rb +74 -0
  77. data/lib/webrat/selenium/matchers/have_tag.rb +49 -0
  78. data/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
  79. data/lib/webrat/selenium/selenium_extensions.js +6 -0
  80. data/lib/webrat/selenium/selenium_rc_server.rb +86 -0
  81. data/lib/webrat/selenium/selenium_session.rb +250 -0
  82. data/lib/webrat/selenium/silence_stream.rb +18 -0
  83. data/selenium_rc_server.patch +20 -0
  84. data/spec/fakes/test_adapter.rb +37 -0
  85. data/spec/integration/mechanize/Rakefile +7 -0
  86. data/spec/integration/mechanize/config.ru +2 -0
  87. data/spec/integration/mechanize/sample_app.rb +20 -0
  88. data/spec/integration/mechanize/spec/mechanize_spec.rb +22 -0
  89. data/spec/integration/mechanize/spec/spec_helper.rb +27 -0
  90. data/spec/integration/merb/.gitignore +21 -0
  91. data/spec/integration/merb/Rakefile +35 -0
  92. data/spec/integration/merb/app/controllers/application.rb +2 -0
  93. data/spec/integration/merb/app/controllers/exceptions.rb +13 -0
  94. data/spec/integration/merb/app/controllers/testing.rb +27 -0
  95. data/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
  96. data/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
  97. data/spec/integration/merb/app/views/layout/application.html.erb +12 -0
  98. data/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
  99. data/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
  100. data/spec/integration/merb/config/environments/development.rb +15 -0
  101. data/spec/integration/merb/config/environments/rake.rb +11 -0
  102. data/spec/integration/merb/config/environments/test.rb +14 -0
  103. data/spec/integration/merb/config/init.rb +25 -0
  104. data/spec/integration/merb/config/rack.rb +11 -0
  105. data/spec/integration/merb/config/router.rb +34 -0
  106. data/spec/integration/merb/spec/spec.opts +1 -0
  107. data/spec/integration/merb/spec/spec_helper.rb +26 -0
  108. data/spec/integration/merb/spec/webrat_spec.rb +39 -0
  109. data/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
  110. data/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
  111. data/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
  112. data/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
  113. data/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
  114. data/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
  115. data/spec/integration/rack/Rakefile +5 -0
  116. data/spec/integration/rack/app.rb +89 -0
  117. data/spec/integration/rack/test/helper.rb +21 -0
  118. data/spec/integration/rack/test/webrat_rack_test.rb +73 -0
  119. data/spec/integration/rails/.gitignore +3 -0
  120. data/spec/integration/rails/Rakefile +30 -0
  121. data/spec/integration/rails/app/controllers/application.rb +15 -0
  122. data/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
  123. data/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
  124. data/spec/integration/rails/app/controllers/links_controller.rb +7 -0
  125. data/spec/integration/rails/app/controllers/webrat_controller.rb +43 -0
  126. data/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
  127. data/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
  128. data/spec/integration/rails/app/helpers/links_helper.rb +2 -0
  129. data/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
  130. data/spec/integration/rails/app/views/fields/show.html.erb +9 -0
  131. data/spec/integration/rails/app/views/links/show.html.erb +5 -0
  132. data/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
  133. data/spec/integration/rails/app/views/webrat/buttons.html.erb +11 -0
  134. data/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
  135. data/spec/integration/rails/config/boot.rb +109 -0
  136. data/spec/integration/rails/config/environment.rb +12 -0
  137. data/spec/integration/rails/config/environments/development.rb +17 -0
  138. data/spec/integration/rails/config/environments/selenium.rb +22 -0
  139. data/spec/integration/rails/config/environments/test.rb +22 -0
  140. data/spec/integration/rails/config/initializers/inflections.rb +10 -0
  141. data/spec/integration/rails/config/initializers/mime_types.rb +5 -0
  142. data/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
  143. data/spec/integration/rails/config/locales/en.yml +5 -0
  144. data/spec/integration/rails/config/routes.rb +18 -0
  145. data/spec/integration/rails/public/404.html +30 -0
  146. data/spec/integration/rails/public/422.html +30 -0
  147. data/spec/integration/rails/public/500.html +33 -0
  148. data/spec/integration/rails/script/about +4 -0
  149. data/spec/integration/rails/script/console +3 -0
  150. data/spec/integration/rails/script/dbconsole +3 -0
  151. data/spec/integration/rails/script/destroy +3 -0
  152. data/spec/integration/rails/script/generate +3 -0
  153. data/spec/integration/rails/script/performance/benchmarker +3 -0
  154. data/spec/integration/rails/script/performance/profiler +3 -0
  155. data/spec/integration/rails/script/performance/request +3 -0
  156. data/spec/integration/rails/script/plugin +3 -0
  157. data/spec/integration/rails/script/process/inspector +3 -0
  158. data/spec/integration/rails/script/process/reaper +3 -0
  159. data/spec/integration/rails/script/process/spawner +3 -0
  160. data/spec/integration/rails/script/runner +3 -0
  161. data/spec/integration/rails/script/server +3 -0
  162. data/spec/integration/rails/test/integration/button_click_test.rb +80 -0
  163. data/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
  164. data/spec/integration/rails/test/integration/link_click_test.rb +27 -0
  165. data/spec/integration/rails/test/integration/webrat_test.rb +97 -0
  166. data/spec/integration/rails/test/test_helper.rb +26 -0
  167. data/spec/integration/sinatra/Rakefile +5 -0
  168. data/spec/integration/sinatra/classic_app.rb +64 -0
  169. data/spec/integration/sinatra/modular_app.rb +16 -0
  170. data/spec/integration/sinatra/test/classic_app_test.rb +37 -0
  171. data/spec/integration/sinatra/test/modular_app_test.rb +18 -0
  172. data/spec/integration/sinatra/test/test_helper.rb +17 -0
  173. data/spec/private/core/configuration_spec.rb +87 -0
  174. data/spec/private/core/field_spec.rb +85 -0
  175. data/spec/private/core/link_spec.rb +24 -0
  176. data/spec/private/core/session_spec.rb +200 -0
  177. data/spec/private/mechanize/mechanize_adapter_spec.rb +73 -0
  178. data/spec/private/nokogiri_spec.rb +77 -0
  179. data/spec/private/rails/attaches_file_spec.rb +81 -0
  180. data/spec/private/rails/rails_adapter_spec.rb +110 -0
  181. data/spec/private/selenium/application_servers/rails_spec.rb +26 -0
  182. data/spec/public/basic_auth_spec.rb +24 -0
  183. data/spec/public/check_spec.rb +191 -0
  184. data/spec/public/choose_spec.rb +118 -0
  185. data/spec/public/click_area_spec.rb +106 -0
  186. data/spec/public/click_button_spec.rb +494 -0
  187. data/spec/public/click_link_spec.rb +511 -0
  188. data/spec/public/fill_in_spec.rb +224 -0
  189. data/spec/public/locators/field_by_xpath_spec.rb +19 -0
  190. data/spec/public/locators/field_labeled_spec.rb +172 -0
  191. data/spec/public/locators/field_with_id_spec.rb +16 -0
  192. data/spec/public/matchers/contain_spec.rb +114 -0
  193. data/spec/public/matchers/have_selector_spec.rb +146 -0
  194. data/spec/public/matchers/have_tag_spec.rb +39 -0
  195. data/spec/public/matchers/have_xpath_spec.rb +136 -0
  196. data/spec/public/reload_spec.rb +10 -0
  197. data/spec/public/save_and_open_spec.rb +70 -0
  198. data/spec/public/select_date_spec.rb +112 -0
  199. data/spec/public/select_datetime_spec.rb +137 -0
  200. data/spec/public/select_spec.rb +455 -0
  201. data/spec/public/select_time_spec.rb +100 -0
  202. data/spec/public/selenium/application_server_factory_spec.rb +49 -0
  203. data/spec/public/selenium/application_servers/external_spec.rb +12 -0
  204. data/spec/public/selenium/selenium_session_spec.rb +37 -0
  205. data/spec/public/set_hidden_field_spec.rb +5 -0
  206. data/spec/public/submit_form_spec.rb +5 -0
  207. data/spec/public/visit_spec.rb +58 -0
  208. data/spec/public/within_spec.rb +177 -0
  209. data/spec/rcov.opts +1 -0
  210. data/spec/spec.opts +2 -0
  211. data/spec/spec_helper.rb +54 -0
  212. data/vendor/selenium-server.jar +0 -0
  213. data/webrat.gemspec +356 -0
  214. 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,7 @@
1
+ require 'rubygems'
2
+ require 'spec/rake/spectask'
3
+
4
+ Spec::Rake::SpecTask.new do |t|
5
+ t.spec_opts = ['--color']
6
+ t.spec_files = FileList['spec/**/*_spec.rb']
7
+ end
@@ -0,0 +1,2 @@
1
+ require "sample_app"
2
+ run SampleApp
@@ -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,2 @@
1
+ class Application < Merb::Controller
2
+ end
@@ -0,0 +1,13 @@
1
+ class Exceptions < Merb::Controller
2
+
3
+ # handle NotFound exceptions (404)
4
+ def not_found
5
+ render :format => :html
6
+ end
7
+
8
+ # handle NotAcceptable exceptions (406)
9
+ def not_acceptable
10
+ render :format => :html
11
+ end
12
+
13
+ end
@@ -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], &quot;Content-Encoding&quot; =&gt; &quot;gzip&quot;
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 &lt; 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">&copy; 2008 the merb dev team</div>
61
+ <p>&nbsp;</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">&copy; 2008 the merb dev team</div>
45
+ <p>&nbsp;</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,9 @@
1
+ <h1>Webrat Form</h1>
2
+
3
+ <form action="/upload" method="post">
4
+ <label>
5
+ File
6
+ <input type="file" name="uploaded_file" />
7
+ </label>
8
+ <input type="submit" value="Upload">
9
+ </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
+ }