20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ElixirAdvent Calendar 2022

Day 1

簡単Elixirシリーズ ~ Elixir プログラム実行の色々な方法 ~

Last updated at Posted at 2022-11-30

簡単Elixirシリーズ

~ Elixirプログラム実行の色々な方法 ~

この記事は「Elixir Advent Calendar 2022」1日目の記事です
東京にいるけどFukuokaexのYOSUKEです。

簡単 Elixirシリーズでは小ネタをサクッと書いていこう。というコンセプトで作っていきます。

今回は、elixirのプログラムの実行をする色々な方法を知る。という小ネタ(そう、この記事はサクッとがコンセプトW)

mix を使った場合

まずは、mix プロジェクトで作成をして行きましょう。

mix new hello
cd hello

hello.exのファイルの中身を以下のように書いています。

lib/hello.ex
defmodule Hello do

    def call(name) do
        "Hello #{name}"
    end

end

IO.puts Hello.call("YOSUKE!")

コンソールから実行

elixir lib/hello.ex
Hello YOSUKE!

iexから実行

iex> c "lib/hello.ex"
Hello YOSUKE!
[Hello]

iexを起動と同時に実行する

iex  lib/hello.ex
Hello YOSUKE!
Interactive Elixir (1.13.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 

mix コマンドを利用して実行する

iex -S mix
Compiling 1 file (.ex)
Hello YOSUKE!

iexを起動後に rコマンドとモジュール名で実行(ちなみに、こちらはモジュールを書き換えた際にiexを再起動せずに反映させたい時にも便利です。

iex> r Hello
Hello YOSUKE!
{:reloaded, [Hello]}

PS. mix プロジェクトで作成した場合には、r コマンドではなく、recompileで再反映させる事もできます。

iex> recompile
Compiling 1 file (.ex)
Hello YOSUKE!
:ok

mix を使わない場合

基本的にはmixで利用できるものと同じも多いので、ここでは、 mix を使わずに実行する際に、mixを使った場合との差分のみ紹介します。

使えないもの

こちらは使えないです。

iex -S mix

こちらも使えないです。

iex> recompile
Mix is not running. Please start IEx with: iex -S mix
:error

ひと工夫が必要なもの

そして、こちらも実はこのままでは使えません。一工夫が必要です。

iex> r Hello

r コマンドを利用できるようにするには、一旦、lib/hello.ex をコンパイルしておく必要があります。

elixirc lib/hello.ex

こちらを実行し、 Elixir.Hello.beam ファイルが存在するルート上でのみ利用できるようになります。

iex> r Hello

Hello YOSUKE!
{:reloaded, [Hello]}

ということで、コンパイルが必要なexファイルの様々な実行方法でした。

20
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?