Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"undefined method `default_render'" with responders and RSpec #207

Open
GCorbel opened this issue Aug 11, 2015 · 2 comments
Open

"undefined method `default_render'" with responders and RSpec #207

GCorbel opened this issue Aug 11, 2015 · 2 comments

Comments

@GCorbel
Copy link

GCorbel commented Aug 11, 2015

I have a this simple controller :

module Api
  module V1
    class UsersController < Clearance::UsersController
      respond_to :json

      def create
        respond_with User.create(user_params)
      end

    end
  end
end

And this spec :

require 'rails_helper'

describe "Users API" do
  it 'create a user' do
    post "/api/v1/users.json", user: attributes_for(:user), format: :json

    expect(response).to be_success
    expect(User.count).to eq 1
  end
end

When I run that test, I have this error :

 Failure/Error: get '/api/v1/users'
 NoMethodError:
   undefined method `default_render' for #<Api::V1::UsersController:0x007f5049ab1d78>
 # /usr/local/bundle/gems/responders-2.1.0/lib/action_controller/responder.rb:236:in `default_render'
 # /usr/local/bundle/gems/responders-2.1.0/lib/action_controller/responder.rb:186:in `to_format'
 # /usr/local/bundle/gems/responders-2.1.0/lib/action_controller/responder.rb:163:in `respond'
 # /usr/local/bundle/gems/responders-2.1.0/lib/action_controller/responder.rb:156:in `call'
 # /usr/local/bundle/gems/responders-2.1.0/lib/action_controller/respond_with.rb:203:in `respond_with'
 # ./app/controllers/api/v1/users_controller.rb:7:in `create'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/abstract_controller/base.rb:198:in `process_action'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_controller/metal/rendering.rb:10:in `process_action'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:117:in `call'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:117:in `call'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:505:in `call'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:505:in `call'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:92:in `_run_callbacks'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:776:in `_run_process_action_callbacks'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:81:in `run_callbacks'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/abstract_controller/callbacks.rb:19:in `process_action'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_controller/metal/rescue.rb:29:in `process_action'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/notifications.rb:164:in `block in instrument'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/notifications.rb:164:in `instrument'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
 # /usr/local/bundle/gems/activerecord-4.2.2/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/abstract_controller/base.rb:137:in `process'
 # /usr/local/bundle/gems/actionview-4.2.2/lib/action_view/rendering.rb:30:in `process'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_controller/metal.rb:196:in `dispatch'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_controller/metal.rb:237:in `block in action'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:74:in `call'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:43:in `serve'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/journey/router.rb:43:in `block in serve'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/journey/router.rb:30:in `each'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/journey/router.rb:30:in `serve'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/routing/route_set.rb:819:in `call'
 # /usr/local/bundle/gems/rack-1.6.4/lib/rack/etag.rb:24:in `call'
 # /usr/local/bundle/gems/rack-1.6.4/lib/rack/conditionalget.rb:25:in `call'
 # /usr/local/bundle/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
 # /usr/local/bundle/gems/clearance-1.10.1/lib/clearance/rack_session.rb:10:in `call'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
 # /usr/local/bundle/gems/activerecord-4.2.2/lib/active_record/query_cache.rb:36:in `call'
 # /usr/local/bundle/gems/activerecord-4.2.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:649:in `call'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:88:in `call'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:88:in `_run_callbacks'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:776:in `_run_call_callbacks'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:81:in `run_callbacks'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
 # /usr/local/bundle/gems/railties-4.2.2/lib/rails/rack/logger.rb:38:in `call_app'
 # /usr/local/bundle/gems/railties-4.2.2/lib/rails/rack/logger.rb:20:in `block in call'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/tagged_logging.rb:68:in `block in tagged'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/tagged_logging.rb:26:in `tagged'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/tagged_logging.rb:68:in `tagged'
 # /usr/local/bundle/gems/railties-4.2.2/lib/rails/rack/logger.rb:20:in `call'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/middleware/request_id.rb:21:in `call'
 # /usr/local/bundle/gems/rack-1.6.4/lib/rack/runtime.rb:18:in `call'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/middleware/static.rb:113:in `call'
 # /usr/local/bundle/gems/rack-cors-0.4.0/lib/rack/cors.rb:80:in `call'
 # /usr/local/bundle/gems/railties-4.2.2/lib/rails/engine.rb:518:in `call'
 # /usr/local/bundle/gems/railties-4.2.2/lib/rails/application.rb:164:in `call'
 # /usr/local/bundle/gems/rack-test-0.6.3/lib/rack/mock_session.rb:30:in `request'
 # /usr/local/bundle/gems/rack-test-0.6.3/lib/rack/test.rb:244:in `process_request'
 # /usr/local/bundle/gems/rack-test-0.6.3/lib/rack/test.rb:124:in `request'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/testing/integration.rb:297:in `process'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/testing/integration.rb:32:in `get'
 # /usr/local/bundle/gems/actionpack-4.2.2/lib/action_dispatch/testing/integration.rb:344:in `block (2 levels) in <module:Runner>'
 # ./spec/requests/users_spec.rb:7:in `block (2 levels) in <top (required)>'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `block in load'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
 # /usr/local/bundle/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
 # /usr/local/bundle/gems/spring-commands-rspec-1.0.4/lib/spring/commands/rspec.rb:18:in `call'
 # -e:1:in `<main>'

A suggested in the issue : #179, I added include ActionController::ImplicitRender and I have this error :

 Failure/Error: post "/api/v1/users.json", user: attributes_for(:user)
 NoMethodError:
   undefined method `user_url' for #<Api::V1::UsersController:0x007f504af71268>

At those lines, the responder seems to not respond to to_json.

The action works in development.

I don't know if it's related to rails-api or to responder. Can you help me?

@GCorbel
Copy link
Author

GCorbel commented Aug 11, 2015

I was wrong. The code does not work in development too.

@bf4
Copy link
Member

bf4 commented Dec 18, 2015

You'll need to include ImplicitRender, I believe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants