Phoenix で Hello world!


## Phoenix とは

Phoenix とは Elixir の Web Application Framework。
Rails ライクな MVC を採用してるらしい。

Elixir の環境構築は下記
[Elixir で Hello world!](http://qiita.com/tanaka0325/items/045ce9d9ee9355741c3d)

## install Phoenix

基本的には[公式サイト](http://www.phoenixframework.org/v0.13.0/docs/up-and-running)通りにインストール

### install hex

Phoenixをインストールするために、まずは hex をインストール

hex とは パッケージマネージャーで、ruby でいう bundler みたいなものらしい。

```
$ 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-05-14 19:12:34 URL:https://s3.amazonaws.com/s3.hex.pm/installs/1.0.0/hex.ez [257739/257739] -> "/Users/tanaka/.mix/archives/hex.ez" [1]
# * creating /Users/tanaka/.mix/archives/hex.ez
```

上記の mix コマンドは、 ビルドツール？で、いろいろなタスクを実行できる。
ruby でいう rake みたいなもの。

hex がインストールできたみたいなので、いよいよPhoenix をインストール

```
$ mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v0.13.0/phoenix_new-0.13.0.ez
```

phoenixがインストールできたっぽいので、project を new してみる

```
$ mix phoenix.new hello_phoenix

# * creating hello_phoenix/config/config.exs
# * creating hello_phoenix/config/dev.exs
# * creating hello_phoenix/config/prod.exs
# * creating hello_phoenix/config/prod.secret.exs
# * creating hello_phoenix/config/test.exs
# * creating hello_phoenix/lib/hello_phoenix.ex
# * creating hello_phoenix/lib/hello_phoenix/endpoint.ex
# * creating hello_phoenix/priv/static/robots.txt
# * creating hello_phoenix/test/controllers/page_controller_test.exs
# * creating hello_phoenix/test/views/error_view_test.exs
# * creating hello_phoenix/test/views/page_view_test.exs
# * creating hello_phoenix/test/support/conn_case.ex
# * creating hello_phoenix/test/test_helper.exs
# * creating hello_phoenix/web/controllers/page_controller.ex
# * creating hello_phoenix/web/templates/layout/application.html.eex
# * creating hello_phoenix/web/templates/page/index.html.eex
# * creating hello_phoenix/web/views/error_view.ex
# * creating hello_phoenix/web/views/layout_view.ex
# * creating hello_phoenix/web/views/page_view.ex
# * creating hello_phoenix/web/router.ex
# * creating hello_phoenix/web/web.ex
# * creating hello_phoenix/mix.exs
# * creating hello_phoenix/README.md
# * creating hello_phoenix/lib/hello_phoenix/repo.ex
# * creating hello_phoenix/test/support/model_case.ex
# * creating hello_phoenix/.gitignore
# * creating hello_phoenix/brunch-config.js
# * creating hello_phoenix/package.json
# * creating hello_phoenix/web/static/css/app.scss
# * creating hello_phoenix/web/static/js/app.js
# * creating hello_phoenix/web/static/vendor/phoenix.js
# * creating hello_phoenix/priv/static/images/phoenix.png
# 
# Install mix dependencies? [Yn]
y
# * running mix deps.get
# 
# Install brunch.io dependencies? [Yn]
y
# * running npm install
# 
# We are all set! Run your Phoenix application:
# 
#     $ cd hello_phoenix
#     $ mix phoenix.server
# 
# You can also run it inside IEx (Interactive Elixir) as:
# 
#     $ iex -S mix phoenix.server
```

途中で依存ライブラリのインストール許可を求められるので、y でインストール

インストールできたっぽいので、言われたとおりにサーバー起動してみる

```
$ cd hello_phoenix
$ mix phoenix.server

# Could not find rebar, which is needed to build dependency :fs
# I can install a local copy which is just used by mix
# Shall I install rebar? [Yn]
y
```

また依存で何か必要らしくてインストールしていいか聞かれたので、y
poolboyとかcowboyとか入れはじめた
調べたらcowboyとかはhttp serverとかのライブラリだった

依存ライブラリのインストールが終わったららサーバーが起動している

```
[info] Running HelloPhoenix.Endpoint with Cowboy on port 4000 (http)
14 May 20:04:41 - info: compiled 3 files into 2 files in 1523ms
```

ブラウザから以下にアクセス
http://localhost:4000

![hello_phoenix.png](https://qiita-image-store.s3.amazonaws.com/0/75105/1f384554-5056-a12f-9a1d-b3442d5d8270.png "hello_phoenix.png")

できた！