LoginSignup
0

posted at

updated at

Organization

NervesでEExを使う(Elixir)

ゆらのとを渡る舟人かぢを絶え行くへも知らぬ恋の道かな

Advent Calendar 2022 98日目1の記事です。
I'm looking forward to 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
私のAdvent Calendar 2022 一覧


はじめに

Elixirを楽しんでいますか:bangbang::bangbang::bangbang:

この記事は、ElixirでIoTを楽しめるナウでヤングでcoolなフレームワークであるNervesEExを使う方法をお知らせします。

Nervesでは標準ではEExは使えません

余計なものは極力省くNervesの思想でしょう。
Nervesでは標準ではEExは使えません。

** (UndefinedFunctionError) function EEx.eval_file/2 is undefined (module EEx is not available)

もちろんちょっとした設定で使えます

もちろんちょっとした設定をすることで使えます。

設定

mix.exsをちょっと書き換えるだけです。

mix.exs
  def application do
    [
      mod: {HelloNerves.Application, []},
      extra_applications: [:logger, :runtime_tools, :eex] # :eexを追加
    ]
  end

使い方

たとえば、priv/hoge/template.mdと配置しましょう。

priv/hoge/template.md
<%= item_count %>

ソースコードは以下のように作ります。
:code.priv_dirを使うことで、ホスト(ローカルマシン)での開発、Nerves上での実行ともにいい感じにパスを解決してくれます。

template_path = "#{:code.priv_dir(:hello_nerves)}/hoge/template.md" # :hello_nerves はNervesアプリ名に置き換えてください
bindings = [item_count: 100]
EEx.eval_file(template_path, bindings)

動機

私はNervesアプリで、Qiitaの記事を自動で更新しています。
テンプレートにEExを使いたいわけです。


Wrapping up :lgtm::lgtm::lgtm::lgtm::lgtm:

この記事は、NervesEExを使う方法をお知らせしました。

Nervesにデフォルトで入っているnerves_motdの1st コミッターである @mnishiguchi さんのスペシャルサンクスでこの記事を書けました。
ありがとうございます!
この場をお借りして感謝を申し上げます。
$\huge{Thank\ you\ very\ much.}$

Enjoy Elixir:bangbang::bangbang::bangbang:
$\huge{Enjoy\ Elixir🚀}$

以上です。


I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
I hope someday you'll join us.

We Are The Alchemists, my friends!


  1. @kaizen_nagoya さんの「「@e99h2121 アドベントカレンダーではありますまいか Advent Calendar 2020」の改訂版ではありますまいか Advent Calendar 2022 1日目 Most Breakthrough Generator」から着想を得て、模倣いたしました。

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
What you can do with signing up
0