Thanks to visit codestin.com
Credit goes to github.com

Skip to content

NoMethodError from intercom/request (again) #467

Closed
@sidonath

Description

@sidonath

Version info

  • intercom-ruby version: 3.7.6
  • Ruby version: 2.5.3

Expected behavior

intercom-ruby does not raise NoMethodError.

Actual behavior

Same issue as in #339 that's still not fixed properly.

We started getting undefined method '[]' for nil:NilClass at lib/intercom/request.rb:114 after upgrading from 3.5.25 to 3.7.5 and then to 3.7.6. But the problem is older than 3.5.25, so that's probably unrelated.

This exception was first fixed in #353, and then reverted/fixed in #359, by adding a handler for nil:

raise_errors_on_failure(response) if parsed_body.nil?
raise_application_errors_on_failure(parsed_body, response.code.to_i) if parsed_body['type'] == 'error.list'

The problem, however, is that, contrary to the name, raise_errors_on_failure doesn't always raise: if it doesn't recognize the HTTP status code it doesn't do anything, so nil propagates to the next line.

Maybe raise_errors_on_failure should raise for every response with code >= 400 or at least log the error somehow?

Steps to reproduce

I'm not sure how to reproduce it. I don't know which response from Intercom triggers this exception, but the server responding with any unhandled status code without body would trigger the exception.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions