Skip to main content

Add pre-compiled Elixir on OS X

So, I've been a big Erlang fan for a few years now, and then found out about Elixir:  what I would describe as kind of a Ruby-ish creamy frosting on top of Erlang. But I'll address more on both in future. Right now, I thought I'd just give a quick and dirty way to add Elixir, if you've already got Erlang installed (hint: check-out this Erlang Solutions link for a pre-compiled Erlang solution).  You can also use brew to install both, but I have found that with the simplicity of brew, you give up having the most current version of software.  In both cases. The pre-compiled zip for the most current version of Elixir can be found here.  Unzipping reveals a folder containing everything you need.  For simplicity's sake, keeping everything pertaining to Elixir all within this folder makes the most sense.  By doing so, all that's needed is to position the folder, and then make links to all the executables in a directory already in our path.  Through the link, the OS will find the program, and everything the program needs (libs and such) are already where it expects to find them (in the folder). Rename the folder to: "Elixir".  The reason I do this is so that I can easily find it later, and just drag the old folder to the trash, replacing it with whatever the current version is (and not have to change any of the links-- drag and drop replacement).
NOTE:  the following assumes that you have "/usr/local/bin" on your path.
Now, move (mv) the newly renamed folder to the directory: "/usr/local/", so that the final directory path is now, "/usr/local/Elixir". Again from the terminal, change directories (cd) to "/usr/local/bin", as it's from here that we're going to set every thing up to play nice. With the current directory in the terminal now, "/usr/local/bin" add the following soft links to each of the Elixir executables (beginning '$' represents the terminal prompt in all examples):

$ ln -s /usr/local/bin/iex  iex

$ ln -s /usr/local/bin/elixir  elixir

$ ln -s /usr/local/bin/elixirc  elixirc

$ ln -s /usr/local/bin/mix  mix
Now, you can double check everything:

$ iex -v
$ elixir -v
$ elixir -v
$ mix -v
Provided everything is set up correctly, and you received version number's from each command, you're ready to rock with Elixir.

Comments

Popular posts from this blog

Dead Simple React.js with Meteor

I spent a little time exploring the patterns involved in using React.js with Meteor. It's incredibly easy, it turns out. I'll show some examples here. The setup: meteor add kadira:flow-router npm install react react-dom react-mounter npm install react-addons-pure-render-mixin meteor add react-meteor-data Then of course remove all blaze related meteor packages. Ok, Some basic component patterns: Let's create one that accepts a single argument: Hello.jsx import React from 'react'; export const Hello = ({name}) => ( <div>Hello, {name}</div> ); That's all there is to it. Now, let's see a pattern for a component that takes two arguments. We can see that to add further arguments, we can just tack them on after the first two: TwoArgs.jsx import React from 'react'; export const TwoArgs = ({one, two}) => ( <div> <h2>TwoArgs!</h2> <h3>One is: {one}</h3> <h3>Two is: {two}...

React Simplicity

This is just a quick intro to React to show how easy it is on a very basic level. React is often compared to Angular, but the two are very different: Angular is more of a framework , whereas React is more of a library . So, with React, we can make Components, and in so doing, we can intersperse plain Javascript to instill behavior. This article is not showing (or using) best practices, or a recommended structure. It's purpose is only to show how easy the basic mechanics of React are. Let's grab the getting started cli from React's page npm install -g create-react-app create-react-app my-app cd my-app npm start After this is done, and you have the project displayed in your browser, let's experiment. A boiler-plate header we can use for each new class can be as simple as: /src/Foo.js import React, { Component } from 'react'; class Foo extends Component { render(){ return(); } } export default Foo; So, all that we need to change to get st...

Kicking things off

My purpose here is to document various thoughts and findings as things come up, or come to mind.  All strictly technical, and kind of a development diary of sorts.  While ideally, others may find these things useful, my main intent is to have them here for my reference ;-) Still, I'll try to write them in tutorial fashion