swiftype / swiftype-rb

Ruby client for the Swiftype API (docs: https://swiftype.com/documentation/clients/swiftype-rb/)
https://swiftype.com
MIT License
49 stars 21 forks source link

Engine.find() should return nil when engine is non-existent #2

Closed adelevie closed 12 years ago

adelevie commented 12 years ago

Current behavior:

engine = Swiftype::Engine.find('engineThatDoesNotExist')

Throws:

/Users/adelevie/.rvm/gems/ruby-1.9.3-p194/bundler/gems/swiftype-rb-cd57a00e5849/lib/swiftype/connection.rb:33:in `on_complete': Swiftype::NonExistentRecord (Swiftype::NonExistentRecord)
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday-0.8.1/lib/faraday/response.rb:9:in `block in call'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday-0.8.1/lib/faraday/response.rb:63:in `on_complete'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday-0.8.1/lib/faraday/response.rb:8:in `call'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday-0.8.1/lib/faraday/response.rb:8:in `call'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday_middleware-0.8.8/lib/faraday_middleware/response_middleware.rb:30:in `call'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday-0.8.1/lib/faraday/request/url_encoded.rb:14:in `call'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday-0.8.1/lib/faraday/response.rb:8:in `call'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday-0.8.1/lib/faraday/connection.rb:226:in `run_request'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/gems/faraday-0.8.1/lib/faraday/connection.rb:87:in `get'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/bundler/gems/swiftype-rb-cd57a00e5849/lib/swiftype/request.rb:22:in `request'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/bundler/gems/swiftype-rb-cd57a00e5849/lib/swiftype/request.rb:4:in `get'
    from /Users/adelevie/.rvm/gems/ruby-1.9.3-p194/bundler/gems/swiftype-rb-cd57a00e5849/lib/swiftype/engine.rb:4:in `find'
    from main.rb:10:in `<main>'

Proposed behavior:

engine = Swiftype::Engine.find("engineThatDoesNotExist") #=> nil
qhoxie commented 12 years ago

Hello,

We talked it over internally and agreed that a NonExistentRecord exception is proper behavior for this case. Anything like an Engine should be a known entity and thus a failed direct lookup should result in an exception.

Best, Quin