NervesのIExをカスタマイズして色んな情報を表示できたらもっと便利になるのではないでしょうか?
TL;DR
-
Nervesプロジェクト内の
rootfs_overlay/etc/iex.exs
ファイルを探す。 -
rootfs_overlay/etc/iex.exs
で自由にElixirプログラミングを楽しむ。
これは一例です。
NervesMOTD.print()
# Add Toolshed helpers to the IEx session
use Toolshed
# I2Cの接続状況を表示
if Code.ensure_loaded?(Circuits.I2C) do
IO.puts("")
Circuits.I2C.detect_devices()
end
# お天気情報を表示
try do
IO.puts("")
weather()
rescue
_e -> nil
end
# エイリアスを定義しておくと便利かも
alias HelloNerves.Worker
-
rootfs_overlay/etc/.iex.exs
で好きなようにElixirプログラミングするだけです。 -
Toolshedの関数に便利なものがいくつかあります。(例、
weather/0
、uname/0
) -
Circuits.I2C.detect_devices/0
を呼んで、接続されているI2C周辺機器を表示すると便利な場合があるかもしれません。 - IExでよく使うモジュールを予め
alias
しておけば、後々楽になるかもしれません。 -
weather/0
を使用する上での注意点としては、インターネット接続が必要なことと、:inets
がmix.exs
ファイルのextra_application
に含まれている必要があることです。 - 万一
.iex.exs
実行時にでエラーが発生した場合、エラー以降の処理が実行されないので注意が必要です。
lib/hello_nerves/application.ex
def application do
[
mod: {HelloNerves.Application, []},
extra_applications: [:logger, :runtime_tools, :inets]
]
end
Elixirの.iex.exs
ファイル
IExが起動するときに読み込まれるファイルです。詳しくはIExドキュメントをご覧ください。
Nervesの.iex.exs
ファイル
.iex.exs
ファイルのテンプレートは、nerves_bootstrapリポジトリーにあります。
More info
おーはらさんのスライドに日本語で包括的に説明されています。Awesome!
https://twitter.com/ohrdev/status/1474968395087237121