0
votes

I am newbie for ruby on rails i am just reading the http://ruby.railstutorial.org/chapters/static-pages#top as the tutorial saying, i have created the sample_app bundle or project. Now in section 3.2.1 i am testing the app. first i run the following from the cmd

$ rails generate integration_test static_pages

This created the static_pages_spec.rb in the spec/requests directory. Now add the following code in spec/requests/static_pages_spec.rb

 require 'spec_helper'

 describe "Static pages" do

  describe "Home page" do

    it "should have the content 'Sample App'" do
     visit '/static_pages/home'
    expect(page).to have_content('Sample App')
   end
  end
 end

at this stage i add the following code in sample_app/spec/spec_helper.rb file

config.include Capybara::DSL

so my file look like

# This file is copied to spec/ when you run 'rails generate rspec:install'
    ENV["RAILS_ENV"] ||= 'test'
    require File.expand_path("../../config/environment", __FILE__)
    require 'rspec/rails'
    require 'rspec/autorun'

    # Requires supporting ruby files with custom matchers and macros, etc,
    # in spec/support/ and its subdirectories.
    Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

    # Checks for pending migrations before tests are run.
    # If you are not using ActiveRecord, you can remove this line.
    ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)

    RSpec.configure do |config|
      # ## Mock Framework
      #
      # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
      #
      # config.mock_with :mocha
      # config.mock_with :flexmock
      # config.mock_with :rr

      # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
      config.fixture_path = "#{::Rails.root}/spec/fixtures"

      # If you're not using ActiveRecord, or you'd prefer not to run each of your
      # examples within a transaction, remove the following line or assign false
      # instead of true.
      config.use_transactional_fixtures = true

      # If true, the base class of anonymous controllers will be inferred
      # automatically. This will be the default behavior in future versions of
      # rspec-rails.
      config.infer_base_class_for_anonymous_controllers = false

      # Run specs in random order to surface order dependencies. If you find an
      # order dependency and want to debug it, you can fix the order by providing
      # the seed, which is printed after each run.
      #     --seed 1234
      config.order = "random"
      config.include Capybara::DSL
    end

i have app/views/static_pages/home.html.erb

<h1>Sample App</h1>
<p>
 This is the home page for the
 <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
 sample application.
 </p>

and run the command

$ bundle exec rspec spec/requests/static_pages_spec.rb

it was giving the error

c:/wamp/www/rails_projects/sample_app/spec/spec_helper.rb:42:in `block in <top (
      required)>': uninitialized constant Capybara (NameError)
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core.rb:120:in `configure'
              from c:/wamp/www/rails_projects/sample_app/spec/spec_helper.rb:15:in `<t
      op (required)>'
              from c:/wamp/www/rails_projects/sample_app/spec/requests/static_pages_sp
      ec.rb:1:in `require'
              from c:/wamp/www/rails_projects/sample_app/spec/requests/static_pages_sp
      ec.rb:1:in `<top (required)>'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/configuration.rb:896:in `load'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/configuration.rb:896:in `each'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/configuration.rb:896:in `load_spec_files'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/command_line.rb:22:in `run'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/runner.rb:80:in `run'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/runner.rb:17:in `block in autorun'

i have installed the capybara as per direction in git step 1->gem install capybara step 2->require 'capybara/rails' in sample_app/spec/spec_helper.rb but still it was showing the load error of capybara rails now i run the same command i.e $ bundle exec rspec spec/requests/static_pages_spec.rb

i got the following error

C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-4.0.0/lib/act
      ive_support/dependencies.rb:228:in `require': cannot load such file -- capybara/
      rspec (LoadError)
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-
      4.0.0/lib/active_support/dependencies.rb:228:in `block in require'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-
      4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-
      4.0.0/lib/active_support/dependencies.rb:228:in `require'
              from c:/wamp/www/rails_projects/sample_app/spec/spec_helper.rb:8:in `<to
      p (required)>'
              from c:/wamp/www/rails_projects/sample_app/spec/requests/static_pages_sp
      ec.rb:1:in `require'
              from c:/wamp/www/rails_projects/sample_app/spec/requests/static_pages_sp
      ec.rb:1:in `<top (required)>'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/configuration.rb:896:in `load'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/configuration.rb:896:in `each'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/configuration.rb:896:in `load_spec_files'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/command_line.rb:22:in `run'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/runner.rb:80:in `run'
              from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.1
      4.5/lib/rspec/core/runner.rb:17:in `block in autorun'

and my gemfile is

source 'https://rubygems.org'

        # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
        gem 'rails', '4.0.0'

        # Use sqlite3 as the database for Active Record
        gem 'sqlite3'

        # Use SCSS for stylesheets
        gem 'sass-rails', '~> 4.0.0'

        # Use Uglifier as compressor for JavaScript assets
        gem 'uglifier', '>= 1.3.0'

        # Use CoffeeScript for .js.coffee assets and views
        gem 'coffee-rails', '~> 4.0.0'

        # See https://github.com/sstephenson/execjs#readme for more supported runtimes
        # gem 'therubyracer', platforms: :ruby

        # Use jquery as the JavaScript library
        gem 'jquery-rails'

        # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
        gem 'turbolinks'

        # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
        gem 'jbuilder', '~> 1.2'

        group :doc do
          # bundle exec rake doc:rails generates the API under doc/api.
          gem 'sdoc', require: false
        end

        # Use ActiveModel has_secure_password
        # gem 'bcrypt-ruby', '~> 3.0.0'

        # Use unicorn as the app server
        # gem 'unicorn'

        # Use Capistrano for deployment
        # gem 'capistrano', group: :development

        # Use debugger
        # gem 'debugger', group: [:development, :test]
        group :development, :test do
          gem 'rspec-rails',      ">= 2.0.0.beta"
        end

        gem 'rubyzip'

if i remove the config.include Capybara::DSL then i get fail error

Please give me right direction ...thanks in advance

1
You say you required the file, but in the code you pasted it's not there.Dylan Markow
i was getting the same error in both case....Ammar Hayder Khan
Can you paste the actual backtrace/error from the consoleDylan Markow
@DylanMarkow i have edited the question ...please check it outAmmar Hayder Khan
Can you also post your Gemfile. See my updated answer, you probably need to include Capybara in the Gemfile.Dylan Markow

1 Answers

2
votes

Since you're using Bundler (i.e. you have a Gemfile), you need to make sure Capybara is in there too, otherwise your rails app won't know the gem is installed. Update your Gemfile to include capybara in the development/test environments:

group :development, :test do
  gem 'rspec-rails',      ">= 2.0.0.beta"
  gem 'capybara'
end