diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index bb0c834..702a4a5 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -15,10 +15,10 @@ jobs: uses: actions/checkout@v2 - name: Setup Elixir - uses: actions/setup-elixir@v1.5.0 + uses: erlef/setup-beam@v1 with: - elixir-version: 1.9.4 - otp-version: 22.1.4 + elixir-version: 1.12.0 + otp-version: 24.0 install-hex: false install-rebar: false @@ -38,10 +38,10 @@ jobs: uses: actions/checkout@v2 - name: Setup elixir - uses: actions/setup-elixir@v1.5.0 + uses: erlef/setup-beam@v1 with: - elixir-version: 1.9.4 - otp-version: 22.1.4 + elixir-version: 1.12.0 + otp-version: 24.0 - name: Install Dependencies run: | diff --git a/lib/plug_checkup/options.ex b/lib/plug_checkup/options.ex index fd8ded7..bb1ddb5 100644 --- a/lib/plug_checkup/options.ex +++ b/lib/plug_checkup/options.ex @@ -93,16 +93,19 @@ defmodule PlugCheckup.Options do end defp validate_json_encoder!(encoder) do - unless Code.ensure_compiled?(encoder) do - raise ArgumentError, - "invalid :json_encoder option. The module #{inspect(encoder)} is not " <> - "loaded and could not be found" - end - - unless function_exported?(encoder, :encode!, 2) do - raise ArgumentError, - "invalid :json_encoder option. The module #{inspect(encoder)} must " <> - "implement encode!/2" + with {:module, _module} <- Code.ensure_compiled(encoder), + true <- function_exported?(encoder, :encode!, 2) do + :ok + else + {:error, _reason} -> + raise ArgumentError, + "invalid :json_encoder option. The module #{inspect(encoder)} is not " <> + "loaded and could not be found" + + false -> + raise ArgumentError, + "invalid :json_encoder option. The module #{inspect(encoder)} must " <> + "implement encode!/2" end end end diff --git a/mix.exs b/mix.exs index 8814040..bb873d9 100644 --- a/mix.exs +++ b/mix.exs @@ -5,7 +5,7 @@ defmodule PlugCheckup.Mixfile do [ app: :plug_checkup, version: "0.6.0", - elixir: "~> 1.5", + elixir: "~> 1.10", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, description: description(),