LoginSignup
3
5

More than 5 years have passed since last update.

Elixir+Phoenix FrameworkをMacにインストールし、Hello WorldページとDB作成&マイグレーションまで

Last updated at Posted at 2016-04-23

何番煎じかわかりませんが、作業ログがなにかの役に立てば。

を参考にしています。

目標と前提

目標

  • Elixir + PhoenixFrameworkのインストール
  • Controller/View/ルーティングを作成し、Hello Worldの表示
  • データベースのセットアップとスキーマ作成(マイグレーション)

前提

  • OS X El Capitan (10.11.4 Beta)
  • Homebrew インストール済み
  • DBはSQLiteを使う
  • Railsの使用経験がある

インストール

準備

Homebrewを最新にしておきます。

brew update

ElixirとHexのインストール

Elixirをインストールします。
Erlangもインストールされます。

brew install elixir

Hexをインストールします。
HexはRailsにおけるrakeのようなものです。

mix local.hex

Phoenix Frameworkのインストール

Phoenix Frameworkをインストールします。
(2016/4現在:下記で常に最新版になるようです)

mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez

nodeのインストール

アセットコンパイルにbrunch.ioを使用する場合、node.jsをインストールします。

brew install node

アプリケーションの作成

mix phoenix.newでアプリケーションを作成します。
app_nameの部分を適宜アプリケーション名に置き換えてください。
(小文字英数字およびアンダースコアのみ使用できるようです)

mix phoenix.new app_name --database sqlite

今回はSQLiteを使用しますが、

--database mysql

などのオプションでデータベースは変更できます。
デフォルトではPostgreSQLを使用するようです。

その他のオプションについては

mix phoenix.new --help

で参照できます。

サーバーの起動

cd app_name
mix phoenix.server

で、localhost:4000でサーバーが起動します

phoenix-run.png

ここまででインストールは終了です。

静的ページを作成する

続いて、静的ページでHello Worldを表示するまでを行います。

/hello

以下でHello Worldを表示するのが目標です。

MVCにおけるViewとControllerを作成します。

Controllerを作成する

/web/controllers/hello_controller.ex

という名前でControllerのファイルを作成し、

defmodule AppName.HelloController do
  use AppName.Web, :controller

  def index(conn, _params) do
    render conn, "index.html"
  end
end

とします。

Viewを作成する

/web/views/hello_view.ex

という名前でViewのファイルを作成し、

hello_view.exを

defmodule HelloPhoenix.HelloView do
  use HelloPhoenix.Web, :view
end

とします。

テンプレートを作成する

/web/templates/hello/index.html.eex

という名前でテンプレートファイルを作成し、

<div class="jumbotron">
  <h2>Hello World!</h2>
</div>

とします。
.eexファイルはRailsにおけるERBのようなもののようです。

ルーティングを設定する

最後にルーティングを設定し、表示できるようにします。

web/router.ex

の中ほど

  scope "/", AppName do
    pipe_through :browser # Use the default browser stack

    get "/", PageController, :index
  end

となっている部分を

  scope "/", AppName do
    pipe_through :browser # Use the default browser stack

    get "/", PageController, :index
    get "/hello", HelloController, :index
  end

として、/hello以下でHelloControllerを使用するよう設定します。

起動してみる

オートリロードされるので、すでにサーバーを起動していたらlocalhost:4000でこう表示されます。

phoenix-vc.png

もし途中でエラーなどが出て止まっていたら、再度

mix phoenix.server

で起動します。

DBを使う(マイグレーション)

最後に、DBスキーマを作成してみます。
タイトルと内容を持つページを作成することにします。

データベースを作成する

まずはデータベースを作成します。

mix ecto.create

マイグレーション

次に、マイグレーションを行います。

mix ecto.gen.migration create_pages

で、マイグレーションファイルを作成すると、

* creating priv/repo/migrations
* creating priv/repo/migrations/20160423080515_create_pages.exs

などと表示され作成されるので、

priv/repo/migrations/20160423080515_create_pages.exs

を以下のように編集します。

defmodule AppName.Repo.Migrations.CreatePages do
  use Ecto.Migration

  def change do
    create table(:pages) do
      add :title, :string
      add :body, :string
      timestamps
    end
  end
end

そしてマイグレーション実行。

mix ecto.migrate

Railsとほぼ同じ感覚です。

以上です。

3
5
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
3
5