2015年10月13日火曜日

[Elixir][Phoenix]hello Phoenixを試す。

はじめに

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
想定通りに動いた!

0 件のコメント:

コメントを投稿