Phoenixでcrud操作できるところまで
昨日に引き続き、elixir と Phoenixを軽く触ってみる。
Phoenix は default で postgreSQL を使うので、それをローカルのmacに環境構築する。
参考にしたのはこちら。qiita.com
$ brew install postgresql
$ initdb /usr/local/var/postgres -E utf8
$ postgres -D /usr/local/var/postgres
これでデータベース一覧が取得できれば成功
$ psql -l
だが、自分のmacではエラーになった。どうやらバンドルインストールされたのがあるらしく下記対応で起動できるよういなった。
$ curl -o fixBrewLionPostgresql.sh http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh
$ chmod 777 fixBrewLionPostgresql.sh
$ ./fixBrewLionPostgresql.sh
これでおk。
.zshrc
あたりに下記の設定をしておけば
$ export PGDATA=/usr/local/var/postgres
今後は下記のコマンドで起動停止できる。
$ pg_ctl -l /usr/local/var/postgres/server.log start
$ pg_ctl -l /usr/local/var/postgres/server.log stop
今回のphoenix アプリ向けに postgresにユーザ作成
$ createuser -P -d postgres
default では password も postgresになっている。
phoenixのtestで使うDB の設定は config/test.exs に書かれている。
# Configure your database config :phoenix_training, PhoenixTraining.Repo, adapter: Ecto.Adapters.Postgres, username: "postgres", password: "postgres", database: "phoenix_training_test", hostname: "localhost", pool: Ecto.Adapters.SQL.Sandbox
以下のコマンドでデータベースが作成される。
$ mix ecto.create
データベースを確認する。
$ psql -l
phoenix_traning_devが作成されていることが確認できる。
List of databases Name | Owner | Encoding | Collate | Ctype ---------------------+----------+----------+-------------+------------- phoenix_traning_dev | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8
下記のようなコマンドを実行すると、User CRUDの各ファイルが作成される。
$ mix phoenix.gen.html User users name:string email:string bio:string number_of_pets:integer
ファイル生成後、
Add the resource to your browser scope in web/router.ex: resources "/users", UserController
とあるので、router.exに定義を追加する。
その後、
Remember to update your repository by running migrations: $ mix ecto.migrate
とあるので、migrateを実行する。
サーバを起動して、localhost:4000/users でアクセスすると User の CRUD アプリが動く。
user crud のために自動生成されたソースは下記の通り。
https://github.com/kidooom/phoenix_training/commit/336236aee52c95b2daf18ee9d80c589d862df876