user3502755
user3502755

Reputation:

Ruby on rails: Undefined method 'let'

I am a newbie in Ruby on Rails, when I try method let in static_pages_specs.rb


   require `spec_helper` 
   describe "Static pages" do

      let(:base_title) { "Ruby on Rails Tutorial Sample App" }

      describe "Home page" do
        it "should have the title 'Home'" do
          visit '/static_pages/home'
          expect(page).to have_title("#{base_title} | Home")
        end
      end

    end

I get an error

    Failure/Error: visit '/static_pages/home'
         ActionView::Template::Error:
           undefined method `let' for Class:0x000000034b2230>:0x0000000374a6c8>

My Gemfile look like this



    source 'https://rubygems.org'
    ruby '1.9.3'

    gem 'rails', '4.0.4'

    group :development, :test do
        gem 'sqlite3'
        gem 'rspec-rails'
    end

    group :test do
        gem 'selenium-webdriver'
        gem 'capybara'
    end 

    gem 'sass-rails', '~> 4.0.2'
    gem 'uglifier', '>= 1.3.0'
    gem 'coffee-rails', '~> 4.0.0'
    gem 'jquery-rails'
    gem 'turbolinks'
    gem 'jbuilder', '~> 1.2'

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

    group :production do
       gem 'pg', '0.15.1'
       gem 'rails_12factor', '0.0.2'
    end

    

Also my spec_helper.rb look like this



      ENV["RAILS_ENV"] ||= 'test'
      require File.expand_path("../../config/environment", __FILE__)
      require 'rspec/rails'
      require 'rspec/autorun'

      Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

    # If you are not using ActiveRecord, you can remove this line.
      ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)

      RSpec.configure do |config|

    # 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

      config.order = "random"
      config.include Capybara::DSL
    end

Do you have any ideas what am I missing? I am using Ubuntu 13.04.

Edit: Already tried let bang method but it still gets the same error.

In the previous post I forgot to put

    require 'spec_helper'

in, but my code actually DID have it. Sorry about that but it was not actually the problem there.

Solved: Thank you guys I've just solved it, it was just a silly typing in one of my templates.

Upvotes: 1

Views: 1287

Answers (1)

user740584
user740584

Reputation:

Your static_pages_specs.rb is missing require 'spec_helper':

require `spec_helper`

describe "Static pages" do
  ...
end

Upvotes: 5

Related Questions