UlrikHD

UlrikHD

How to stop mix to hard code a Node name for application release?

I got an application where I’d like to start the node with a (long) name dynamically determined during runtime based on the computer’s IP address. However when I run mix release the application is given a node at compile time. I can’t for the life of me get anything useful out the mix release docs

So my question is, how do configure my project to not start the system with a pre-defined node.

Bonus question would be why does mix release hard code a node name? Won’t it make it impossible to differentiate between two nodes of the same application?

This is mostly what’s in my mix.exs

defmodule Elevator.MixProject do
  use Mix.Project

  def project do
    [
      app: :elevator,
      version: "0.8.0",
      elixir: "~> 1.13",
      start_permanent: Mix.env() == :prod,
      env: Mix.env(),
      releases: [
        win_debug: [
          include_executables_for: [:windows],
          applications: [runtime_tools: :permanent],
          path: "releases/win_debug/"
        ],
        lab_debug: [
          include_executables_for: [:unix],
          applications: [runtime_tools: :permanent],
          path: "releases/lab_debug/"
        ]
      ]
    ]
  end

  def application() do
    [
      extra_applications: [:logger, :runtime_tools],
      mod: {Main, []}
      # Switch with Main to simulate single elevator
      # mod: {ElevatorSimul, []}
    ]
  end
end

Marked As Solved

UlrikHD

UlrikHD

After trawling through elixir repos on Github for hints, I got a working solution by creating a file rel/env.bat.eex with the lines:

@echo off
set RELEASE_DISTRIBUTION=none

This disables the application from starting up Node, so that we can manually control it via Node.start/3

I also got a file rel/env.sh.eex that I assume will apply the same changes on Linux.

#!/bin/sh

export RELEASE_DISTRIBUTION=none

Also Liked

kokolegorille

kokolegorille

You could also have used

mix release --init

It creates the rel folder and files automatically

UlrikHD

UlrikHD

C:\Users\UlrikHD\Documents\test> mix release --init
** (Mix) Could not invoke task "release": 1 error found!
--init : Unknown option

It’s mix release.init as of elixir 1.18 (just in case someone stumbles over it)

Thanks for the tip though, it might help others that stumbles over a similar problem

Where Next?

Popular in Questions Top

dotdotdotPaul
Okay, I'm having a heck of a time trying to figure out how to best handle the validation of belongs_to associations in Ecto. I'm sure I'...
New
LegitStack
I’m hoping you guys can give me some general advice and perhaps code examples if you’re feeling up to it. I’m very interested in Elixir,...
New
pgiesin
This should be a simple problem but I just can’t seem to figure it out. I have a standalone Elixir app that won’t find the database. Dep...
New
logicmason
Hi there, I'm working through my first release with elixir/phoenix. I've built a release with distillery and found that it crashes when I...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list....
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
Codball
Mix format works fine if run from the cmd. I’ve followed this to facilitate the implementation into VSC which involves downloading an ext...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New

Other popular topics Top

srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
Tee
can someone please explain to me how Enum.reduce works with maps
New
sergio
I couldn’t find any guides that worked well with Phoenix 1.6.0 and esbuild. I hope this helps people test the waters and eases you into t...
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
myronmarston
The Elixir Typespec docs show the following syntax for keyword lists in typespecs: # ... | [key: type] # keyword lis...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New

We're in Beta

About us Mission Statement