veimis

veimis

Programming Elixir 1.6 - Distillery-The Elixir Release Manager chapter commands for Elixir 1.9/Distillery 2.1

I hope this will prove useful for other readers of the book.

I was working through chapter 20 OTP: Applications and run to issues with the example for creating a release using Distillery.

The command mix release --env=prod failed with an error like

** (Mix) Could not invoke task “release”: 1 error found!
–env : Unknown option

Since Elixir 1.9 brings releases directly into Elixir, the mix release -command previously used with distillery now overlaps with the Elixir release command.
Distillery version 2.1 works with Elixir 1.9 and updates the distillery release command to mix distillery.release.

I made the following changes to be able to locally follow the distillery release example in the book.

Elixir and OTP versions used:

$ elixir --version
Erlang/OTP 23 [erts-11.0.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Elixir 1.10.4 (compiled with Erlang/OTP 22)

I don’t have relevant pages as my kindle only shows “locations”, but I have included the section topics.

Section “Your First Release”

1 Change dependency to distillery 2.1 in mix.exs
:x: {:distillery, “~> 1.5”, runtime: false}
:white_check_mark: {:distillery, “~> 2.1”, runtime: false}

2 Use the updated command for initializing the release
:x: mix release.init
:white_check_mark: mix distillery.init

3 Create the first release (0.0.1)
:x: mix release --env=prod
:white_check_mark: MIX_ENV=prod mix distillery.release --env=prod

This first failed for me (after following the book example) with

Release failed: could not load /path/config/config.exs

I got around it by adding a minimal config.exs file
mkdir config && echo “import Config” > config/config.exs

Side note:
In the book the deploy commands are run with ssh.
I tried, instead, to run the deploy commands directly from the _build -directory and found out that consecutive releases don’t work properly that way.

“I only just noticed that the original issue confirms that this issue was occurring because of running from _build.”
Successive hot upgrade releases produce error · Issue #160 · bitwalker/distillery · GitHub

This might be documented on the distillery documentation, but I haven’t made it there yet.

Section “A Second Release”

4 Create the first upgrade release (0.2.0)
:x: mix release --env=prod --upgrade
:white_check_mark: MIX_ENV=prod mix distillery.release --env=prod --upgrade

5 Upgrade running code
This might be because I didn’t use ssh, but instead just copied the archives to separate directory,
but the command deploy/bin/sequence upgrade 0.2.0 failed with

Node user@host is not running!

To successfully run the upgrade I changed the following:
Update node name, -name argument, in rel/vm.args with the right node name. You can check the node name in the iex console with Node.self command.
Not sure if relevant, but I updated the set cookie option (environment :prod) in rel/config.exs with the value in ~/.erlang.cookie

Section “Migrating Server State”
6. Create the second release
:x: mix release --env=prod --upgrade
:white_check_mark: MIX_ENV=prod mix distillery.release --env=prod --upgrade

That did it for me :relaxed:

Where Next?

Popular Pragmatic Bookshelf topics Top

johnp
Running the examples in chapter 5 c under pytest 5.4.1 causes an AttributeError: ‘module’ object has no attribute ‘config’. In particula...
New
Alexandr
Hi everyone! There is an error on the page 71 in the book “Programming machine learning from coding to depp learning” P. Perrotta. You c...
New
Mmm
Hi, build fails on: bracket-lib = “~0.8.1” when running on Mac Mini M1 Rust version 1.5.0: Compiling winit v0.22.2 error[E0308]: mi...
New
jeremyhuiskamp
Title: Web Development with Clojure, Third Edition, vB17.0 (p9) The create table guestbook syntax suggested doesn’t seem to be accepted ...
New
gilesdotcodes
In case this helps anyone, I’ve had issues setting up the rails source code. Here were the solutions: In Gemfile, change gem 'rails' t...
New
brian-m-ops
#book-python-testing-with-pytest-second-edition Hi. Thanks for writing the book. I am just learning so this might just of been an issue ...
New
brunogirin
When installing Cards as an editable package, I get the following error: ERROR: File “setup.py” not found. Directory cannot be installe...
New
oaklandgit
Hi, I completed chapter 6 but am getting the following error when running: thread 'main' panicked at 'Failed to load texture: IoError(O...
New
bjnord
Hello @herbert ! Trying to get the very first “Hello, Bracket Terminal!" example to run (p. 53). I develop on an Amazon EC2 instance runn...
New
davetron5000
Hello faithful readers! If you have tried to follow along in the book, you are asked to start up the dev environment via dx/build and ar...
New

Other popular topics Top

DevotionGeo
I know that these benchmarks might not be the exact picture of real-world scenario, but still I expect a Rust web framework performing a ...
New
Exadra37
I am thinking in building or buy a desktop computer for programing, both professionally and on my free time, and my choice of OS is Linux...
New
brentjanderson
Bought the Moonlander mechanical keyboard. Cherry Brown MX switches. Arms and wrists have been hurting enough that it’s time I did someth...
New
AstonJ
Do the test and post your score :nerd_face: :keyboard: If possible, please add info such as the keyboard you’re using, the layout (Qw...
New
Margaret
Hello everyone! This thread is to tell you about what authors from The Pragmatic Bookshelf are writing on Medium.
1147 29994 760
New
PragmaticBookshelf
Rails 7 completely redefines what it means to produce fantastic user experiences and provides a way to achieve all the benefits of single...
New
PragmaticBookshelf
Author Spotlight: VM Brasseur @vmbrasseur We have a treat for you today! We turn the spotlight onto Open Source as we sit down with V...
New
PragmaticBookshelf
Author Spotlight: Peter Ullrich @PJUllrich Data is at the core of every business, but it is useless if nobody can access and analyze ...
New
PragmaticBookshelf
Get the comprehensive, insider information you need for Rails 8 with the new edition of this award-winning classic. Sam Ruby @rubys ...
New
AstonJ
This is a very quick guide, you just need to: Download LM Studio: https://lmstudio.ai/ Click on search Type DeepSeek, then select the o...
New

Sub Categories: