コミケ告知

サークル活動の詳細は circle タグの記事へ。
2014年4月1日火曜日

Elixir relexによるassemble

Releaseに際して、Scalaならばfat JARを生成するためのsbt-assemblyというものがあります。Elixirではrelexがそれに相当するようです。
親切なドキュメントは無く、最初はうまくいかなかったのですがrelexを使っているプロジェクトを発見して、そこのmix.exsを真似するとうまくいきました。

Code.append_path "_build/#{Mix.env}/lib/relex/ebin"
defmodule Hoge.Mixfile do
use Mix.Project
def project do
[ app: :hoge,
version: "0.0.1",
elixir: "~> 0.12.5",
deps: deps ]
end
if Code.ensure_loaded?(Relex.Release) do
defmodule Release do
use Relex.Release
def applications, do: [:hoge]
end
end
def application do
[]
end
defp deps do
[
{:relex, github: "yrashk/relex"}
]
end
end
view raw relex_mix.exs hosted with ❤ by GitHub

  • depsにrelexを追加
  • Code.append_pathでライブラリのパスを追加
  • defmodule Release を追加


参考資料

特に追加設定をせず mix relex.assebleを実行すると、Erlangのランタイムまで丸ごと入ります。include_erts? や include_elixir? などのオプションがあり、Releaseモジュールの中で定義することでデフォルト設定を上書きできるようです。ドキュメントはなさそうなので、relexのrelease.exsを参照。

中でシェルスクリプトを生成しているため、純粋なWindows環境では上手く動かなそうに見えます。