noodall 0.0.1 → 0.0.3
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/bin/noodall +8 -0
 - data/lib/noodall/generator.rb +40 -0
 - data/lib/noodall/templates/Gemfile +23 -0
 - data/lib/noodall/templates/README +256 -0
 - data/lib/noodall/templates/Rakefile +7 -0
 - data/lib/noodall/templates/app/controllers/application_controller.rb +3 -0
 - data/lib/noodall/templates/app/helpers/application_helper.rb +58 -0
 - data/lib/noodall/templates/app/mailers/.empty_directory +0 -0
 - data/lib/noodall/templates/app/models/.empty_directory +0 -0
 - data/lib/noodall/templates/app/views/layouts/application.html.erb.tt +19 -0
 - data/lib/noodall/templates/config/application.rb +49 -0
 - data/lib/noodall/templates/config/boot.rb +13 -0
 - data/lib/noodall/templates/config/cucumber.yml +8 -0
 - data/lib/noodall/templates/config/database.yml +11 -0
 - data/lib/noodall/templates/config/environment.rb +5 -0
 - data/lib/noodall/templates/config/environments/development.rb.tt +27 -0
 - data/lib/noodall/templates/config/environments/production.rb.tt +50 -0
 - data/lib/noodall/templates/config/environments/staging.rb.tt +50 -0
 - data/lib/noodall/templates/config/environments/test.rb.tt +36 -0
 - data/lib/noodall/templates/config/initializers/backtrace_silencers.rb +7 -0
 - data/lib/noodall/templates/config/initializers/devise.rb.tt +143 -0
 - data/lib/noodall/templates/config/initializers/inflections.rb +10 -0
 - data/lib/noodall/templates/config/initializers/mime_types.rb +5 -0
 - data/lib/noodall/templates/config/initializers/mongo_mapper.rb +11 -0
 - data/lib/noodall/templates/config/initializers/noodall.rb +3 -0
 - data/lib/noodall/templates/config/initializers/secret_token.rb.tt +7 -0
 - data/lib/noodall/templates/config/initializers/session_store.rb.tt +8 -0
 - data/lib/noodall/templates/config/locales/devise.en.yml +39 -0
 - data/lib/noodall/templates/config/locales/en.yml +5 -0
 - data/lib/noodall/templates/config/routes.rb +9 -0
 - data/lib/noodall/templates/config.ru +4 -0
 - data/lib/noodall/templates/db/seeds.rb +10 -0
 - data/lib/noodall/templates/doc/README_FOR_APP +2 -0
 - data/lib/noodall/templates/features/component_slots.feature +15 -0
 - data/lib/noodall/templates/features/content_templates.feature +22 -0
 - data/lib/noodall/templates/features/step_definitions/cms_node_steps.rb +84 -0
 - data/lib/noodall/templates/features/step_definitions/component_steps.rb +46 -0
 - data/lib/noodall/templates/features/step_definitions/sign_in_steps.rb +48 -0
 - data/lib/noodall/templates/features/step_definitions/web_steps.rb +219 -0
 - data/lib/noodall/templates/features/support/env.rb +53 -0
 - data/lib/noodall/templates/features/support/home_page.rb +4 -0
 - data/lib/noodall/templates/features/support/paths.rb +35 -0
 - data/lib/noodall/templates/gitignore +4 -0
 - data/lib/noodall/templates/public/404.html +26 -0
 - data/lib/noodall/templates/public/422.html +26 -0
 - data/lib/noodall/templates/public/500.html +26 -0
 - data/lib/noodall/templates/public/favicon.ico +0 -0
 - data/lib/noodall/templates/public/images/rails.png +0 -0
 - data/lib/noodall/templates/public/index.html +239 -0
 - data/lib/noodall/templates/public/javascripts/application.js +2 -0
 - data/lib/noodall/templates/public/javascripts/controls.js +965 -0
 - data/lib/noodall/templates/public/javascripts/dragdrop.js +974 -0
 - data/lib/noodall/templates/public/javascripts/effects.js +1123 -0
 - data/lib/noodall/templates/public/javascripts/prototype.js +6001 -0
 - data/lib/noodall/templates/public/robots.txt +5 -0
 - data/lib/noodall/templates/public/stylesheets/.empty_directory +0 -0
 - data/lib/noodall/templates/script/cucumber +10 -0
 - data/lib/noodall/templates/script/rails +5 -0
 - data/lib/noodall/templates/spec/factories/asset.rb +6 -0
 - data/lib/noodall/templates/spec/factories/home.rb +5 -0
 - data/lib/noodall/templates/spec/factories/user.rb +15 -0
 - data/lib/noodall/templates/spec/files/beef.png +0 -0
 - data/lib/noodall/templates/spec/files/test.pdf +0 -0
 - data/lib/noodall/version.rb +1 -1
 - data/noodall.gemspec +4 -3
 - metadata +91 -12
 
| 
         @@ -0,0 +1,219 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # It is recommended to regenerate this file in the future when you upgrade to a 
         
     | 
| 
      
 3 
     | 
    
         
            +
            # newer version of cucumber-rails. Consider adding your own code to a new file 
         
     | 
| 
      
 4 
     | 
    
         
            +
            # instead of editing this one. Cucumber will automatically load all features/**/*.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            # files.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'uri'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'cgi'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            module WithinHelpers
         
     | 
| 
      
 13 
     | 
    
         
            +
              def with_scope(locator)
         
     | 
| 
      
 14 
     | 
    
         
            +
                locator ? within(locator) { yield } : yield
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
            World(WithinHelpers)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            Given /^(?:|I )am on (.+)$/ do |page_name|
         
     | 
| 
      
 20 
     | 
    
         
            +
              visit path_to(page_name)
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            When /^(?:|I )go to (.+)$/ do |page_name|
         
     | 
