Table of Contents generated with DocToc

Changelog

v2.1.0

Enhancements

  • #12 - @KronicDeth

    • Extract Retort.Resources.timeout/2 to Retort.Resources.Timeout.get_or_default(module, function). Retort.Resources.Timeout also has functions for deleting and putting module-wide and function name specific timeouts, to make testing easier and less boiler plate needed in override examples.

      • Retort.Resources.Timeout.delete(module) will delete timeouts set by Retort.Resources.Timeout.put(module, timeout) OR Retort.Resources.Timeout.put(module, function_name, timeout).
      • Retort.Resources.Timeout.delete(module, timeout) will delete timeout set by Retort.Resources.Timeout.put(module, function_name, timeout) OR remove the timeout for function_name and leave it for the other function names when Retort.Resources.Timeout.put(module, timeout) is called.
      • Retort.Resources.Timeout.put(module, timeout) will set the timeout for all Retort.Client.Generic calls by module that called use Retort.Resources.
      • Retort.Resources.Timeout.put(module, function_name, timeout) will set the timeout for all Retort.Client.Generic function_name calls by module that called use Retort.Resources.
      • Retort.Resources.Timeout.put(module, function_name, timeout, func) will only temporarily Retort.Resources.Timeout.put/3, but for the duration passed function only. This can be used to test timeout handling.
    • Update to credo 0.7.4.

Bug Fixes

  • #12 - Fix formatting of timeout override example code. - @KronicDeth

Deprecations

  • #12 - Retort.Resources.timeout(module, function_name) is deprecated; use Retort.Resources.Timeout.get_or_default(module, function_name) instead. - @KronicDeth

v2.0.0

Enhancements

  • #9 - Document Retort.Resources. - @KronicDeth
  • #10 - @KronicDeth

    • Update to alembic 3.3.0

      • Drop the need for changeset_render by using JaSerializer.Formatter.Utils.format_key directly to make it the same as calcinator.
    • Update to calcinator 3.0.0

      • Retort.Response.Error.to_calcinator_error(Retort.Response.t, Ecto.Changeset.t) will convert Retort.Response.t data Alembic.Document.t errors to a Calcinator error. If the Alembic.Error.t format is unrecognized, it is assumed to be convertable to Ecto.Changeset.t errors using Retort.Response.Error.Ecto.Changeset.add_alembic_errors(changeset, errors)
    • Error message instead of missing clause for unknown Poison version during tests.
    • Update dependencies

      • amqp 0.2.2
      • faker 0.8.0
      • timex 3.1.15
  • #11 - @KronicDeth

    • Update CircleCI

      • Erlang 19.3
      • Elixir 1.4.2

Bug Fixes

  • #9 - @KronicDeth

    • A missed rename left the application name used for Application.get_env as the original :interpreter_server_rpc instead of :retort in Retort.Resources.timeout/2.
    • Fix (Map -> map) typo in Retort.Client.Generic.start_link options.
    • Retort.Resources.client_start_link should not have been 0-arity, but 1-arity, so it can take in the client_start_link_options as an argument instead of depending on lookup by module to retrieve some hidden state.
  • #10 - @KronicDeth

    • Retort.Meta.valid!/2 checked if the Ecto.Repo was sandboxed with Application.get_env(:retort, Retort.Repo), which is a faithful translation of the original in :interpreter_server_rpc, but has the problem that it only works in retort itself. To allow the repo to be check to be configured, Retort.Meta.valid!/2 now takes an :ecto_repo_module option, which is check if its sandboxed if any of the :ecto_schema_modules are database-backed (have a non-blank __schema__(:source)).
    • Retort.Server.Generic.Resources.handle_method/2 converts {:error, :sandbox_token_missing} into RPC response errors instead of a CaseClauseError exception.
    • Use alias Retort.Request in Retort.RequestTest.
    • Increased allowed Cyclomatic Complexity for credo as it must be at least 10 (instead of default 9) for Retort.Server.Generic.Resources.put_calcinator_error.

