Elixir 1.9 の私の関数は、外部 API からの json 応答をデコードし、次のようになります。
def decode({ok, body, "application/json"}) when is_binary(body) do
body
|> Poison.decode(keys: :atoms)
|> case do
{:ok, parsed} -> {ok, parsed}
_ -> {:error, body}
end
end
開発中は非常にうまく機能しますが、次のエラー メッセージでアプリケーションがクラッシュします。
** (EXIT) an exception was raised:
** (UndefinedFunctionError) function Poison.decode/2 is undefined (module Poison is not available)
依存関係が含まれている私の mix.ex は次のとおりです。
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
{ :credo, "~> 0.4", only: [:dev, :test] },
{ :httpoison, "~> 1.6" },
{ :plug_cowboy, "~> 2.0" },
{ :poison, "~> 3.1" },
{ :plug_logger_json, "~> 0.7.0" },
{ :stash, "~> 1.0.0" },
{:edeliver, ">= 1.6.0"},
{:distillery, "~> 2.0", warn_missing: false},
]
end
そして、これが私の製品ビルドをコンパイルした方法です:
MIX_ENV=prod mix deps.clean --all
&& MIX_ENV=prod mix deps.get
&& MIX_ENV=prod mix clean
&& MIX_ENV=prod mix compile
&& MIX_ENV=prod mix release my_app
mix.exs アプリケーション/0
def application do
[
applications: [:plug_logger_json, :httpoison, :edeliver],
extra_applications: [:logger, :plug_cowboy],
mod: {My.Application, []}
]
end
あなたの助けは非常に高く評価されます。