| 
      
 24 
     | 
    
         
            +
              visit path_to(page_name)
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            When /^(?:|I )press "([^"]*)"(?: within "([^"]*)")?$/ do |button, selector|
         
     | 
| 
      
 28 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 29 
     | 
    
         
            +
                click_button(button)
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            When /^(?:|I )follow "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector|
         
     | 
| 
      
 34 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 35 
     | 
    
         
            +
                click_link(link)
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            When /^(?:|I )fill in "([^"]*)" with "([^"]*)"(?: within "([^"]*)")?$/ do |field, value, selector|
         
     | 
| 
      
 40 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 41 
     | 
    
         
            +
                fill_in(field, :with => value)
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            When /^(?:|I )fill in "([^"]*)" for "([^"]*)"(?: within "([^"]*)")?$/ do |value, field, selector|
         
     | 
| 
      
 46 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 47 
     | 
    
         
            +
                fill_in(field, :with => value)
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            # Use this to fill in an entire form with data from a table. Example:
         
     | 
| 
      
 52 
     | 
    
         
            +
            #
         
     | 
| 
      
 53 
     | 
    
         
            +
            #   When I fill in the following:
         
     | 
| 
      
 54 
     | 
    
         
            +
            #     | Account Number | 5002       |
         
     | 
| 
      
 55 
     | 
    
         
            +
            #     | Expiry date    | 2009-11-01 |
         
     | 
| 
      
 56 
     | 
    
         
            +
            #     | Note           | Nice guy   |
         
     | 
| 
      
 57 
     | 
    
         
            +
            #     | Wants Email?   |            |
         
     | 
| 
      
 58 
     | 
    
         
            +
            #
         
     | 
| 
      
 59 
     | 
    
         
            +
            # TODO: Add support for checkbox, select og option
         
     | 
| 
      
 60 
     | 
    
         
            +
            # based on naming conventions.
         
     | 
| 
      
 61 
     | 
    
         
            +
            #
         
     | 
| 
      
 62 
     | 
    
         
            +
            When /^(?:|I )fill in the following(?: within "([^"]*)")?:$/ do |selector, fields|
         
     | 
| 
      
 63 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 64 
     | 
    
         
            +
                fields.rows_hash.each do |name, value|
         
     | 
| 
      
 65 
     | 
    
         
            +
                  When %{I fill in "#{name}" with "#{value}"}
         
     | 
| 
      
 66 
     | 
    
         
            +
                end
         
     | 
| 
      
 67 
     | 
    
         
            +
              end
         
     | 
| 
      
 68 
     | 
    
         
            +
            end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            When /^(?:|I )select "([^"]*)" from "([^"]*)"(?: within "([^"]*)")?$/ do |value, field, selector|
         
     | 
| 
      
 71 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 72 
     | 
    
         
            +
                select(value, :from => field)
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
            end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            When /^(?:|I )check "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector|
         
     | 
| 
      
 77 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 78 
     | 
    
         
            +
                check(field)
         
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
      
 80 
     | 
    
         
            +
            end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            When /^(?:|I )uncheck "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector|
         
     | 
| 
      
 83 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 84 
     | 
    
         
            +
                uncheck(field)
         
     | 
| 
      
 85 
     | 
    
         
            +
              end
         
     | 
| 
      
 86 
     | 
    
         
            +
            end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
            When /^(?:|I )choose "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector|
         
     | 
| 
      
 89 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 90 
     | 
    
         
            +
                choose(field)
         
     | 
| 
      
 91 
     | 
    
         
            +
              end
         
     | 
| 
      
 92 
     | 
    
         
            +
            end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"(?: within "([^"]*)")?$/ do |path, field, selector|
         
     | 
| 
      
 95 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 96 
     | 
    
         
            +
                attach_file(field, path)
         
     | 
| 
      
 97 
     | 
    
         
            +
              end
         
     | 
| 
      
 98 
     | 
    
         
            +
            end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
            Then /^(?:|I )should see JSON:$/ do |expected_json|
         
     | 
| 
      
 101 
     | 
    
         
            +
              require 'json'
         
     | 
| 
      
 102 
     | 
    
         
            +
              expected = JSON.pretty_generate(JSON.parse(expected_json))
         
     | 
| 
      
 103 
     | 
    
         
            +
              actual   = JSON.pretty_generate(JSON.parse(response.body))
         
     | 
| 
      
 104 
     | 
    
         
            +
              expected.should == actual
         
     | 
| 
      
 105 
     | 
    
         
            +
            end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
            Then /^(?:|I )should see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
         
     | 
| 
      
 108 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 109 
     | 
    
         
            +
                if page.respond_to? :should
         
     | 
| 
      
 110 
     | 
    
         
            +
                  page.should have_content(text)
         
     | 
| 
      
 111 
     | 
    
         
            +
                else
         
     | 
| 
      
 112 
     | 
    
         
            +
                  assert page.has_content?(text)
         
     | 
| 
      
 113 
     | 
    
         
            +
                end
         
     | 
| 
      
 114 
     | 
    
         
            +
              end
         
     | 
| 
      
 115 
     | 
    
         
            +
            end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
            Then /^(?:|I )should see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector|
         
     | 
| 
      
 118 
     | 
    
         
            +
              regexp = Regexp.new(regexp)
         
     | 
| 
      
 119 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 120 
     | 
    
         
            +
                if page.respond_to? :should
         
     | 
| 
      
 121 
     | 
    
         
            +
                  page.should have_xpath('//*', :text => regexp)
         
     | 
| 
      
 122 
     | 
    
         
            +
                else
         
     | 
| 
      
 123 
     | 
    
         
            +
                  assert page.has_xpath?('//*', :text => regexp)
         
     | 
| 
      
 124 
     | 
    
         
            +
                end
         
     | 
| 
      
 125 
     | 
    
         
            +
              end
         
     | 
| 
      
 126 
     | 
    
         
            +
            end
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            Then /^(?:|I )should not see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
         
     | 
| 
      
 129 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 130 
     | 
    
         
            +
                if page.respond_to? :should
         
     | 
| 
      
 131 
     | 
    
         
            +
                  page.should have_no_content(text)
         
     | 
| 
      
 132 
     | 
    
         
            +
                else
         
     | 
| 
      
 133 
     | 
    
         
            +
                  assert page.has_no_content?(text)
         
     | 
| 
      
 134 
     | 
    
         
            +
                end
         
     | 
| 
      
 135 
     | 
    
         
            +
              end
         
     | 
| 
      
 136 
     | 
    
         
            +
            end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            Then /^(?:|I )should not see \/([^\/]*)\/(?: within "([^"]*)")?$/ do |regexp, selector|
         
     | 
| 
      
 139 
     | 
    
         
            +
              regexp = Regexp.new(regexp)
         
     | 
| 
      
 140 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 141 
     | 
    
         
            +
                if page.respond_to? :should
         
     | 
| 
      
 142 
     | 
    
         
            +
                  page.should have_no_xpath('//*', :text => regexp)
         
     | 
| 
      
 143 
     | 
    
         
            +
                else
         
     | 
| 
      
 144 
     | 
    
         
            +
                  assert page.has_no_xpath?('//*', :text => regexp)
         
     | 
| 
      
 145 
     | 
    
         
            +
                end
         
     | 
| 
      
 146 
     | 
    
         
            +
              end
         
     | 
| 
      
 147 
     | 
    
         
            +
            end
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
            Then /^the "([^"]*)" field(?: within "([^"]*)")? should contain "([^"]*)"$/ do |field, selector, value|
         
     | 
