25
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Phoenix入門 #01

Last updated at Posted at 2015-06-07

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
ruby
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でテキトーに。

provision.sh
# 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みたいなもの?)
まずはmixhexというパッケージマネージャを入れる。
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) にアクセスしてみる。

Phoenix


今回はここまで。
次回はCRUDを作るパート。

パート2へ

25
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?