AstonJ

AstonJ

Which Elixir version manager are you using? (Poll)

  • asdf
  • exenv
  • kerl
  • kiex
  • none
  • other
0 voters

asdf

Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more

Manage multiple runtime versions with a single CLI tool, extendable via plugins

asdf-vm is a CLI tool that can manage multiple language runtime versions on a per-project basis. It is like gvm , nvm , rbenv & pyenv (and more) all in one! Simply install your language’s plugin!

Why use asdf-vm?

  • single CLI for multiple languages
  • consistent commands to manage all your languages
  • single global config keeping defaults in one place
  • single .tool-versions config file per project
  • support for existing config files .node-version , .nvmrc , .ruby-version for easy migration
  • automatically switches runtime versions as you traverse your directories
  • simple plugin system to add support for your language of choice
  • completion scripts managed by the plugin, not you!

exenv

Groom your app’s Elixir environment with exenv

Based totally on the GREAT rbenv

rbenv’s documentation largely applies here as well

kiex

Kiex allows you to easily build and switch between different Elixir versions.

It supports setting the default (global) Elixir version as well as per shell/project versions.

Everything is self-contained under ~/.kiex.

Usage is based lightly on RVM, kerl, and rbenv.

NOTE: Some Erlang source builds are broken. See below

kerl

Easy building and installing of Erlang/OTP instances

Kerl aims to be shell agnostic and its only dependencies, excluding what’s required to actually build Erlang/OTP, are curl and git .

All is done so that, once a specific release has been built, creating a new installation is as fast as possible.

OTP Support Policy

As of 2017 November 8, we are supporting OTP builds back to R15. Older builds may or may not work. We will advance release support as new releases of OTP become available. For example, when OTP 21 is released, we will support Erlang builds R16 and newer.

First Post!

AstonJ

AstonJ

For anyone using ASDF - are you using it with other languages as well? How are you getting on?

@akitaonrails - are you still happy using it for Ruby as well?

Most Liked

blatyo

blatyo

Conduit Core Team

I use asdf for everything: elixir, erlang, javascript, yarn, ruby, java, kotlin, rust, terraform

17
Post #3
AstonJ

AstonJ

This thread has reminded me how useful polls are on a forum. Not only can you quickly get a sense of that particular topic by looking at the poll results, but being able to discuss and seek clarification in the thread itself is incredibly useful.

Let’s try something new - whenever we post a poll on an important topic such as this one we’ll also pin it for a week. If that ends up being useful we’ll go through each of our polls on an annual basis and pin them for a week too, perhaps renewing them (with a new thread) every 3 to 5 years (depending whether there are new options available, etc).

hauleth

hauleth

Nix allows me to version way more things than just runtimes/compilers. Additionally this completely prevents me from Erlang/Elixir version mismatch. I use Nix also as my system package manager, so it is like Homebrew and ASDF in one package. Also the idea that I do not need to have packages available globally and instead have them per-environment is very useful.

You can version everything, DB, ElixirLS, Vim, OpenSSL, etc.

No, as Nix is whole functional programming language that is used to define working environment, so this is way harder to grasp and understand, but on the other hand it gives you enormous power as it can be used to:

  • define work environment
  • define CI environment
  • configure deployment builds
  • provide “simple” definition for others to run your application (for example if this is FLOSS or you need non-Elixir people to run it locally because they are for example mobile developers)

The last one is interesting, because imagine that you have your release defined in default.nix in your repo, so the user on the other end can do (IIRC, I am on my phone so it can differ a little):

let
  my_app = fetchFromGit {
    repo = "https://my-repo.url/repo.git"
  };
in mkDerivation {
  buildInputs = [my_app];
}

And they will have access your application via simple my_app start in their shell (if the derivation is properly written). So this provides way more possibilities than ASDF.

Last Post!

blatyo

blatyo

Conduit Core Team

I tried this before I was using asdf. The problem was that file system operations are really slow using docker on a mac, when it has to sync files to the docker container and the host when either changes them. When you’re not mounting a file system it does work pretty well though. I use docker locally for running things as local services like databases, caches, queues, etc.

Where Next?

Popular in Polls Top

AstonJ
The stereotype for ‘geeks’ is multiple monitors! But let’s see… poll
New
ryanswapp
I think it would be interesting to see how most people are using Phoenix in production. Do you use it as an API backend for a SPA? Or do ...
New
jaimeiniesta
Alchemists everywhere! Join our poll to see what countries have the most Elixir developers! (Please note if you voted in the original po...
New
AstonJ
Polls are a great way to easily get a snapshot of things, and we’ve had some really interesting polls over the years! Here are some tips...
New
Nezteb
poll The poll allows up to 2 votes for cases where people have a preferred tool for Elixir and a separate preferred tool for Erlang or th...
New
New
spicychickensauce
There are many v0 libraries in the elixir echo system, where at least officially, semantic versioning means nothing. However, it seems t...
New

Other popular topics Top

JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1144 54996 245
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
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

We're in Beta

About us Mission Statement