Elixir v1.9.0-rc.0 released

Regarding documentation, those concerns aren’t solved right now (it is too soon) but I believe it will be solved in the short term as, by being part of core, more people will use it, battle test it, document it, write guides, etc. For example, [latest Ecto ships with functions(Add Ecto.Migrator.with_repo/2 to start/stop apps for migrations by josevalim · Pull Request #113 · elixir-ecto/ecto_sql · GitHub) that make running Ecto tasks inside a release very straightforward]. Phoenix guides will also be updated to cover it.

In particular:

Phoenix will ship with guides for this (it also does for distillery though).

There is a well-documented path for this in Elixir releases (TL;DR - there is a config/releases.exs that runs on release boot).

Custom code is still necessary for Elixir but you don’t need shell scripts. Only a module with functions you will invoke. See the Ecto link above and the official guides. The Hex migration (which is a Phoenix app) covered this too: http://blog.plataformatec.com.br/2019/05/updating-hex-pm-to-use-elixir-releases/

Same as above other environments variables: just put it in config/releases.exs. In fact, for Phoenix v1.4 projects, getting it to work is a matter of renaming config/prod.secret.exs to config/releases.exs.

7 Likes

Thanks for the quick response! This makes me feel much more comfortable with the new process. I think in particular the runtime release configuration support will be a huge improvement and will alleviate a big reason why releases were confusing in the past.

I think I remember that it is a future goal to unify the experience of using mix and releases so that there isn’t the “I did this easily in mix why is it so different in a release” reaction. That, in my opinion, will mark the resolution of the final difficulty with deployment for Elixir apps now that runtime configuration has been improved and release generation brought to core.

Cheers to a bright future :slight_smile:

2 Likes