Сбой выпуска микса при отсутствии файла приложения эликсира
У меня есть простой сайт, написанный на эликсире / фениксе. Я сделал некоторые изменения сегодня и хотел развернуть его в производство.
Я запустил репо, вытащил его на рабочий сервер и создал релиз с:
MIX_ENV=prod mix release
и это не удалось... Так что я запустил его снова с --verbosity=verbose
и это не с:
silent])===> Provider (relup) failed with: {error,
{rlx_prv_relup,
{relup_script_generation_error,
systools_relup,
{file_problem,
{"/home/herman/alive/rel/alive/lib/elixir-1.1.1/ebin/elixir.appup",
{error,
{open,
"/home/herman/alive/rel/alive/lib/elixir-1.1.1/ebin/elixir.appup",
enoent}}}}}}}
Кто-нибудь знает, как решить эту проблему?
Текущая версия 0.0.6 работает под управлением elixir 1.1.0, новая версия 0.0.7 с 1.1.1.
мой mix.exs:
defmodule Alive.Mixfile do
use Mix.Project
def project do
[app: :alive,
version: "0.0.7",
elixir: "~> 1.0",
elixirc_paths: elixirc_paths(Mix.env),
compilers: [:phoenix] ++ Mix.compilers,
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps]
end
# Configuration for the OTP application
#
# Type `mix help compile.app` for more information
def application do
[mod: {Alive, []},
applications: [
:phoenix,
:phoenix_html,
:cowboy,
:logger,
:phoenix_ecto,
:timex,
:mariaex]
]
end
# Specifies which paths to compile per environment
defp elixirc_paths(:test), do: ["lib", "web", "test/support"]
defp elixirc_paths(_), do: ["lib", "web"]
# Specifies your project dependencies
#
# Type `mix help deps` for examples and options
defp deps do
[{:phoenix, "~> 1.0.1"},
{:phoenix_ecto, "~> 1.1"},
{:mariaex, ">= 0.0.0"},
{:phoenix_html, "~> 2.1"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:cowboy, "~> 1.0"},
{:timex, ">= 0.0.0"},
{:exrm, "~> 0.19.9"},
{:rebar3_hex, ">= 0.0.0"},
{:plug_forwarded_peer, "~> 0.0.2" }
]
end
end
1 ответ
Похоже, вы пытаетесь использовать горячую загрузку кода в выпусках. Это отличная функция, но она очень сложная, если вы хотите обновить такие вещи, как версия Elixir, с которой вы работаете.
Для простых случаев сгенерированные приложения хороши, но для более сложных их может не хватать. Основная проблема заключается в обновлении запущенных процессов, изменении состояния, обновлении таблиц ets и т. Д. Вам необходимо рассмотреть ваше приложение, а также все ваши зависимости. Написание и тестирование правильных инструкций по обновлению (и понижению) может занять много времени. Иногда это того стоит, но я бы сказал, что в большинстве случаев традиционный скользящий выпуск (чтобы гарантировать время безотказной работы) может быть гораздо более простым и понятным решением - достаточно хорошим.
Лично я использую релизы в производстве, но не горячую загрузку кода, именно по вышеуказанным причинам.