Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Elixir | vagrantで作成したUbuntu1204 + Erlang R16B + Elixir環境でElixirをHello Worldする

概要

vagrantで作成したUbuntu1204 + Erlang R16B + Elixir環境でElixirをHello Worldする

内容

前提

Vagrantが使用可能な環境を構築すること
Windows7環境へのvagrantインストールについては下記参照
http://d.hatena.ne.jp/tbpg/20131017/1382016334
Erlang R16Bのインストールを行う
※Vagrantfile参照

Elixirのインストール

※Vagrantfile参照

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

$script = <<SCRIPT
su - vagrant -c '
  PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
  sudo apt-get -y install git

  sudo apt-get update -y
  sudo apt-get install build-essential -y

  mkdir /home/vagrant/work
  cd /home/vagrant/work
  sudo aptitude install erlang -y
  sudo aptitude install libncurses5-dev -y
  wget http://www.erlang.org/download/otp_src_R16B01.tar.gz
  tar zxvf otp_src_R16B01.tar.gz
  cd otp_src_R16B01
  ./configure
  make
  sudo make install

  git clone https://github.com/elixir-lang/elixir.git
  cd elixir
  make test
'
echo 'export PATH="$PATH:/home/vagrant/work/otp_src_R16B01/elixir/bin"' >> /home/vagrant/.bash_profile
source /home/vagrant/.bash_profile
sudo chown vagrant:vagrant /home/vagrant/.bash_profile
SCRIPT

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu-12.04-x64" # box url = http://files.vagrantup.com/precise64.box
  config.vm.provision "shell", inline: $script
end
テスト

上記のVagrantfileで仮想環境を構築

vagrant up

sshで仮想環境にssh接続

vagrant ssh

elixirがインストールされ、パスが通っていることを確認

vagrant@precise64:~$ elixir -v
Elixir 0.10.4-dev

Hello World用のexファイルを作成する
module_name.ex

defmodule ModuleName do
  def hello do
    IO.puts "Hello World"
  end
end

対話環境のiexを起動してコンパイルと実行を行う

vagrant@precise64:~$ iex
iex(1)> c("module_name.ex")
[ModuleName]
iex(2)> ModuleName.hello
Hello World
:ok

※Ctrl+Cで終了

関連

Vagrantのインストールについては下記参照
Windows7環境へのインストール
http://d.hatena.ne.jp/tbpg/20131017/1382016334

Dave TomasのElixirに関するセッション
2013/10/26 Rakuten TechConf2013 /Dave Tomas/Elixir: The joy of Ruby, the Power of Erlang
https://www.youtube.com/watch?v=1a4-1skImgA#t=11