title: Rspec doesn't see my model Class. uninitialized constant error
body: <p>I'm writing tests on Rspec for my models in Ruby on Rails application.
  And I receive this error while starting 'rspec spec' </p>
  
  <pre><code>command:
  /spec/models/client_spec.rb:4:in `&lt;top (required)&gt;': uninitialized constant Client (NameError)
  </code></pre>
  
  <p>I use Rails 4.0.0 and Ruby 2.0.0</p>
  
  <p>Here is my client_spec.rb:</p>
  
  <pre><code>require 'spec_helper'
  
  
  describe Client do
  
    it 'is invalid without first_name', :focus =&gt; true do
       client = Client.new
       client.should_not be_valid
    end
  end
  </code></pre>
  
  <p>And Gemfile:</p>
  
  <pre><code>source 'https://rubygems.org'
  
  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
  gem 'rails', '4.0.0.rc1'
  
  # Use sqlite3 as the database for Active Record
  gem 'sqlite3'
  
  # Use SCSS for stylesheets
  gem 'sass-rails', '~&gt; 4.0.0.rc1'
  
  # Use Uglifier as compressor for JavaScript assets
  gem 'uglifier', '&gt;= 1.3.0'
  
  # Use CoffeeScript for .js.coffee assets and views
  gem 'coffee-rails', '~&gt; 4.0.0'
  
  # gem 'therubyracer', platforms: :ruby
  
  # Use jquery as the JavaScript library
  gem 'jquery-rails'
  
  # Turbolinks makes following links in your web application faster. Read more: 
  gem 'turbolinks'
  
  gem 'jbuilder', '~&gt; 1.0.1'
  
  group :development do
    gem 'rspec-rails'
  end
  
  group :doc do
    # bundle exec rake doc:rails generates the API under doc/api.
    gem 'sdoc', require: false
  end
  
  group :test do
    gem 'rspec-rails'
    gem 'factory_girl_rails'
    gem 'database_cleaner'
  end
  </code></pre>
  
  <p>And at last client.rb (ROR Model and Class):</p>
  
  <pre><code>class Client &lt; ActiveRecord::Base
  
    has_many :cars
    has_many :orders
    has_one :client_status
    has_one :discount_plan, through: :client_status
  
    validates :email, format: { with: /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})\z/, :message =&gt; "Only emails allowed", :multiline =&gt; true }
    validates :email, presence: true, if: "phone.nil?"
    #validates :phone, presence: true, if: "email.nil?"
    validates :last_name, :first_name, presence: true
    validates :last_name, :first_name, length: {
        minimum: 2,
        maximum: 500,
        wrong_length: "Invalid length",
        too_long: "%{count} characters is the maximum allowed",
        too_short: "must have at least %{count} characters"
       }
  end
  </code></pre>
  
  <p>If it'd be useful my spec_helper.rb file:</p>
  
  <pre><code># This file was generated by the `rspec --init` command. Conventionally, all
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
  # Require this file using `require "spec_helper"` to ensure that it is only
  # loaded once.
  #
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
  RSpec.configure do |config|
    config.treat_symbols_as_metadata_keys_with_true_values = true
    config.run_all_when_everything_filtered = true
    config.filter_run :focus
  
    # 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.use_transactional_fixtures = false
  
    config.before(:suite) do
      DatabaseCleaner.strategy = :transaction
      DatabaseCleaner.clean_with(:truncation)
    end
  
     config.before(:each) do
       DatabaseCleaner.start
     end
  
     config.after(:each) do
       DatabaseCleaner.clean
     end
  
    end
  </code></pre>