08 May 2014

Phoenix

前回の続きです。

mix phoenix.routesをうまく実行できませんでした。Phoenixは現在とても活発なプロジェクトなので、もしかすると最新のmasterからアプリケーションを生成し直すと問題が解決するのではないかと思いました。そこで、改めてプロジェクトをクローンし直します。

$ mix do deps.get, compile
* Compiling plug
Compiled lib/plug.ex
Compiled lib/plug/adapters/cowboy.ex
Compiled lib/plug/builder.ex
== Compilation error on file lib/plug/conn/adapter.ex ==
could not compile dependency plug, mix compile failed. You can recompile this dependency with `mix deps.compile plug` or update it with `mix deps.update plug`
** (RuntimeError) cannot compile Plug because the :cowboy application is not available
    lib/plug/conn/adapter.ex:4: (file)
    (elixir) src/elixir_lexical.erl:17: :elixir_lexical.run/2
    (elixir) lib/kernel/parallel_compiler.ex:91: anonymous fn/3 in Kernel.ParallelCompiler.spawn_compilers/8

Plugのエラーが出てしまい、先へ進めません。mix deps.compile plugなどのコマンドを試しても結果は変わりません。

もう少し敷居を下げて、Elixirで記述されたStatic Site GeneratorであるCoilを試してみようと思いました。現在Elixirのバージョンv0.12.5でテストされているようですが、うまくいくでしょうか。

$ mix coil ~/blog
$ mix deps.get
$ PORT=8080 mix run --no-halt

Phoenixのように、あらかじめベースとなるブログを書き出すようです。バージョンによる警告が表示されていますが、Generated coil.appGenerated blog.appなどと表示されているため、コンパイルそのものは問題ないようです。

=ERROR REPORT==== 8-May-2014::22:52:36 ===
Error in process <0.382.0> with exit value: {[{reason,function_clause},{mfa,{'Elixir.Coil.TopPageHandler',handle,2}},{stacktrace,[{'Elixir.String',capitalize,[nil],[{file,"lib/string.ex"},{line,357}]},{'Elixir.Coil',load_article,1,[{file,"lib/coil.ex"},{line,111}]},{'Elixir.Coil'...

curlにてアクセスを試みた結果、エラーが発生してしまいました。ディレクトリを見渡す限り、HTMLを書き出している形跡が見当たらないのできっとコンパイルがうまくいかなかったのでしょう。このブログもいずれElixirで書き換えられればよいですね。