| 
      
 150 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 151 
     | 
    
         
            +
                field = find_field(field)
         
     | 
| 
      
 152 
     | 
    
         
            +
                field_value = (field.tag_name == 'textarea') ? field.text : field.value
         
     | 
| 
      
 153 
     | 
    
         
            +
                if field_value.respond_to? :should
         
     | 
| 
      
 154 
     | 
    
         
            +
                  field_value.should =~ /#{value}/
         
     | 
| 
      
 155 
     | 
    
         
            +
                else
         
     | 
| 
      
 156 
     | 
    
         
            +
                  assert_match(/#{value}/, field_value)
         
     | 
| 
      
 157 
     | 
    
         
            +
                end
         
     | 
| 
      
 158 
     | 
    
         
            +
              end
         
     | 
| 
      
 159 
     | 
    
         
            +
            end
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
            Then /^the "([^"]*)" field(?: within "([^"]*)")? should not contain "([^"]*)"$/ do |field, selector, value|
         
     | 
| 
      
 162 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 163 
     | 
    
         
            +
                field = find_field(field)
         
     | 
| 
      
 164 
     | 
    
         
            +
                field_value = (field.tag_name == 'textarea') ? field.text : field.value
         
     | 
| 
      
 165 
     | 
    
         
            +
                if field_value.respond_to? :should_not
         
     | 
| 
      
 166 
     | 
    
         
            +
                  field_value.should_not =~ /#{value}/
         
     | 
| 
      
 167 
     | 
    
         
            +
                else
         
     | 