Incompatible Changes

  • #9 - Retort.Resources.client_start_link callback changes arity from 0 to 1 and now should take in options instead of calling Retort.Resources.client_start_link_options/0. - @KronicDeth
  • #10 - @KronicDeth

    • Retort.Client.Generic.start_link calls where the ecto_schema_module_by_type ecto_schema_modules are database-backed will now require :ecto_repo_module to check if the Ecto.Repo.t is sandboxed.
    • Require alembic ~> 3.3

      • changeset_render is no longer needed for Retort.Server.Generic.Resources, so Retort.Server.Generic.Resources.t has been removed and a Calcinator.t should be used as the state instead.
    • Require to calcinator ~> 3.0

      • Retort.Response.Error.Ecto.Changeset.add_alembic_errors(changeset, [Alembic.Error.t]) will convert the Alembic.Error.ts to validation errors added to the changeset. It’s a way to reverse the conversion done by Alembic.Document.from_ecto_changeset in alembic 3.3.0.
      • Retort.Response.Error.to_calcinator_error(Retort.Response.t, Ecto.Changeset.t) will convert Retort.Response.t data Alembic.Document.t errors to a Calcinator error. If the Alembic.Error.t format is unrecognized, it is assumed to be convertable to Ecto.Changeset.t errors using Retort.Response.Error.Ecto.Changeset.add_alembic_errors(changeset, errors)
      • Retort.Server.Generic.Resoruces.handle_method/2 is simplified using put_rendered_or_error/2, so that the large, duplicate cases are eliminated and error handling remains consistent across actions. For error, put_calcinator_error is called.
      • use Retort.Resources generates delete(changeset, query_options) to match the updated Calcinator.Resources.delete/2.
      • Retort.Resources.client_start_link_options now takes (module, query_options), so that if :meta exists in query_options and “beam” is set, then the pre-existing “beam” will be reused.
      • All action callbacks in Retort.Resources catch {:exit, {:timeout, _}} from the Retort.Client.Generic calls, log them, and then return {:error, :timeout}, so that Calcinator.Controller can turn it into a 504 Gateway Timeout instead of crashing the calling process.
      • All action callbacks in Retort.Resources can transform {:error, %Retort.Response.Error{}} to Calcinator errors using Retort.Client.Generic.error_to_calcinator_error.
      • meta in query_options is put back into the mergable params passed to Retort.Client.Generic calls in Retort.Resources
      • Coverage of all error returns from both Calcinator.Resources.Ecto.Repo and Retort.Client.Generic in tests.

v1.3.2

Bug Fixes

  • #7 - It was a bug that Calcinator allowed a list for filters instead of a map, so correct Retort to follow. - @KronicDeth

v1.3.1

Bug FIxes

v1.3.0

Enhancements

  • #5 - @KronicDeth

    • Dependency updates

      • alembic to 3.2.0
      • calcinator to 2.2.0
      • amqp to 0.2.0 (Native support for Erlang 19! No more need for the git dependency for Erlang 19 support.)
      • ex_doc 0.15.1
      • ex_machina 2.0.0
      • ja_serializer 0.12.0
      • junit_formatter 1.3.0
      • timex 3.1.13
      • uuid 1.1.7
      • poison 3.1.0
      • credo 0.7.3
    • Add CircleCI badge
    • Add HexFaktor badge
    • Add InchEx

Bug Fixes

v1.2.0

Enhancements

  • #3 - Regression test for use Retort.Resources in dialyzer - @KronicDeth

Bug Fixes

  • #3 - @KronicDeth

    • De-alias spec types in Retort.Resources.__using__ because spec types had no alias to setup correct alias names and aliases should not be used in quote block because they’ll leak into module where use occurs.
    • Had to use map instead of Alembic.Pagination.t because Alembic.Pagination.t is not a subtype of map needed by Calcinator.Resources.list callback.
  • #4 - | has higher precedence than -> so the | ends up being interpreted as t -> {:ok, data} OR Retort.Client.Generic.error instead of the correct t -> EITHER {:ok, data} OR Retort.Client.Generic.error. - @KronicDeth

v1.1.0

Enhancements

  • #2 - @KronicDeth

    • Ignore IntelliJ project files
    • Update to calcinator 2.1.0
    • Update to credo 0.6.0
    • Update to timex 3.1.8
    • Update to uuid 1.1.6

Bug Fixes

  • #2 - @KronicDeth

    • Fix credo 0.6.0 errors

      • Add missing @specs
      • Remove extra blank lines
    • Fix Elixir 1.4 warnings about missing () on 0-arity function calls.
    • Use correct rabbit_common in mix.lock for Erlang 19+.