title: RSpec controller specs not working unless explicitly adding :type => :controller
body: <p>I'm trying to run the <code>$ rspec</code> command but all my controller tests are failing unless I explictly add <code>:type =&gt; :controller</code> to each of the specs.</p>
  
  <p>Here's the error I'm getting:</p>
  
  <pre><code>1) AccountsController GET index assigns all accounts as @accounts
       Failure/Error: get :index, {}, valid_session
       NoMethodError:
         undefined method `get' for #&lt;RSpec::ExampleGroups::AccountsController_2::GETIndex:0x007fd96c8a6a68&gt;
       # ./spec/controllers/accounts_controller_spec.rb:36:in `block (3 levels) in &lt;top (required)&gt;'
  </code></pre>
  
  <p>Here's the generated spec:</p>
  
  <pre><code>require 'spec_helper'
  
  # This spec was generated by rspec-rails when you ran the scaffold generator.
  # It demonstrates how one might use RSpec to specify the controller code that
  # was generated by Rails when you ran the scaffold generator.
  #
  # It assumes that the implementation code is generated by the rails scaffold
  # generator.  If you are using any extension libraries to generate different
  # controller code, this generated spec may or may not pass.
  #
  # It only uses APIs available in rails and/or rspec-rails.  There are a number
  # of tools you can use to make these specs even more expressive, but we're
  # sticking to rails and rspec-rails APIs to keep things simple and stable.
  #
  # Compared to earlier versions of this generator, there is very limited use of
  # stubs and message expectations in this spec.  Stubs are only used when there
  # is no simpler way to get a handle on the object needed for the example.
  # Message expectations are only used when there is no simpler way to specify
  # that an instance is receiving a specific message.
  
  describe AccountsController do
  
    # This should return the minimal set of attributes required to create a valid
    # Account. As you add validations to Account, be sure to
    # adjust the attributes here as well.
    let(:valid_attributes) { { "subdomain" =&gt; "MyString" } }
  
    # This should return the minimal set of values that should be in the session
    # in order to pass any filters (e.g. authentication) defined in
    # AccountsController. Be sure to keep this updated too.
    let(:valid_session) { {} }
  
    describe "GET index" do
      it "assigns all accounts as @accounts" do
        account = Account.create! valid_attributes
        get :index, {}, valid_session
        assigns(:accounts).should eq([account])
      end
    end
  ...
  </code></pre>
  
  <p>If I look in the spec/rails_helper.rb file, I see this snippet:</p>
  
  <pre><code># RSpec Rails can automatically mix in different behaviours to your tests
    # based on their file location, for example enabling you to call `get` and
    # `post` in specs under `spec/controllers`.
    #
    # You can disable this behaviour by removing the line below, and instead
    # explicitly tag your specs with their type, e.g.:
    #
    #     RSpec.describe UsersController, :type =&gt; :controller do
    #       # ...
    #     end
    #
    # The different available types are documented in the features, such as in
    # https://relishapp.com/rspec/rspec-rails/docs
    config.infer_spec_type_from_file_location!
  </code></pre>
  
  <p>But I'm new to RSpec and TDD and i'm not sure if this rails_helper.rb file is being read or not.</p>
  
  <p>spec/spec_helper.rb</p>
  
  <pre><code># 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 'email_spec'
  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}
  
  RSpec.configure do |config|
    config.include(EmailSpec::Helpers)
    config.include(EmailSpec::Matchers)
    # ## 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.before(:suite) do
      DatabaseCleaner.strategy = :truncation
    end
    config.before(:each) do
      DatabaseCleaner.start
    end
    config.after(:each) do
      DatabaseCleaner.clean
    end
  end
  </code></pre>
  
  <p>Can anyone tell me how I can get my controller specs to run without having to explicitly add <code>:type =&gt; :controller</code>? The controller specs are all in the dir <code>spec/controllers</code> so RSpec should just know that they are controller specs.</p>