| 
      
 168 
     | 
    
         
            +
                  assert_no_match(/#{value}/, field_value)
         
     | 
| 
      
 169 
     | 
    
         
            +
                end
         
     | 
| 
      
 170 
     | 
    
         
            +
              end
         
     | 
| 
      
 171 
     | 
    
         
            +
            end
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
            Then /^the "([^"]*)" checkbox(?: within "([^"]*)")? should be checked$/ do |label, selector|
         
     | 
| 
      
 174 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 175 
     | 
    
         
            +
                field_checked = find_field(label)['checked']
         
     | 
| 
      
 176 
     | 
    
         
            +
                if field_checked.respond_to? :should
         
     | 
| 
      
 177 
     | 
    
         
            +
                  field_checked.should be_true
         
     | 
| 
      
 178 
     | 
    
         
            +
                else
         
     | 
| 
      
 179 
     | 
    
         
            +
                  assert field_checked
         
     | 
| 
      
 180 
     | 
    
         
            +
                end
         
     | 
| 
      
 181 
     | 
    
         
            +
              end
         
     | 
| 
      
 182 
     | 
    
         
            +
            end
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
            Then /^the "([^"]*)" checkbox(?: within "([^"]*)")? should not be checked$/ do |label, selector|
         
     | 
| 
      
 185 
     | 
    
         
            +
              with_scope(selector) do
         
     | 
| 
      
 186 
     | 
    
         
            +
                field_checked = find_field(label)['checked']
         
     | 
| 
      
 187 
     | 
    
         
            +
                if field_checked.respond_to? :should
         
     | 
| 
      
 188 
     | 
    
         
            +
                  field_checked.should be_false
         
     | 
| 
      
 189 
     | 
    
         
            +
                else
         
     | 
| 
      
 190 
     | 
    
         
            +
                  assert !field_checked
         
     | 
| 
      
 191 
     | 
    
         
            +
                end
         
     | 
| 
      
 192 
     | 
    
         
            +
              end
         
     | 
| 
      
 193 
     | 
    
         
            +
            end
         
     | 
| 
      
 194 
     | 
    
         
            +
             
         
     | 
| 
      
 195 
     | 
    
         
            +
            Then /^(?:|I )should be on (.+)$/ do |page_name|
         
     | 
| 
      
 196 
     | 
    
         
            +
              current_path = URI.parse(current_url).path
         
     | 
| 
      
 197 
     | 
    
         
            +
              if current_path.respond_to? :should
         
     | 
| 
      
 198 
     | 
    
         
            +
                current_path.should == path_to(page_name)
         
     | 
| 
      
 199 
     | 
    
         
            +
              else
         
     | 
| 
      
 200 
     | 
    
         
            +
                assert_equal path_to(page_name), current_path
         
     | 
| 
      
 201 
     | 
    
         
            +
              end
         
     | 
| 
      
 202 
     | 
    
         
            +
            end
         
     | 
| 
      
 203 
     | 
    
         
            +
             
     | 
| 
      
 204 
     | 
    
         
            +
            Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
         
     | 
| 
      
 205 
     | 
    
         
            +
              query = URI.parse(current_url).query
         
     | 
| 
      
 206 
     | 
    
         
            +
              actual_params = query ? CGI.parse(query) : {}
         
     | 
| 
      
 207 
     | 
    
         
            +
              expected_params = {}
         
     | 
| 
      
 208 
     | 
    
         
            +
              expected_pairs.rows_hash.each_pair{|k,v| expected_params[k] = v.split(',')} 
         
     | 
| 
      
 209 
     | 
    
         
            +
              
         
     | 
| 
      
 210 
     | 
    
         
            +
              if actual_params.respond_to? :should
         
     | 
| 
      
 211 
     | 
    
         
            +
                actual_params.should == expected_params
         
     | 
| 
      
 212 
     | 
    
         
            +
              else
         
     | 
| 
      
 213 
     | 
    
         
            +
                assert_equal expected_params, actual_params
         
     | 
| 
      
 214 
     | 
    
         
            +
              end
         
     | 
| 
      
 215 
     | 
    
         
            +
            end
         
     | 
| 
      
 216 
     | 
    
         
            +
             
     | 
| 
      
 217 
     | 
    
         
            +
            Then /^show me the page$/ do
         
     | 
| 
      
 218 
     | 
    
         
            +
              save_and_open_page
         
     | 
| 
      
 219 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,53 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # It is recommended to regenerate this file in the future when you upgrade to a
         
     | 
| 
      
 3 
     | 
    
         
            +
            # newer version of cucumber-rails. Consider adding your own code to a new file
         
     | 
| 
      
 4 
     | 
    
         
            +
            # instead of editing this one. Cucumber will automatically load all features/**/*.rb
         
     | 
| 
      
 5 
     | 
    
         
            +
            # files.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'spork'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            Spork.prefork do
         
     | 
| 
      
 11 
     | 
    
         
            +
              ENV["RAILS_ENV"] ||= "test"
         
     | 
| 
      
 12 
     | 
    
         
            +
              require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
         
     | 
| 
      
 15 
     | 
    
         
            +
              require 'cucumber/rails/rspec'
         
     | 
| 
      
 16 
     | 
    
         
            +
              require 'cucumber/rails/world'
         
     | 
| 
      
 17 
     | 
    
         
            +
              require 'cucumber/web/tableish'
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              require 'capybara/rails'
         
     | 
| 
      
 21 
     | 
    
         
            +
              require 'capybara/cucumber'
         
     | 
| 
      
 22 
     | 
    
         
            +
              require 'capybara/session'
         
     | 
| 
      
 23 
     | 
    
         
            +
              # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
         
     | 
| 
      
 24 
     | 
    
         
            +
              # order to ease the transition to Capybara we set the default here. If you'd
         
     | 
| 
      
 25 
     | 
    
         
            +
              # prefer to use XPath just remove this line and adjust any selectors in your
         
     | 
| 
      
 26 
     | 
    
         
            +
              # steps to use the XPath syntax.
         
     | 
| 
      
 27 
     | 
    
         
            +
              Capybara.default_selector = :css
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              require 'factory_girl/step_definitions'
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              #Load Noodall specific stuff
         
     | 
| 
      
 32 
     | 
    
         
            +
              require 'noodall/permalinks'
         
     | 
| 
      
 33 
     | 
    
         
            +
              World(Noodall::Permalinks)
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            Spork.each_run do
         
     | 
| 
      
 37 
     | 
    
         
            +
              # If you set this to false, any error raised from within your app will bubble
         
     | 
| 
      
 38 
     | 
    
         
            +
              # up to your step definition and out to cucumber unless you catch it somewhere
         
     | 
| 
      
 39 
     | 
    
         
            +
              # on the way. You can make Rails rescue errors and render error pages on a
         
     | 
| 
      
 40 
     | 
    
         
            +
              # per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
         
     | 
| 
      
 41 
     | 
    
         
            +
              #
         
     | 
| 
      
 42 
     | 
    
         
            +
              # If you set this to true, Rails will rescue all errors and render error
         
     | 
| 
      
 43 
     | 
    
         
            +
              # pages, more or less in the same way your application would behave in the
         
     | 
| 
      
 44 
     | 
    
         
            +
              # default production environment. It's not recommended to do this for all
         
     | 
| 
      
 45 
     | 
    
         
            +
              # of your scenarios, as this makes it hard to discover errors in your application.
         
     | 
| 
      
 46 
     | 
    
         
            +
              ActionController::Base.allow_rescue = false
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              # How to clean your database when transactions are turned off. See
         
     | 
| 
      
 49 
     | 
    
         
            +
              # http://github.com/bmabey/database_cleaner for more info.
         
     | 
| 
      
 50 
     | 
    
         
            +
              require 'database_cleaner'
         
     | 
| 
      
 51 
     | 
    
         
            +
              require 'database_cleaner/cucumber'
         
     | 
| 
      
 52 
     | 
    
         
            +
              DatabaseCleaner.strategy = :truncation
         
     | 
| 
      
 53 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module NavigationHelpers
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Maps a name to a path. Used by the
         
     | 
| 
      
 3 
     | 
    
         
            +
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              #   When /^I go to (.+)$/ do |page_name|
         
     | 
| 
      
 5 
     | 
    
         
            +
              #
         
     | 
| 
      
 6 
     | 
    
         
            +
              # step definition in web_steps.rb
         
     | 
| 
      
 7 
     | 
    
         
            +
              #
         
     | 
| 
      
 8 
     | 
    
         
            +
              def path_to(page_name)
         
     | 
| 
      
 9 
     | 
    
         
            +
                case page_name
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                when /the (website|home\s?page)/
         
     | 
| 
      
 12 
     | 
    
         
            +
                  home = Home.create(:title => 'Home', :publish => true, :body => "Welcome")
         
     | 
| 
      
 13 
     | 
    
         
            +
                  '/'
         
     | 
| 
      
 14 
     | 
    
         
            +
                when /the sign in page/
         
     | 
| 
      
 15 
     | 
    
         
            +
                  new_user_session_path
         
     | 
| 
      
 16 
     | 
    
         
            +
                # Add more mappings here.
         
     | 
| 
      
 17 
     | 
    
         
            +
                # Here is an example that pulls values out of the Regexp:
         
     | 
| 
      
 18 
     | 
    
         
            +
                #
         
     | 
| 
      
 19 
     | 
    
         
            +
                #   when /^(.*)'s profile page$/i
         
     | 
| 
      
 20 
     | 
    
         
            +
                #     user_profile_path(User.find_by_login($1))
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                else
         
     | 
| 
      
 23 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 24 
     | 
    
         
            +
                    page_name =~ /the (.*) page/
         
     | 
| 
      
 25 
     | 
    
         
            +
                    path_components = $1.split(/\s+/)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    self.send(path_components.push('path').join('_').to_sym)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  rescue Object => e
         
     | 
| 
      
 28 
     | 
    
         
            +
                    raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
         
     | 
| 
      
 29 
     | 
    
         
            +
                      "Now, go and add a mapping in #{__FILE__}"
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            World(NavigationHelpers)
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <title>The page you were looking for doesn't exist (404)</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
              <style type="text/css">
         
     | 
| 
      
 6 
     | 
    
         
            +
                body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
         
     | 
| 
      
 7 
     | 
    
         
            +
                div.dialog {
         
     | 
| 
      
 8 
     | 
    
         
            +
                  width: 25em;
         
     | 
| 
      
 9 
     | 
    
         
            +
                  padding: 0 4em;
         
     | 
| 
      
 10 
     | 
    
         
            +
                  margin: 4em auto 0 auto;
         
     | 
| 
      
 11 
     | 
    
         
            +
                  border: 1px solid #ccc;
         
     | 
| 
      
 12 
     | 
    
         
            +
                  border-right-color: #999;
         
     | 
| 
      
 13 
     | 
    
         
            +
                  border-bottom-color: #999;
         
     | 
| 
      
 14 
     | 
    
         
            +
                }
         
     | 
| 
      
 15 
     | 
    
         
            +
                h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
         
     | 
| 
      
 16 
     | 
    
         
            +
              </style>
         
     | 
| 
      
 17 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 20 
     | 
    
         
            +
              <!-- This file lives in public/404.html -->
         
     | 
| 
      
 21 
     | 
    
         
            +
              <div class="dialog">
         
     | 
| 
      
 22 
     | 
    
         
            +
                <h1>The page you were looking for doesn't exist.</h1>
         
     | 
| 
      
 23 
     | 
    
         
            +
                <p>You may have mistyped the address or the page may have moved.</p>
         
     | 
| 
      
 24 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 25 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 26 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <title>The change you wanted was rejected (422)</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
              <style type="text/css">
         
     | 
| 
      
 6 
     | 
    
         
            +
                body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
         
     | 
| 
      
 7 
     | 
    
         
            +
                div.dialog {
         
     | 
| 
      
 8 
     | 
    
         
            +
                  width: 25em;
         
     | 
| 
      
 9 
     | 
    
         
            +
                  padding: 0 4em;
         
     | 
| 
      
 10 
     | 
    
         
            +
                  margin: 4em auto 0 auto;
         
     | 
| 
      
 11 
     | 
    
         
            +
                  border: 1px solid #ccc;
         
     | 
| 
      
 12 
     | 
    
         
            +
                  border-right-color: #999;
         
     | 
| 
      
 13 
     | 
    
         
            +
                  border-bottom-color: #999;
         
     | 
| 
      
 14 
     | 
    
         
            +
                }
         
     | 
| 
      
 15 
     | 
    
         
            +
                h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
         
     | 
| 
      
 16 
     | 
    
         
            +
              </style>
         
     | 
| 
      
 17 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 20 
     | 
    
         
            +
              <!-- This file lives in public/422.html -->
         
     | 
| 
      
 21 
     | 
    
         
            +
              <div class="dialog">
         
     | 
| 
      
 22 
     | 
    
         
            +
                <h1>The change you wanted was rejected.</h1>
         
     | 
| 
      
 23 
     | 
    
         
            +
                <p>Maybe you tried to change something you didn't have access to.</p>
         
     | 
| 
      
 24 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 25 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 26 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <title>We're sorry, but something went wrong (500)</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
              <style type="text/css">
         
     | 
| 
      
 6 
     | 
    
         
            +
                body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
         
     | 
| 
      
 7 
     | 
    
         
            +
                div.dialog {
         
     | 
| 
      
 8 
     | 
    
         
            +
                  width: 25em;
         
     | 
| 
      
 9 
     | 
    
         
            +
                  padding: 0 4em;
         
     | 
| 
      
 10 
     | 
    
         
            +
                  margin: 4em auto 0 auto;
         
     | 
| 
      
 11 
     | 
    
         
            +
                  border: 1px solid #ccc;
         
     | 
| 
      
 12 
     | 
    
         
            +
                  border-right-color: #999;
         
     | 
| 
      
 13 
     | 
    
         
            +
                  border-bottom-color: #999;
         
     | 
| 
      
 14 
     | 
    
         
            +
                }
         
     | 
| 
      
 15 
     | 
    
         
            +
                h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
         
     | 
| 
      
 16 
     | 
    
         
            +
              </style>
         
     | 
| 
      
 17 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 20 
     | 
    
         
            +
              <!-- This file lives in public/500.html -->
         
     | 
| 
      
 21 
     | 
    
         
            +
              <div class="dialog">
         
     | 
| 
      
 22 
     | 
    
         
            +
                <h1>We're sorry, but something went wrong.</h1>
         
     | 
| 
      
 23 
     | 
    
         
            +
                <p>We've been notified about this issue and we'll take a look at it shortly.</p>
         
     | 
| 
      
 24 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 25 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 26 
     | 
    
         
            +
            </html>
         
     | 
| 
         
            File without changes
         
     | 
| 
         Binary file 
     | 
| 
         @@ -0,0 +1,239 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title>Ruby on Rails: Welcome aboard</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <style type="text/css" media="screen">
         
     | 
| 
      
 6 
     | 
    
         
            +
                  body {
         
     | 
| 
      
 7 
     | 
    
         
            +
                    margin: 0;
         
     | 
| 
      
 8 
     | 
    
         
            +
                    margin-bottom: 25px;
         
     | 
| 
      
 9 
     | 
    
         
            +
                    padding: 0;
         
     | 
| 
      
 10 
     | 
    
         
            +
                    background-color: #f0f0f0;
         
     | 
| 
      
 11 
     | 
    
         
            +
                    font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
         
     | 
| 
      
 12 
     | 
    
         
            +
                    font-size: 13px;
         
     | 
| 
      
 13 
     | 
    
         
            +
                    color: #333;
         
     | 
| 
      
 14 
     | 
    
         
            +
                  }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  h1 {
         
     | 
| 
      
 17 
     | 
    
         
            +
                    font-size: 28px;
         
     | 
| 
      
 18 
     | 
    
         
            +
                    color: #000;
         
     | 
| 
      
 19 
     | 
    
         
            +
                  }
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  a  {color: #03c}
         
     | 
| 
      
 22 
     | 
    
         
            +
                  a:hover {
         
     | 
| 
      
 23 
     | 
    
         
            +
                    background-color: #03c;
         
     | 
| 
      
 24 
     | 
    
         
            +
                    color: white;
         
     | 
| 
      
 25 
     | 
    
         
            +
                    text-decoration: none;
         
     | 
| 
      
 26 
     | 
    
         
            +
                  }
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  #page {
         
     | 
| 
      
 30 
     | 
    
         
            +
                    background-color: #f0f0f0;
         
     | 
| 
      
 31 
     | 
    
         
            +
                    width: 750px;
         
     | 
| 
      
 32 
     | 
    
         
            +
                    margin: 0;
         
     | 
| 
      
 33 
     | 
    
         
            +
                    margin-left: auto;
         
     | 
| 
      
 34 
     | 
    
         
            +
                    margin-right: auto;
         
     | 
| 
      
 35 
     | 
    
         
            +
                  }
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                  #content {
         
     | 
| 
      
 38 
     | 
    
         
            +
                    float: left;
         
     | 
| 
      
 39 
     | 
    
         
            +
                    background-color: white;
         
     | 
| 
      
 40 
     | 
    
         
            +
                    border: 3px solid #aaa;
         
     | 
| 
      
 41 
     | 
    
         
            +
                    border-top: none;
         
     | 
| 
      
 42 
     | 
    
         
            +
                    padding: 25px;
         
     | 
| 
      
 43 
     | 
    
         
            +
                    width: 500px;
         
     | 
| 
      
 44 
     | 
    
         
            +
                  }
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  #sidebar {
         
     | 
