Elixirを全く触った事ないオレがPhoenix入門したログ
リンク
方針
- 今後も触るかどうか分からない為、Vagrant上に環境を作る
- 面倒なのでドキュメントは後で読む
- CRUDを作る
- 文章量が多くなりそうなので何回かに分ける
環境
- Mac OS X 10.10.3
- Homebrew
- VirtualBox
- Vagrant
- ubuntu trusty64
インストール
ここでは以下のものをインストールする。
- Erlang
- Elixir
- Phoenix
- Node.js
- Phoenixで必要
Vagrant
mkdir phoenix_start && cd phoenix_start
vagrant init ubuntu/trusty64
vgrant up
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provision "shell", path: 'provision.sh'
end
Erlang, Elixir, Node.js
Erlang, Elixirは公式のINSTALLの通りにインストールする。
Nodeもapt-getでテキトーに。
# install erlang, elixir
wget http://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
apt-get update
apt-get install -y elixir
# install node, npm
add-apt-repository ppa:chris-lea/node.js
apt-get update
apt-get install -y nodejs npm
provisionしてそれぞれのバージョンを確認する。
$ vagrant provision
...
$ vagrant ssh
...
$ erl -version
Erlang (ASYNC_THREADS) (BEAM) emulator version 6.4.1
$ elixir -v
Elixir 1.0.4
$ node -v
v0.10.37
$ npm -v
1.4.28
Phoenix
Elixirにはmix
というビルド用のコマンドだかがあるらしい。(Rubyでいうgemとrakeみたいなもの?)
まずはmix
でhex
というパッケージマネージャを入れる。
hexをインストールするか聞かれるのでy<Enter>
でインストール。
$ mix local.hex
Are you sure you want to install archive https://s3.amazonaws.com/s3.hex.pm/installs/1.0.0/hex.ez? [Yn] y
2015-06-07 18:21:34 URL:https://s3.amazonaws.com/s3.hex.pm/installs/1.0.0/hex.ez [262010/262010] -> "/home/vagrant/.mix/archives/hex.ez" [1]
* creating .mix/archives/hex.ez
用意ができたのでphoenixをインストールする。
$ mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v0.13.1/phoenix_new-0.13.1.ez
Are you sure you want to install archive https://github.com/phoenixframework/phoenix/releases/download/v0.13.1/phoenix_new-0.13.1.ez? [Yn] y
* creating .mix/archives/phoenix_new-0.13.1.ez
インストールが済むとmix
に新しいサブコマンドが追加されている。
$ mix help | grep phoenix
mix phoenix.new # Create a new Phoenix v0.13.1 application
Phoenixアプリを生成する
早速追加されたコマンドで生成。
デフォルトのDBはPostgreSQLで、--database mysql
を付けるとMySQLが使えるようだ。
$ mix phoenix.new phoenix_blog --database mysql
* creating phoenix_blog/config/config.exs
...
* creating phoenix_blog/priv/static/images/phoenix.png
Fetch and install dependencies? [Yn] y
* running npm install
* running mix deps.get
We are all set! Run your Phoenix application:
$ cd phoenix_blog
$ mix phoenix.server
You can also run it inside IEx (Interactive Elixir) as:
$ iex -S mix phoenix.server
ちなみに-
はapp名を指定しないと許されないらしい。
$ mix phoenix.new phoenix-blog
** (Mix) Application name must start with a letter and have only lowercase letters, numbers and underscore, got: "phoenix-blog". The application name is inferred from the path, if you'd like to explicitly name the application then use the `--app APP` option.
生成が終わったので実行してみる。
$ cd phoenix_blog
$ mix phoenix.server
Could not find rebar, which is needed to build dependency :poolboy
I can install a local copy which is just used by mix
Shall I install rebar? [Yn] y
* creating /home/vagrant/.mix/rebar
==> poolboy (compile)
Compiled src/poolboy_worker.erl
...
Compiled web/views/layout_view.ex
Generated phoenix_blog app
[info] Running phoenix_blog.Endpoint with Cowboy on port 4000 (http)
07 Jun 18:36:33 - info: compiled 3 files into 2 files in 1680ms
最初の起動にはライブラリなどのビルドが実行されるようで少し時間がかかる。
ビルドが終わったので http://192.168.33.10:4000/ (Vagrantfileで指定したIP) にアクセスしてみる。
今回はここまで。
次回はCRUDを作るパート。