Grocery
One or more direct or transitive dependencies are missing from :applications or :included_applications, they will not be included in the release:
I’m on my day 3 trying to provision server on DO and I got to the point where I can build and deploy via edeliver/distillery. However I’m running into issue where app crashes with an error like this:
(UndefinedFunctionError) function Guardian.Plug.VerifySession.call/2 is undefined
So I figured guardian app doesn’t get included in the release somehow?
EDIT: I just realised that Guardian is not in the list of the applications anyways. So I have no idea what’s going on. Why Guardian is not present in prod environment?
When I build locally I see this (I can’t see any warnings when doing mix edeliver build release):
==> One or more direct or transitive dependencies are missing from
:applications or :included_applications, they will not be included
in the release:
:arc
:breadcrumble
:earmark
:elixir_make
:guardian
:html_sanitize_ex
:kerosene
:mochiweb
:phoenix_haml
This can cause your application to fail at runtime. If you are sure
that this is not an issue, you may ignore this warning.
My mix.exs has this defined (and everything works in dev just fine):
def application do
[mod: {LoadedBike, []},
applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext,
:phoenix_ecto, :postgrex, :comeonin, :arc_ecto, :edeliver]]
end
rel/config.exs has this:
release :loaded_bike do
set version: current_version(:loaded_bike)
end
I poked around and found that you can add set :applications [...] in there. But why? Shouldn’t it be implicit? Or do I really have to copy-paste things? What am I missing?
I’m really close. It’s just this problem and then I’ll have to deal with assets. If somebody can share /.deliver/config for Phoenix 1.3 I’d appreciate it. I think biggest difference is that there’s /assets folder now.
Most Liked
NobbZ
You posted a warning which tells you missing applications. Have you tried adding them?
DeLongShot
FYI, for anyone who finds this later, if you are using Elixir >= 1.4, you do not need to list your dependencies under the applications key anymore in mix.exs.
Leaving the applications key blank, mix will automatically infer your applications from your dependencies. See more details in 1.4 release notes: https://elixir-lang.org/blog/2017/01/05/elixir-v1-4-0-released
mindreader
For anyone who finds this even later, some dependencies just are not caught during release. I’m not sure what causes it but I’m guessing the way they are used in our codebase just causes mix to not detect that they are used, so in release mode it strips them out.
You never have to specify applications, but in cases where the lib is definitely missing you can put it in your extra_applications key in mix.exs.
def application do [extra_applications: [:logger, :sweet_xml]]