| 
      
 47 
     | 
    
         
            +
                    float: right;
         
     | 
| 
      
 48 
     | 
    
         
            +
                    width: 175px;
         
     | 
| 
      
 49 
     | 
    
         
            +
                  }
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                  #footer {
         
     | 
| 
      
 52 
     | 
    
         
            +
                    clear: both;
         
     | 
| 
      
 53 
     | 
    
         
            +
                  }
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  #header, #about, #getting-started {
         
     | 
| 
      
 57 
     | 
    
         
            +
                    padding-left: 75px;
         
     | 
| 
      
 58 
     | 
    
         
            +
                    padding-right: 30px;
         
     | 
| 
      
 59 
     | 
    
         
            +
                  }
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  #header {
         
     | 
| 
      
 63 
     | 
    
         
            +
                    background-image: url("images/rails.png");
         
     | 
| 
      
 64 
     | 
    
         
            +
                    background-repeat: no-repeat;
         
     | 
| 
      
 65 
     | 
    
         
            +
                    background-position: top left;
         
     | 
| 
      
 66 
     | 
    
         
            +
                    height: 64px;
         
     | 
| 
      
 67 
     | 
    
         
            +
                  }
         
     | 
| 
      
 68 
     | 
    
         
            +
                  #header h1, #header h2 {margin: 0}
         
     | 
