Skip to content

Allow payload on Etna::Error #53

@graft

Description

@graft

Currently Etna::Error raises with a simple message, as most errors do. However, often Etna applications produce complex, detailed error structures. These should be preserved on Etna::Error so they may be correctly formatted and passed on to the user.

To whit, we should amend Etna::Error#initialize to have an additional argument, payload=nil. Whatever object we like may be passed in here, available later via attr_reader :payload.

How might we make use of this? For example, in Etna::Controller when we rescue Etna::Error, this is the main error-formatting point for most Etna applications - with no JSON-payload error facility! Magma, notably, does not use Etna::Error hardly at all (it collects errors rather than raising), and instead uses Etna::Controller#failure directly to format its baroque JSON errors.

Etna::Controller should do the same, making use of Etna::Error#payload to determine whether there is any JSON content to the error (i.e., payload is not nil), which it can then use in place of e.message. This would allow Magma (etc.) to merely raise Etna::Error with a payload to return a JSON list of errors.

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