I am trying to deploy the app with edeliver. However during the … I get the following error. Not sure what is it actually means. Though in the dev environment it works fine.
- mix compile - Successful
- iex -S mix phx.server - I can serve the api and no issues.
- Guardian can also authenticate the JWT token
So puzzled about deployment.
Building the code for edeliver
mix edeliver build release --verbose
Error:
Changed release version from 0.2.1 to 0.2.1+3-59fa8ac
Compiling 284 files (.ex)
== Compilation error in file lib/pxrf/auth/guardian.ex ==
** (FunctionClauseError) no function clause matching in Application."MACRO-compile_env"/4
The following arguments were given to Application."MACRO-compile_env"/4:
# 1
#Macro.Env<aliases: [], context: nil, context_modules: [Pxrf.Auth.Guardian], file: "/tmp/edeliver/pxrf/builds/lib/pxrf/auth/guardian.ex", function: nil, functions: [{Kernel, [!=: 2, !==: 2, *: 2, +: 1, +: 2, ++: 2, -: 1, -: 2, --: 2, /: 2, <: 2, <=: 2, ==: 2, ===: 2, =~: 2, >: 2, >=: 2, abs: 1, apply: 2, apply: 3, binary_part: 3, bit_size: 1, byte_size: 1, ceil: 1, div: 2, elem: 2, exit: 1, floor: 1, function_exported?: 3, get_and_update_in: 3, get_in: 2, hd: 1, inspect: 1, inspect: 2, is_atom: 1, is_binary: 1, is_bitstring: 1, is_boolean: 1, is_float: 1, is_function: 1, is_function: 2, ...]}], lexical_tracker: #PID<0.644.0>, line: 2, macro_aliases: [], macros: [{Kernel, [!: 1, &&: 2, ..: 2, ..//: 3, <>: 2, @: 1, alias!: 1, and: 2, binding: 0, binding: 1, def: 1, def: 2, defdelegate: 2, defexception: 1, defguard: 1, defguardp: 1, defimpl: 2, defimpl: 3, defmacro: 1, defmacro: 2, defmacrop: 1, defmacrop: 2, defmodule: 2, defoverridable: 1, defp: 1, defp: 2, defprotocol: 2, defstruct: 1, destructure: 2, get_and_update_in: 2, if: 2, in: 2, is_exception: 1, is_exception: 2, is_nil: 1, is_struct: 1, is_struct: 2, ...]}], module: Pxrf.Auth.Guardian, requires: [Application, Guardian, Kernel, Kernel.Typespec], ...>
# 2
{:the_otp_app, [line: 2, counter: {Pxrf.Auth.Guardian, 2}], Guardian}
# 3
[{:__MODULE__, [line: 2, counter: {Pxrf.Auth.Guardian, 2}], Guardian}, :permissions]
# 4
nil
(elixir 1.12.2) lib/application.ex:505: Application."MACRO-compile_env"/4
(elixir 1.12.2) expanding macro: Application.compile_env/2
lib/pxrf/auth/guardian.ex:2: Pxrf.Auth.Guardian (module)
(elixir 1.12.2) expanding macro: Kernel.||/2
lib/pxrf/auth/guardian.ex:2: Pxrf.Auth.Guardian (module)
(elixir 1.12.2) expanding macro: Kernel.@/1
lib/pxrf/auth/guardian.ex:2: Pxrf.Auth.Guardian (module)
(guardian 2.3.1) expanding macro: Guardian.__using__/1
A remote command failed on:
user@server
Output of the command is shown above and the command executed
on that host is printed below for debugging purposes:
FAILED with exit status 1:
[ -f /Users/username/.profile ] && source /Users/username/.profile
set -e
cd /tmp/edeliver/pxrf/builds
if [ "mix" = "rebar3" ]; then
echo "using rebar3 to compile files"
[[ "true" != "true" ]] && ./rebar3 clean || :
./rebar3 compile
elif [ "mix" = "rebar" ]; then
echo "using rebar to compile files"
[[ "true" != "true" ]] && ./rebar clean skip_deps=true || :
./rebar compile
elif [ "mix" = "mix" ] && [ "mix" = "mix" ]; then
echo "Checking whether deps must be compiled for mix version 1.3.[01234]"
# see https://github.com/boldpoker/edeliver/issues/94
if mix --version | grep 'Mix 1.3.[01234]' >/dev/null 2>&1 ; then
echo "Compiling deps because mix version 1.3.[01234] is used"
APP="pxrf" MIX_ENV="prod" mix deps.compile
fi
if [[ "true" = "true" ]]; then
APP="pxrf" MIX_ENV="prod" AUTO_VERSION="commit-count+git-revision+branch-unless-master" BRANCH="master" SKIP_RELUP_MODIFICATIONS="" RELUP_MODIFICATION_MODULE="" USING_DISTILLERY="true" mix do release.version --verbose, compile
else
APP="pxrf" MIX_ENV="prod" AUTO_VERSION="commit-count+git-revision+branch-unless-master" BRANCH="master" SKIP_RELUP_MODIFICATIONS="" RELUP_MODIFICATION_MODULE="" USING_DISTILLERY="true" mix do clean, release.version --verbose, compile
fi
elif [ "mix" = "mix" ]; then
echo "using mix to compile files"
if [[ "true" = "true" ]]; then
if [[ -n "commit-count+git-revision+branch-unless-master" ]]; then
hint_message 'Using --auto-version together with --skip-mix-clean would not work!'
fi
APP="pxrf" MIX_ENV="prod" AUTO_VERSION="commit-count+git-revision+branch-unless-master" BRANCH="master" SKIP_RELUP_MODIFICATIONS="" RELUP_MODIFICATION_MODULE="" USING_DISTILLERY="true" mix do deps.compile, release.version --verbose, compile
else
APP="pxrf" MIX_ENV="prod" AUTO_VERSION="commit-count+git-revision+branch-unless-master" BRANCH="master" SKIP_RELUP_MODIFICATIONS="" RELUP_MODIFICATION_MODULE="" USING_DISTILLERY="true" mix do clean, deps.compile, release.version --verbose, compile
fi
fi