| 
      
 69 
     | 
    
         
            +
                  #header h2 {
         
     | 
| 
      
 70 
     | 
    
         
            +
                    color: #888;
         
     | 
| 
      
 71 
     | 
    
         
            +
                    font-weight: normal;
         
     | 
| 
      
 72 
     | 
    
         
            +
                    font-size: 16px;
         
     | 
| 
      
 73 
     | 
    
         
            +
                  }
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                  #about h3 {
         
     | 
| 
      
 77 
     | 
    
         
            +
                    margin: 0;
         
     | 
| 
      
 78 
     | 
    
         
            +
                    margin-bottom: 10px;
         
     | 
| 
      
 79 
     | 
    
         
            +
                    font-size: 14px;
         
     | 
| 
      
 80 
     | 
    
         
            +
                  }
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                  #about-content {
         
     | 
| 
      
 83 
     | 
    
         
            +
                    background-color: #ffd;
         
     | 
| 
      
 84 
     | 
    
         
            +
                    border: 1px solid #fc0;
         
     | 
| 
      
 85 
     | 
    
         
            +
                    margin-left: -55px;
         
     | 
| 
      
 86 
     | 
    
         
            +
                    margin-right: -10px;
         
     | 
| 
      
 87 
     | 
    
         
            +
                  }
         
     | 
| 
      
 88 
     | 
    
         
            +
                  #about-content table {
         
     | 
| 
      
 89 
     | 
    
         
            +
                    margin-top: 10px;
         
     | 
| 
      
 90 
     | 
    
         
            +
                    margin-bottom: 10px;
         
     | 
| 
      
 91 
     | 
    
         
            +
                    font-size: 11px;
         
     | 
| 
      
 92 
     | 
    
         
            +
                    border-collapse: collapse;
         
     | 
| 
      
 93 
     | 
    
         
            +
                  }
         
     | 
