スポンサーリンク

2015年8月9日

[Elixir]Mixの基本を習得する

とある錬金術師の万能薬(Elixir)

Goal

ElixirのMixの基本を習得する。

Dev-Environment

OS: Windows8.1
Erlang: Eshell V6.4, OTP-Version 17.5
Elixir: v1.0.4

Wait a minute

elixir-lang - Introduction to Mixの簡単なまとめ。
今更だが、Elixirのビルド管理ツールであるmixについてまとめた。

Index

BasicMix
|> Create Project
|> Compile Project
|> Use ExUnit
|> Mix.env
|> Help
|> Extra

Create Project

プロジェクトの生成。
以下のコマンドで生成できる。
kv: プロジェクト名
KV: モジュール名
>mix new kv --module KV
* creating README.md
* creating .gitignore
* creating mix.exs
* creating config
* creating config/config.exs
* creating lib
* creating lib/kv.ex
* creating test
* creating test/test_helper.exs
* creating test/kv_test.exs

Your mix project was created successfully.
You can use mix to compile it, test it, and more:

    cd kv
    mix test

Run `mix help` for more commands.
—moduleを省略しても良い。
生成されるモジュールの名前を指定できる。
(但し、生成されるファイルはプロジェクト名が使われている)
>mix new kv

Compile Project

プロジェクトをコンパイルする。
以下のコマンドでコンパイルできる。
>mix compile
Compiled lib/kv.ex
Generated kv app

Use ExUnit

テストユニットを使ってみる。
ファイル: test/[module_name]_test.exs
テストの実行コマンド。
>mix test
.

Finished in 0.04 seconds (0.04s on load, 0.00s on tests)
1 tests, 0 failures

Randomized with seed 453000
テスト失敗時の出力。
>mix test

  1) test the truth (KVTest)
     test/kv_test.exs:4
     Assertion with == failed
     code: 1 + 1 == 3
     lhs:  2
     rhs:  3
     stacktrace:
       test/kv_test.exs:5

Finished in 0.05 seconds (0.04s on load, 0.01s on tests)
1 tests, 1 failures

Randomized with seed 308000
test the truth (KVTest) ・・・ テスト名
test/kv_test.exs:4 ・・・ 実行したテスト
code: 1 + 1 == 3 ・・・ 失敗したテスト内容
lhs: 2 ・・・ 左側の値
rhs: 3 ・・・ 右側の値
stacktrace: test/kv_test.exs:5 ・・・ 失敗した行

Mix.env

mixには、環境と言う概念がある。
  • :dev ・・・ デフォルトの環境
  • :test ・・・ テストで使われる環境
  • :prod ・・・ プロダクションの環境
詳しくはドキュメントのhexdocs - v1.0.5 Mixを参照すること。
Windoswで設定したければ以下のようにする。
>set MIX_ENV=test
>echo %MIX_ENV%
test

Help

mixの詳しいコマンドを知りたい場合。
>mix help
絞り込みたい場合。
>mix help | grep キーワード
細かい説明を見たい場合。
>mix help タスク名
例えば、runの細かい説明を見たい場合。
>mix help run
# mix run

Runs the given file or expression in the context of the application.

Before running the code, it invokes the `app.start` task which compiles
and loads your project.

It is the goal of this task to provide a subset of the functionality
existent in the `elixir` executable, including setting up the `System.argv`:

    mix run -e Hello.world
    mix run my_script.exs arg1 arg2 arg3

Many command line options need to be passed to the `elixir` executable
directly, which can be done as follows:

    elixir --sname hello -S mix run -e "My.code"

## Command line options

  * `--config`, `-c`  - loads the given configuration file
  * `--eval`, `-e`    - evaluate the given code
  * `--require`, `-r` - require pattern before running the command
  * `--parallel-require`, `-pr`
                      - requires pattern in parallel
  * `--no-compile`    - do not compile even if files require compilation
  * `--no-deps-check` - do not check dependencies
  * `--no-halt`       - do not halt the system after running the command
  * `--no-start`      - do not start applications after compilation

Extra

iexについて。
コンパイルしたモジュールやライブラリを利用したい場合。
>iex -S mix

Speaking to oneself

ElixirでErlang/OTPを使うための最初の一歩。
次は、Agentをやりたいかな~

Bibliography

人気の投稿