3.3 KiB
+++ date = "2017-04-11" tags = ["elixir"] title = "ElmとPhoenixで作成するWebアプリ" slug = "elixir" +++
Elmというのは、Reactのようなフレームワークで、見通しが良いのが特徴(だと思っています)。昔、Hello World程度に使ったことがありました。Elmは色々と面倒なところはありますが、分かりやすさはあります(一見して)。
PhoenixはErlangを書きやすくしたElixirのWebフレームワークで、リアルタイムのリロード関連の処理がやりやすかった記憶。
これらを組み合わせて何か作ってる人はかなり少ないですが、探してみると幾つかの記事が見つかりました。
それを参考に何か作ろうかなーとか思っていたので紹介。
https://medium.com/@diamondgfx/setting-up-elm-with-phoenix-be3a9f55bac2
https://ubiteku.oinker.me/2016/11/28/elixir-phoenix-and-elm/
https://github.com/cotoami/cotoami
これを見る限りではcotoami
というプロジェクトがあって、何やらmd共有とチャットサービスみたいなものが実験的に稼働しているみたいな感じなのかな。
$ git clone https://github.com/cotoami/cotoami
$ cd cotoami
$ npm i
$ mix deps.get
$ mix ecto.create && mix ecto.migrate
$ mix phoenix.server
それぞれのバージョン。
$ mix -v
Mix 1.5.0-dev
$ mix phoenix.new -v
Phoenix v1.2.1
$ psql -V
psql (PostgreSQL) 9.5.3
$ elm -v
0.18.0
macでやるとerlang,elixirのバージョンとかpostgrexなどの設定とかでかなりハマる。
warning: variable "deps" does not exist and is being expanded to "deps()"
こんな感じでエラーが出る場合、mix.exs
を編集して変数の語尾に()
をつけることで回避可能。
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket
以下はpid
などを削除。
FATAL: lock file "postmaster.pid" already exists
$ rm /usr/local/var/postgres/postmaster.pid
$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ ps aux | grep postgres
以下はプロセスのKILLのワンライナー
$ ps aux | grep postgres | sed 's/ //g' | cut -d ' ' -f 2|sed '1d' | xargs kill
起動など。
$ initdb /usr/local/var/postgres -E utf8
$ pg_ctl -D /usr/local/var/postgres -l logfile start
$ createuser -P -d postgres
$ psql -l
[error] Failed to connect to Redis
多分、npm i
でredisはインストールされてれると思うけど一応。
$ npm i redis
$ redis-server
$ mix phoenix.server
というか、ここまでやってみて、Erlang、かなりつらいです。Rubyといい勝負というか、そんな感じで。また、PhoenixもRailsのような辛さが見え隠れしている印象で、最近、Golangを触っていたせいか、正直、ErlangやRubyなどの言語はGolangと比較してなんとなく辛いというか、そう感じるところがあったりして、しかし、サーバーサイドやデータベースなどを考慮するなら、こちらの選択もありだと思うので、慣れていきたいなと思いつつ、やっぱり慣れの問題なのかもしれませんね。おわり。