| 
      
 94 
     | 
    
         
            +
                  #about-content td {
         
     | 
| 
      
 95 
     | 
    
         
            +
                    padding: 10px;
         
     | 
| 
      
 96 
     | 
    
         
            +
                    padding-top: 3px;
         
     | 
| 
      
 97 
     | 
    
         
            +
                    padding-bottom: 3px;
         
     | 
| 
      
 98 
     | 
    
         
            +
                  }
         
     | 
| 
      
 99 
     | 
    
         
            +
                  #about-content td.name  {color: #555}
         
     | 
| 
      
 100 
     | 
    
         
            +
                  #about-content td.value {color: #000}
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                  #about-content ul {
         
     | 
| 
      
 103 
     | 
    
         
            +
                    padding: 0;
         
     | 
| 
      
 104 
     | 
    
         
            +
                    list-style-type: none;
         
     | 
| 
      
 105 
     | 
    
         
            +
                  }
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                  #about-content.failure {
         
     | 
| 
      
 108 
     | 
    
         
            +
                    background-color: #fcc;
         
     | 
| 
      
 109 
     | 
    
         
            +
                    border: 1px solid #f00;
         
     | 
| 
      
 110 
     | 
    
         
            +
                  }
         
     | 
| 
      
 111 
     | 
    
         
            +
                  #about-content.failure p {
         
     | 
| 
      
 112 
     | 
    
         
            +
                    margin: 0;
         
     | 
| 
      
 113 
     | 
    
         
            +
                    padding: 10px;
         
     | 
| 
      
 114 
     | 
    
         
            +
                  }
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                  #getting-started {
         
     | 
| 
      
 118 
     | 
    
         
            +
                    border-top: 1px solid #ccc;
         
     | 
| 
      
 119 
     | 
    
         
            +
                    margin-top: 25px;
         
     | 
| 
      
 120 
     | 
    
         
            +
                    padding-top: 15px;
         
     | 
| 
      
 121 
     | 
    
         
            +
                  }
         
     | 
| 
      
 122 
     | 
    
         
            +
                  #getting-started h1 {
         
     | 
| 
      
 123 
     | 
    
         
            +
                    margin: 0;
         
     | 
| 
      
 124 
     | 
    
         
            +
                    font-size: 20px;
         
     | 
| 
      
 125 
     | 
    
         
            +
                  }
         
     | 
| 
      
 126 
     | 
    
         
            +
                  #getting-started h2 {
         
     | 
| 
      
 127 
     | 
    
         
            +
                    margin: 0;
         
     | 
| 
      
 128 
     | 
    
         
            +
                    font-size: 14px;
         
     | 
| 
      
 129 
     | 
    
         
            +
                    font-weight: normal;
         
     | 
| 
      
 130 
     | 
    
         
            +
                    color: #333;
         
     | 
| 
      
 131 
     | 
    
         
            +
                    margin-bottom: 25px;
         
     | 
| 
      
 132 
     | 
    
         
            +
                  }
         
     | 
| 
      
 133 
     | 
    
         
            +
                  #getting-started ol {
         
     | 
| 
      
 134 
     | 
    
         
            +
                    margin-left: 0;
         
     | 
| 
      
 135 
     | 
    
         
            +
                    padding-left: 0;
         
     | 
| 
      
 136 
     | 
    
         
            +
                  }
         
     | 
| 
      
 137 
     | 
    
         
            +
                  #getting-started li {
         
     | 
| 
      
 138 
     | 
    
         
            +
                    font-size: 18px;
         
     | 
| 
      
 139 
     | 
    
         
            +
                    color: #888;
         
     | 
| 
      
 140 
     | 
    
         
            +
                    margin-bottom: 25px;
         
     | 
| 
      
 141 
     | 
    
         
            +
                  }
         
     | 
| 
      
 142 
     | 
    
         
            +
                  #getting-started li h2 {
         
     | 
| 
      
 143 
     | 
    
         
            +
                    margin: 0;
         
     | 
| 
      
 144 
     | 
    
         
            +
                    font-weight: normal;
         
     | 
| 
      
 145 
     | 
    
         
            +
                    font-size: 18px;
         
     | 
| 
      
 146 
     | 
    
         
            +
                    color: #333;
         
     | 
| 
      
 147 
     | 
    
         
            +
                  }
         
     | 
| 
      
 148 
     | 
    
         
            +
                  #getting-started li p {
         
     | 
| 
      
 149 
     | 
    
         
            +
                    color: #555;
         
     | 
| 
      
 150 
     | 
    
         
            +
                    font-size: 13px;
         
     | 
| 
      
 151 
     | 
    
         
            +
                  }
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
                  #sidebar ul {
         
     | 
| 
      
 155 
     | 
    
         
            +
                    margin-left: 0;
         
     | 
| 
      
 156 
     | 
    
         
            +
                    padding-left: 0;
         
     | 
| 
      
 157 
     | 
    
         
            +
                  }
         
     | 
| 
      
 158 
     | 
    
         
            +
                  #sidebar ul h3 {
         
     | 
| 
      
 159 
     | 
    
         
            +
                    margin-top: 25px;
         
     | 
| 
      
 160 
     | 
    
         
            +
                    font-size: 16px;
         
     | 
| 
      
 161 
     | 
    
         
            +
                    padding-bottom: 10px;
         
     | 
| 
      
 162 
     | 
    
         
            +
                    border-bottom: 1px solid #ccc;
         
     | 
| 
      
 163 
     | 
    
         
            +
                  }
         
     | 
| 
      
 164 
     | 
    
         
            +
                  #sidebar li {
         
     | 
| 
      
 165 
     | 
    
         
            +
                    list-style-type: none;
         
     | 
| 
      
 166 
     | 
    
         
            +
                  }
         
     | 
| 
      
 167 
     | 
    
         
            +
                  #sidebar ul.links li {
         
     | 
| 
      
 168 
     | 
    
         
            +
                    margin-bottom: 5px;
         
     | 
