phoenix-framework チュートリアル
phoenix-frameworkの使い方
サーチ…
備考
このセクションではphoenix-frameworkの概要と、なぜ開発者がそれを使いたいのかを概説します。
phoenix-framework内の大きなテーマについても言及し、関連するトピックにリンクする必要があります。 phoenix-frameworkのドキュメンテーションは新しいので、それらの関連トピックの初期バージョンを作成する必要があります。
バージョン
バージョン | 発売日 |
---|---|
0.1.1 | 2014-05-01 |
0.2.0 | 2014-05-01 |
0.2.1 | 2014-05-01 |
0.2.2 | 2014-06-05 |
0.2.3 | 2014-05-05 |
0.2.10 | 2014-05-22 |
0.2.11 | 2014-06-30 |
0.3.0 | 2014-07-01 |
0.3.1 | 2014-07-05 |
0.4.0 | 2014-08-31 |
0.4.1 | 2014-09-09 |
0.5.0 | 2014-10-14 |
0.6.0 | 2014-11-22 |
0.6.1 | 2014-11-30 |
0.6.2 | 2014-12-08 |
0.7.0 | 2014年12月10日〜10日 |
0.7.1 | 2014年12月10日〜10日 |
0.7.2 | 2014-12-11 |
0.8.0 | 2015-01-11 |
0.9.0 | 2015-02-12 |
0.10.0 | 2015-03-08 |
0.11.0 | 2015-04-08 |
0.12.0 | 2015-05-01 |
0.13.0 | 2015-11-15 |
0.13.1 | 2015-05-17 |
0.14.0 | 2015-06-30 |
0.15.0 | 2015-07-27 |
0.16.0 | 2015-08-06 |
0.16.1 | 2015-08-06 |
0.17.1 | 2015-08-27 |
1.0.0 | 2015-08-28 |
1.0.1 | 2015-09-03 |
1.0.2 | 2015-09-07 |
1.0.3 | 2015-09-29 |
1.0.4 | 2015-12-15 |
1.1.0 | 2015-09-16 |
1.1.1 | 2015-09-27 |
1.1.2 | 2016-01-09 |
1.1.3 | 2016-01-20 |
v1.2.0-rc.0 | 2016-04-29 |
v1.2.0-rc.1 | 2016-05-25 |
1.2.0 | 2016年6月23日 |
1.2.2 | 2017-03-14 |
1.2.3 | 2017-03-15 |
1.2.4 | 2017-05-16 |
1.3.0-rc.1 | 2017-03-15 |
1.3.0-rc.2 | 2017-05-16 |
インストール
PhoenixフレームワークはElixirで書かれており、Elixir自体はErlang言語に基づいており、低遅延、分散型、フォールトトレラントシステムで動作するErlang VMを活用しています。両方の言語はphoenixフレームワークの使用に必要です。 phoenixフレームワークをインストールする手順は次のとおりです。
1.あなたのマシンにElixirをインストールします。参照エリクサーのインストールとどのようにするエリクサーガイドをインストールします 。
2. Hexパッケージマネージャをインストールします 。 Hexは、Phoenixアプリケーションを稼働させ、余分な依存関係をインストールするのに必要なツールです。ターミナルまたはコマンドコントロールウィンドウで次のように入力します。
$ mix local.hex
すでにインストールされている場合、このコマンドはHexをインストールまたは更新します。
3.あなたのマシンにErlangをインストールします。 Erlangがなければ、ElixirはコードのコンパイルにErlangのVMを使用するため、Elixirコードはコンパイルされません。 Elixirをインストールする際にはErlangもインストールされている可能性がありますが、そうでない場合は、Elixirガイドの指示に従ってErlangをインストールしてください。しかし、Debianベースのシステムをお使いの場合は、Erlangを明示的にインストールする必要があります。
$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
$ sudo apt-get update
$ sudo apt-get install esl-erlang
4.あなたのマシンにphoenixフレームワークをインストールします。 ElixirとErlangを入手したら、Phoenix Mixアーカイブをインストールする準備が整いました。ミックスアーカイブは、アプリケーションとコンパイルされたBEAMファイルを含むZipファイルです。特定のバージョンのアプリケーションに関連付けられています。このアーカイブは、我々が構築することができる新しいベースのPhoenixアプリケーションを生成するために使用するものです。 Phoenixアーカイブをインストールするコマンドは次のとおりです。
$ mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez
上記のコマンドが適切に動作しない場合は、パッケージを手動でダウンロードできます。パッケージをファイルシステムのPhoenixアーカイブにダウンロードし、次のコマンドを実行します
mix archive.install /path/to/local/phoenix_new.ez
5 Plug、Cowboy、EctoはPhoenixフレームワークのコンポーネントで、Phoenixプロジェクトを最初に作成するときには、それらの依存関係をインストールするようにすれば、自動的にインストールされます。さらに、これらのコンポーネントをダウンロードするミックスを許可しない場合は、後でその方法をミックスする方法を教えてくれるでしょう。
6.マシンにNode.js (v5.0.0以上)をインストールします。これはオプションの依存関係です。 brunch.ioの依存関係をインストールするにはNode.jsが必要です。 Brunch.ioは、デフォルトで静的アセット(javascript、cssなど)をコンパイルするためにPhoenixによって使用されます。
ダウンロードページからnode.jsを取得できます 。ダウンロードするパッケージを選択するときは、Phoenixにバージョン5.0.0以上が必要であることに注意することが重要です。
Mac OS Xユーザーはhomebrew経由でnode.jsをインストールすることもできます。
注:Node.jsを元にしたnpm互換プラットフォームであるio.jsは、Phoenixで動作することは知られていません。
Debian / Ubuntuのユーザに次のようなエラーが表示されることがあります:
sh: 1: node: not found
npm WARN This failure might be due to the use of legacy binary "node"
これは、Debianがノードのために衝突するバイナリを持っているためです。
Ubuntuでノードパッケージマネージャを使用してパッケージをインストールできない
この問題を解決するには、次の2つの方法があります。
install nodejs-legacy:
$ apt-get install nodejs-legacy
またはシンボリックリンクを作成する
$ ln -s /usr/bin/nodejs /usr/bin/node
7マシンにデータベース ( PostgreSQL ) をインストールします。 Phoenixはデフォルトでアプリケーションを使用するように設定しますが、新しいアプリケーションを作成するときに--database mysql
フラグを渡してMySQLに切り替えることができます。 PostgreSQL wikiには、さまざまなシステムのインストールガイドがあります。
Postgrexは直接のPhoenix依存であり、モデルの作成に使用されます。 Phoenixプロジェクトを作成して開始するときに、 Postgrexは残りの依存関係とともに自動的にインストールされます。
8 inotify-tools (Linuxユーザの場合)Phoenixがライブコードのリロードに使用するLinux専用のファイルシステムウォッチャです。 (Mac OS XまたはWindowsユーザは無視しても問題ありません)。
Linuxユーザーはこの依存関係をインストールする必要があります。配布固有のインストール手順については、 inotify-tools wikiを参照してください。
スケルトンインストール
場合によっては、最低限のphoenixセットアップ以外のインストールが必要な場合もあります。 followコマンドはあなたにそれを与えるでしょう。
mix phoenix.new web --no-brunch --no-ecto
注意:スケルトンインストール用のElixir、Erlang、Hex、Mix、Phoenixアーカイブがインストールされている必要があります
Phoenixプロジェクトの作成
この時点でPhoenixフレームワークで最初のプロジェクトを作成するには 、Elixir、Erlang、Hex、およびPhoenixアーカイブがインストールされている必要があります。また、PostgreSQLとnode.jsをインストールして、デフォルトのアプリケーションを構築する必要があります。
ターミナルまたはコマンドプロンプトを開き、 アプリケーションを作成するファイルシステム上の場所に移動します 。 phoenix.new
は新しいプロジェクトを作成するmixコマンドです。アプリケーションの名前がhello_phoenix_world
であると仮定して、次のように入力します。
$ mix phoenix.new hello_phoenix_world
あるいは Phoenixアプリケーションをブートストラップするために、任意のディレクトリからmix phoenix.newを実行することもできます。 Phoenixは、新しいプロジェクトのディレクトリの絶対パスまたは相対パスのいずれかを受け入れます
$ mix phoenix.new /Users/username/work/elixir-projects/hello_phoenix_world
出力
mix phoenix.new hello_phoenix_world
* creating hello_phoenix_world/config/config.exs
* creating hello_phoenix_world/config/dev.exs
* creating hello_phoenix_world/config/prod.exs
...
* creating hello_phoenix_world/web/views/layout_view.ex
* creating hello_phoenix_world/web/views/page_view.ex
Fetch and install dependencies? [Yn]
Phoenixはプロジェクトのディレクトリ構造を生成し、アプリケーションに必要なすべてのファイルを作成します。 Mixは他の必要な依存関係をインストールするかどうか尋ねます。そのことに「はい」と言ってみましょう。
Fetch and install dependencies? [Yn] Y
* running mix deps.get
* running npm install && node node_modules/brunch/bin/brunch build
依存関係がインストールされると、プロジェクトディレクトリに変更してアプリケーションを起動するように促すプロンプトが表示されます。
Move into your new project folder:
$cd hello_phoenix_world
すでにpostgresのuseranmeとpostgresのパスワードを設定していない限り、postgresのユーザー名とパスワードを設定する必要があります。 config/dev.exs
ファイルを編集し、ユーザー名とパスワードを設定します:
# config/dev.exs
config :hello_phoenix_world, HelloPhoenixWorld.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "hello_phoenix_world_dev",
hostname: "localhost",
pool_size: 10
Now, create the database with the ecto mix task:
$ mix ecto.create
We have a working application! Run your Phoenix application:
$ mix phoenix.server
You can also run your app inside IEx (Interactive Elixir) as:
$ iex -S mix phoenix.server
Load `http://localhost:4000` into your browser and you will see the default landing page of your application.
さて、Phoenixアプリケーションにhello worldを追加しましょう。 web/templates/page/index.html.eex
ファイルを開き、内容を次のように置き換えてファイルを保存します。
<h2>Hello World</h2>
サーバーを終了していない場合は、新しいコードが自動的にコンパイルされ、ブラウザに「Hello World」というメッセージが表示されます。
CRUDリソースを作成できるようになりました 。
最後に、サーバーを終了するには、 ctrl-c
crtl-c
( crtl-c
control key
とc
キーを同時に押します)。
エリクサー/フェニックスをOSXで動かす
エリクシール/フェニックス
ホームブリューをまずインストールしてください:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
次に、 brew install elixir
を実行すると、Elixirとその依存関係Erlangがインストールされます。
mix local.hex
ミックスをインストールします。
手順に従ってPhoenixをインストールします。
mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez
Node.js
NVMを使用してNode.jsバージョンをインストールして管理することができます。 nvmを次のようにインストールします。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash
場合はcurl
利用できない、あなたがそれをインストールすることができbrew install curl
。次に、
nvm install node
Node.jsの最新バージョンをダウンロードしてコンパイルします。
データベース
Postgres.appをダウンロードして実行します。 config/dev.exs
ファイルでPhoenixプロジェクトを作成するときには、データベースの名前を指定するだけでconfig/dev.exs
ます。アダプタは残りのデフォルト値を使用します:
config :myphoenixapp, MyPhoenixApp.Repo,
adapter: Ecto.Adapters.Postgres,
database: "myphoenixapp_dev",
hostname: "localhost",
pool_size: 10
モデルのリソースの生成
リポジトリのスキーマ、ビュー、コントローラ、マイグレーションファイル、デフォルトのCRUDテンプレート、モデル用のテストファイル(Railsのスカフォールディングのような)を生成するには、 phoenix.gen.html
ようなミックスタスクを使用できます:
mix phoenix.gen.html Book books title note:text pages:integer author_id:references:authors
どこでBook
、モジュール名でbooks
スキーマを使用複数形である、リソースフィールドが続く: title
(デフォルトでは文字列)、 note
(テキストフィールド)、 pages
(整数)、 author_id
作成するbelongs_to
著者モデルとの関連付けを。