{"action":"created","issue":{"url":"https://api.github.com/repos/airbnb/hypernova-ruby/issues/1","repository_url":"https://api.github.com/repos/airbnb/hypernova-ruby","labels_url":"https://api.github.com/repos/airbnb/hypernova-ruby/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/airbnb/hypernova-ruby/issues/1/comments","events_url":"https://api.github.com/repos/airbnb/hypernova-ruby/issues/1/events","html_url":"https://github.com/airbnb/hypernova-ruby/pull/1","id":160338749,"number":1,"title":"Fixes errors from causing more errors","user":{"login":"goatslacker","id":10632,"avatar_url":"https://avatars.githubusercontent.com/u/10632?v=3","gravatar_id":"","url":"https://api.github.com/users/goatslacker","html_url":"https://github.com/goatslacker","followers_url":"https://api.github.com/users/goatslacker/followers","following_url":"https://api.github.com/users/goatslacker/following{/other_user}","gists_url":"https://api.github.com/users/goatslacker/gists{/gist_id}","starred_url":"https://api.github.com/users/goatslacker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goatslacker/subscriptions","organizations_url":"https://api.github.com/users/goatslacker/orgs","repos_url":"https://api.github.com/users/goatslacker/repos","events_url":"https://api.github.com/users/goatslacker/events{/privacy}","received_events_url":"https://api.github.com/users/goatslacker/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2016-06-15T05:02:21Z","updated_at":"2016-06-15T19:05:19Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/airbnb/hypernova-ruby/pulls/1","html_url":"https://github.com/airbnb/hypernova-ruby/pull/1","diff_url":"https://github.com/airbnb/hypernova-ruby/pull/1.diff","patch_url":"https://github.com/airbnb/hypernova-ruby/pull/1.patch"},"body":"There was an issue with Module.const_get(name) where Rails was throwing\r\n`uninitialized constant Module::Error`. Seems like this is not needed as\r\nwe can just pass in the whole error object through to `on_error` so\r\nwe'll just keep it simple and do that.\r\n\r\n@tommydangerous @ljharb \r\n\r\nFound it: @wyattdanger @mstorus "},"comment":{"url":"https://api.github.com/repos/airbnb/hypernova-ruby/issues/comments/226288109","html_url":"https://github.com/airbnb/hypernova-ruby/pull/1#issuecomment-226288109","issue_url":"https://api.github.com/repos/airbnb/hypernova-ruby/issues/1","id":226288109,"user":{"login":"tommydangerous","id":1066980,"avatar_url":"https://avatars.githubusercontent.com/u/1066980?v=3","gravatar_id":"","url":"https://api.github.com/users/tommydangerous","html_url":"https://github.com/tommydangerous","followers_url":"https://api.github.com/users/tommydangerous/followers","following_url":"https://api.github.com/users/tommydangerous/following{/other_user}","gists_url":"https://api.github.com/users/tommydangerous/gists{/gist_id}","starred_url":"https://api.github.com/users/tommydangerous/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tommydangerous/subscriptions","organizations_url":"https://api.github.com/users/tommydangerous/orgs","repos_url":"https://api.github.com/users/tommydangerous/repos","events_url":"https://api.github.com/users/tommydangerous/events{/privacy}","received_events_url":"https://api.github.com/users/tommydangerous/received_events","type":"User","site_admin":false},"created_at":"2016-06-15T19:05:19Z","updated_at":"2016-06-15T19:05:19Z","body":"Spoke with @goatslacker and we believe that responsibility to instantiate an error object with the message should not be the gem's but the client/consumer's plugin. Also, the gem has no context of custom errors which are domain specific (e.g. `Restore::RecordNotFound`) which will lead to many raised errors for `uninitialized constant...`. Instead, we will call `on_error` and guarantee an argument with the following shape:\r\n```\r\n{\r\n  \"name\" => \"SomeError\",\r\n  \"message\" => \"more info about this error\",\r\n}\r\n```"}}
{"actor":{"display_login":"tommydangerous"}}