NameError: undefined local variable or method `app'
rack, rspec, rspec-rails, ruby-on-rails
Solution
I didn't have this configuration as Jeremy says, and still had the error
I solved just adding this to rails_helper.rb
def app
Rails.application
end
But I'm not sure why is working now, any idea?
Problem
The controller spec I created fails with the following error message: ``` NameError: undefined local variable or method `app' for \ #<RSpec::Core::ExampleGroup::Nested_1::Nested_1::Nested_1:0x00000004424880> ``` ... ``` # spec/controllers/sessions_conroller_spec.rb require 'spec_helper' describe SessionsController do before do @user = User.gen! end describe "#create" do context "when sending valid email and password" do it "renders a json hash ..." do post :create, email: @user.email, password: @user.password expect(last_response.status).to eq(201) end end end describe "#destroy" do context "when sending valid email and authentication token" do it "renders a json hash ..." do delete :destroy, email: @user.email, auth_token: @user.authentication_token expect(last_response.status).to eq(200) end end end end ``` The `spec_helper.rb`loads some mix-ins. ``` ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' require 'rspec/autorun' require 'capybara/rspec' Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } RSpec.configure do |config| config.include FactoryGirl::Syntax::Methods config.include Rack::Test::Methods, type: :controller config.fixture_path = "#{::Rails.root}/spec/fixtures" config.use_transactional_fixtures = true config.infer_base_class_for_anonymous_controllers = false config.order = "random" end ```