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年6月5日
0.2.3 2014年5月5日
0.2.10 2014年5月22日
0.2.11 2014-06-30
0.3.0 2014年7月1日
0.3.1 2014年7月5日
0.4.0 2014年8月31日
0.4.1 2014年9月9日
0.5.0 2014年10月14日
0.6.0 情节中字
0.6.1 情节中字
0.6.2 2014年12月8日
0.7.0 情节中字
0.7.1 情节中字
0.7.2 情节中字
0.8.0 2015年1月11日
0.9.0 2015年2月12日
0.10.0 2015年3月8日
0.11.0 2015-04-09
0.12.0 2015年5月1日
0.13.0 二〇一五年十一月十五日
0.13.1 2015年5月17日
0.14.0 二零一五年六月三十零日
0.15.0 2015年7月27日
0.16.0 2015年8月6日
0.16.1 2015年8月6日
0.17.1 2015年8月27日
1.0.0 2015年8月28日
1.0.1 2015年9月3日
1.0.2 2015年9月7日
1.0.3 2015年9月29日
1.0.4 2015年12月15日
1.1.0 2015年9月16日
1.1.1 2015年9月27日
1.1.2 2016年1月9日
1.1.3 2016年1月20日
V1.2.0-rc.0 2016年4月29日
V1.2.0-RC.1 2016年5月25日
1.2.0 2016年6月23日
1.2.2 2017年3月14日
1.2.3 2017年3月15日
1.2.4 2017年5月16日
1.3.0 RC.1 2017年3月15日
1.3.0 rc.2 2017年5月16日

创建凤凰项目

为了在Phoenix框架中创建您的第一个项目, 您应该安装 Elixir,Erlang,Hex和Phoenix归档文件。您还应该安装PostgreSQL和node.js来构建默认应用程序。

打开终端或命令提示符,然后转到要在其中创建应用程序的文件系统上的位置。 phoenix.new 是mix命令,它将为您创建新项目。假设我们的应用程序的名称是hello_phoenix_world ,那么键入

$ mix phoenix.new hello_phoenix_world
 

或者 ,我们可以从任何目录运行mix phoenix.new以引导我们的Phoenix应用程序。 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用户名和密码,除非它已使用默认的postgres useranme和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 (同时按下control keyc 键)。

为模型生成资源

要生成存储库的模式,视图,控制器,迁移文件,模型的默认CRUD模板和测试文件(如Rails中的脚手架),可以使用phoenix.gen.html mix任务,如下所示:

mix phoenix.gen.html Book books title note:text pages:integer author_id:references:authors
 

其中Book 是模块名称, books 是用于模式的复数形式,后跟资源字段: title (默认为字符串), note (文本字段), pages (整数), author_id ,它与Author模型创建belongs_to 关联。

安装

Phoenix框架是用Elixir编写的,Elixir本身基于Erlang语言,并利用Erlang VM,以运行低延迟,分布式和容错系统而闻名。使用phoenix框架需要两种语言。按照以下步骤安装phoenix框架:

1.在您的机器上安装Elixir 。请参阅Elixir安装以及如何安装Elixir指南

2.安装Hex包管理器。 Hex是运行Phoenix应用程序并安装我们可能需要的任何额外依赖项的必要工具。在终端或命令控制窗口中,键入:

$ mix local.hex
 

如果已有,此命令将安装或更新Hex。

3.在您的计算机上安装Erlang 。没有Erlang,Elixir代码将无法编译,因为Elixir使用Erlang的VM进行代码编译。当您安装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档案了。 Mix档案是一个Zip文件,其中包含一个应用程序及其编译的BEAM文件。它与应用程序的特定版本相关联。存档是我们将用于生成我们可以构建的新的基本凤凰应用程序的内容。这是安装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框架的组件,它们将通过mix自动安装,如果你让mix安装它的依赖项,那么你将首先创建Phoenix项目。此外,如果您不允许混合下载这些组件,那么mix会告诉您稍后该怎么做。

6.在您的计算机上安装Node.js (不低于v5.0.0)。这是一个可选的依赖项。 Node.js是安装brunch.io依赖项所必需的。凤凰城使用Brunch.io来编译静态资产(javascript,css等),默认情况下。

我们可以从下载页面获取node.js.选择要下载的软件包时,请务必注意Phoenix需要5.0.0或更高版本。

Mac OS X用户也可以通过自制软件安装node.js.

注意:io.js是一个最初基于Node.js的npm兼容平台,不知道与Phoenix合作。

Debian / Ubuntu用户可能会看到如下错误:

sh: 1: node: not found
npm WARN This failure might be due to the use of legacy binary "node"
 

这是因为Debian节点的二进制文件存在冲突:请参阅关于以下SO问题的讨论

无法在Ubuntu中使用节点包管理器安装包

有两种方法可以解决此问题:

安装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用户)这是一个仅限Linux的文件系统观察程序,Phoenix用于实时代码重新加载。 (Mac OS X或Windows用户可以安全地忽略它。)

Linux用户需要安装此依赖项。有关特定于发行版的安装说明,请参阅inotify-tools wiki

在OSX上运行Elixir / Phoenix

Elixir / Phoenix

首先安装Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 

然后运行brew install elixir 将安装Elixir及其依赖项 - Erlang。

使用mix local.hex 安装mix。

按照说明安装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 进行brew install curl 。然后运行:

nvm install node
 

下载并编译最新版本的Node.js.

数据库

下载Postgres.app并运行它。当您创建Phoenix项目时,在config/dev.exs 文件中,您只需要为数据库提供一个名称 - 适配器将使用其余的默认值:

config :myphoenixapp, MyPhoenixApp.Repo,
  adapter: Ecto.Adapters.Postgres,
  database: "myphoenixapp_dev",
  hostname: "localhost",
  pool_size: 10
 

骨架安装

有时你想要一个没有任何东西的安装,除了最小的凤凰设置。 follow命令将为您提供。

mix phoenix.new web --no-brunch --no-ecto
 

注意:您必须已安装Elixir,Erlang,Hex,Mix和Phoenix存档以进行骨架安装