| 
      
 169 
     | 
    
         
            +
                  }
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                </style>
         
     | 
| 
      
 172 
     | 
    
         
            +
                <script type="text/javascript">
         
     | 
| 
      
 173 
     | 
    
         
            +
                  function about() {
         
     | 
| 
      
 174 
     | 
    
         
            +
                    info = document.getElementById('about-content');
         
     | 
| 
      
 175 
     | 
    
         
            +
                    if (window.XMLHttpRequest)
         
     | 
| 
      
 176 
     | 
    
         
            +
                      { xhr = new XMLHttpRequest(); }
         
     | 
| 
      
 177 
     | 
    
         
            +
                    else
         
     | 
| 
      
 178 
     | 
    
         
            +
                      { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
         
     | 
| 
      
 179 
     | 
    
         
            +
                    xhr.open("GET","rails/info/properties",false);
         
     | 
| 
      
 180 
     | 
    
         
            +
                    xhr.send("");
         
     | 
| 
      
 181 
     | 
    
         
            +
                    info.innerHTML = xhr.responseText;
         
     | 
| 
      
 182 
     | 
    
         
            +
                    info.style.display = 'block'
         
     | 
| 
      
 183 
     | 
    
         
            +
                  }
         
     | 
| 
      
 184 
     | 
    
         
            +
                </script>
         
     | 
| 
      
 185 
     | 
    
         
            +
              </head>
         
     | 
| 
      
 186 
     | 
    
         
            +
              <body>
         
     | 
| 
      
 187 
     | 
    
         
            +
                <div id="page">
         
     | 
| 
      
 188 
     | 
    
         
            +
                  <div id="sidebar">
         
     | 
| 
      
 189 
     | 
    
         
            +
                    <ul id="sidebar-items">
         
     | 
| 
      
 190 
     | 
    
         
            +
                      <li>
         
     | 
| 
      
 191 
     | 
    
         
            +
                        <h3>Browse the documentation</h3>
         
     | 
| 
      
 192 
     | 
    
         
            +
                        <ul class="links">
         
     | 
| 
      
 193 
     | 
    
         
            +
                          <li><a href="http://api.rubyonrails.org/">Rails API</a></li>
         
     | 
| 
      
 194 
     | 
    
         
            +
                          <li><a href="http://stdlib.rubyonrails.org/">Ruby standard library</a></li>
         
     | 
| 
      
 195 
     | 
    
         
            +
                          <li><a href="http://corelib.rubyonrails.org/">Ruby core</a></li>
         
     | 
| 
      
 196 
     | 
    
         
            +
                          <li><a href="http://guides.rubyonrails.org/">Rails Guides</a></li>
         
     | 
| 
      
 197 
     | 
    
         
            +
                        </ul>
         
     | 
| 
      
 198 
     | 
    
         
            +
                      </li>
         
     | 
| 
      
 199 
     | 
    
         
            +
                    </ul>
         
     | 
| 
      
 200 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 201 
     | 
    
         
            +
             
     | 
| 
      
 202 
     | 
    
         
            +
                  <div id="content">
         
     | 
| 
      
 203 
     | 
    
         
            +
                    <div id="header">
         
     | 
| 
      
 204 
     | 
    
         
            +
                      <h1>Welcome aboard</h1>
         
     | 
| 
      
 205 
     | 
    
         
            +
                      <h2>You’re riding Ruby on Rails!</h2>
         
     | 
| 
      
 206 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
                    <div id="about">
         
     | 
| 
      
 209 
     | 
    
         
            +
                      <h3><a href="rails/info/properties" onclick="about(); return false">About your application’s environment</a></h3>
         
     | 
| 
      
 210 
     | 
    
         
            +
                      <div id="about-content" style="display: none"></div>
         
     | 
| 
      
 211 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
                    <div id="getting-started">
         
     | 
| 
      
 214 
     | 
    
         
            +
                      <h1>Getting started</h1>
         
     | 
| 
      
 215 
     | 
    
         
            +
                      <h2>Here’s how to get rolling:</h2>
         
     | 
| 
      
 216 
     | 
    
         
            +
             
     | 
| 
      
 217 
     | 
    
         
            +
                      <ol>
         
     | 
| 
      
 218 
     | 
    
         
            +
                        <li>
         
     | 
| 
      
 219 
     | 
    
         
            +
                          <h2>Use <code>rails generate</code> to create your models and controllers</h2>
         
     | 
| 
      
 220 
     | 
    
         
            +
                          <p>To see all available options, run it without parameters.</p>
         
     | 
| 
      
 221 
     | 
    
         
            +
                        </li>
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
                        <li>
         
     | 
| 
      
 224 
     | 
    
         
            +
                          <h2>Set up a default route and remove or rename this file</h2>
         
     | 
| 
      
 225 
     | 
    
         
            +
                          <p>Routes are set up in config/routes.rb.</p>
         
     | 
| 
      
 226 
     | 
    
         
            +
                        </li>
         
     | 
| 
      
 227 
     | 
    
         
            +
             
     | 
| 
      
 228 
     | 
    
         
            +
                        <li>
         
     | 
| 
      
 229 
     | 
    
         
            +
                          <h2>Create your database</h2>
         
     | 
| 
      
 230 
     | 
    
         
            +
                          <p>Run <code>rake db:migrate</code> to create your database. If you're not using SQLite (the default), edit <code>config/database.yml</code> with your username and password.</p>
         
     | 
| 
      
 231 
     | 
    
         
            +
                        </li>
         
     | 
| 
      
 232 
     | 
    
         
            +
                      </ol>
         
     | 
| 
      
 233 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 234 
     | 
    
         
            +
                  </div>
         
     | 
| 
      
 235 
     | 
    
         
            +
             
     | 
| 
      
 236 
     | 
    
         
            +
                  <div id="footer"> </div>
         
     | 
| 
      
 237 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 238 
     | 
    
         
            +
              </body>
         
     | 
| 
      
 239 
     | 
    
         
            +
            </html>
         
     |