はじめに
ElixirでWebサービスを作ることを目的として、まずはhelloworldからということで、hello Phoenixを試した。
環境
- OS:Rasbian
- Elixir:1.0.4
- PostgreSQL:9.1.18
- nodejs:v0.12.7
- Erlang/OTP:18
- Phoenix:v1.0.3
ハマりポイント
- LinuxログインユーザでPostgreSQLのpostgresユーザのDataBase(postgres)へpsqlコマンドでログインできないため、サービスが開始できない。
- apt-getでPhoenixの要件を満たすnodejsのVersion(>= 0.12.0)にならない。(Rasbian以外のOSなら問題ないと思う。)
- package.jsonにnameとversionの属性が書かれていない。
実行コマンド
$ mix phoenix.new hello_phoenix
↓(出力)
: Fetch and install dependencies? [Yn] Y * running npm install && node node_modules/brunch/bin/brunch build * running mix deps.get
$ cd hello_phoenix $ mix phoenix.server
↓(出力)
: ==> hello_phoenix Compiled lib/hello_phoenix.ex Compiled web/web.ex Compiled lib/hello_phoenix/repo.ex == Compilation error on file lib/hello_phoenix/endpoint.ex == ** (CompileError) lib/hello_phoenix/endpoint.ex:1: function router/2 undefined (stdlib) lists.erl:1337: :lists.foreach/2 (stdlib) erl_eval.erl:669: :erl_eval.do_apply/6
$ vim lib/hello_phoenix/endpoint.ex : 34 35 plug :router, HelloPhoenix.Router (Before) 35 plug HelloPhoenix.Router (After) 36 end
$ mix phoenix.server↓(出力)
Compiled lib/hello_phoenix/endpoint.ex Generated hello_phoenix app [info] Running HelloPhoenix.Endpoint with Cowboy on http://localhost:4000 [error] Could not start node watcher because script "node_modules/brunch/bin/brunch" does not exist. Your Phoenix application is still running, however assets won't be compiled. You may fix this by running "npm install". [warning] the :size option when configuring HelloPhoenix.Repo is deprecated, please use :pool_size instead
一応、動いた。しかし、以下の画面が表示される。期待と違う。。。
$ npm install↓(出力)
npm ERR! Couldn't read dependencies. npm ERR! Error: No 'name' field found in package.json npm ERR! at /usr/share/npm/lib/utils/read-json.js:253:13 :
$ vim package.json↓(編集)
1 { 2 "name": "hello_phoenix", (追加) 3 "version": "0.0.0", (追加) 4 "repository": { 5 }, $ npm install↓(出力)
npm http GET https://registry.npmjs.org/brunch
npm http GET https://registry.npmjs.org/babel-brunch
npm http GET https://registry.npmjs.org/clean-css-brunch
npm http GET https://registry.npmjs.org/css-brunch
npm http GET https://registry.npmjs.org/javascript-brunch
npm http GET https://registry.npmjs.org/sass-brunch
npm http GET https://registry.npmjs.org/uglify-js-brunch
npm ERR! Error: failed to fetch from registry: css-brunch
npm ERR! at /usr/share/npm/lib/utils/npm-registry-client/get.js:139:12
:
npm ERR! node -v v0.6.19
:
$ node -v v0.6.19
$ nvm ls v0.12.7
-> system
stable -> 0.12 (-> v0.12.7) (default)
$ nvm use v0.12.7 $ npm install→ 終わるまで時間がかかる。(20分くらい)
$ node node_modules/brunch/bin/brunch build $ mix deps.get $ mix phoenix.server↓
[info] Running HelloPhoenix.Endpoint with Cowboy on http://localhost:4000 [warning] the :size option when configuring HelloPhoenix.Repo is deprecated, please use :pool_size instead 12 Oct 22:06:44 - info: compiled 3 files into 2 files, copied 3 in 10285ms想定通りに動いた!