何番煎じかわかりませんが、作業ログがなにかの役に立てば。
を参考にしています。
目標と前提
目標
- 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でサーバーが起動します
ここまででインストールは終了です。
静的ページを作成する
続いて、静的ページで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でこう表示されます。
もし途中でエラーなどが出て止まっていたら、再度
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とほぼ同じ感覚です。
以上です。