Guys I wanted to use a version manager for Elixir. I would like to request about each and everyones review on the above available version managers. At first glance I like the concept of asdf being able to manage also ruby and node however am not sure if it has any quirks. I would like to ask the advantage of one over the other hopefully as far as you experienced them.
asdf has the big downsite, that it hides the installed system version completely and you can’t use it except by fully qualifying it (might create other problems because system and asdf executables are called in a mix) or kicking asdfs binary wrapper folder out of the $PATH. This makes it totally useless for me. Also it plugins for elixir and erlang don’t hold their promisses. I can’t install from git master, tag or sha, but only official releases while I have to test some of my work against master of both of them.
So I am using kiex (for elixir) and evm (erlang) currently. I don’t know if there is an easier way to do it, but for my personal testing it’s enough to be able to quick compile erlang from source and set $PATH in that shell so that erlang is used directly out of the sourcetree, while I do kiex install master and use that elixir version as necessary.
Especially the erlang workflow isnt optimal so far, but weren’t possible with asdf in general.
Any newer info on version managers? What is the suggested way of installing version 1.4 on Ubuntu? I used apt-get which currently installs version 1.3, but it is incompatible with some packages/proejcts, so I would like to update to 1.4.
I’d like to say that I have been using asdf to manage all of Erlang, Elixir, Ruby, Haskell, Idris, Rust, Postgres, PHP, Node.js and Crystal without any problems. The problems with installing from git master, tag or commit hash seem to be fixed, as far as I know. (I use the master version of Elixir and the nightly version of Rust, for instance).
The great advantage of asdf is that it handles all the tool-specific version management for you, and you do not have to remember all the different installation procedures for each of them.
I think @NobbZ’ advice thus is outdated now, but of course YMMV ;-).
I want to use asdf for everything and I’ve found that it’s fine for global installs of most languages, but I can’t get it to be more effective for Ruby than RVM. I don’t know what it is, but something about RVM works proper for me every time while I can’t get the same experience from rbenv or asdf.
As a data point, I’ve been using asdf for a few months also. It works like a charm and would be great if I had to manage multiple versions.
I’ve only run into one minor issue. I sometimes use IntelliJ IDEA and it would not recognize asdf’s elixir or erlang installs as valid. I ended up symlinking ~/.asdf/shims/[iex,erl,mix] to /usr/local/bin which quieted IDEA down.
ASDF for everything beside rust. Works great almost out of the box with everything. But it doesn’t work for rust (for me at least) because I couldnt make rustup add component work with asdf, and I need it very much.
I switched to systems elixir for development and have a script which runs tests in docker containers which are mimicking my target system as close as possible.
This does in a certain sense help to keep best practices which are enforced by warnings on a current version (using Funtoo I am mostly up to date) while stil ensuring compatibility with my target system(s).