8
0

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.

#NervesJPAdvent Calendar 2021

Day 1

hello_nervesのNervesをupgradeする (Elixir)

Last updated at Posted at 2021-12-21

カレンダー2の
2021/12/01の回です。

はじめに

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

ところでみなさん、Nervesアプリのバージョンアップってどうやってやっていますか:interrobang::interrobang::interrobang:

https://hexdocs.pm/nerves/updating-projects.html#content を参照して、がんばる
② Railsのbin/rails app:updateみたいな〜 コマンドは無い
③ プロジェクトのルートでmix nerves.new .する

この記事では③でやってみます。
対象のプロジェクトは

です。
いろいろなものをごった煮しているプロジェクトです。
複雑に入り組んだ現代社会の縮図であり、私自身の人生なのかもしれません。
もちろん複雑に入り組んだ現代社会に鋭いメスはいれていません。

hello_nervesは、Nerves 1.5.1のときにプロジェクトを新規作成して、その後もできるだけ追いかけて、本日Nerves 1.7.13にしました。
hello_nervesというプロジェクト名は、公式ガイドのサンプルプロジェクト名をそのままを使いつづけています。

Let's get started:rocket::rocket::rocket:

まずは、Elixir、Erlangを新しくしておきます。

$ asdf list all erlang
$ asdf install erlang 24.2
$ asdf local erlang 24.2
$ asdf list all elixir
$ asdf install elixir 1.13.1-otp-24
$ asdf local elixir 1.13.1-otp-24
$ asdf reshim

に従って必要なものをインストールしておきます。
一回、Gitコミットしておきます。

$ mix local.hex
$ mix local.rebar
$ mix archive.install hex nerves_bootstrap

mix nerves.new .

$ mix nerves.new .

overwrite? [Yn]と聞かれたら、とりあえず元気よくYと答えて上書きしておきます。
その後、git statusをしてみます。

$ git status

変更ファイルの一覧は以下の通りです。

On branch upgrade-nerves
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   .gitignore
	modified:   README.md
	modified:   config/config.exs
	modified:   config/target.exs
	modified:   lib/hello_nerves.ex
	modified:   lib/hello_nerves/application.ex
	modified:   mix.exs
	modified:   rel/vm.args.eex
	modified:   rootfs_overlay/etc/iex.exs

あとは、git diffコマンドを駆使してひとつひとつのファイルにどうするかを決めていきます。

俺のファイルをそのまま使う

$ git restore .gitignore
$ git restore README.md

こんな変更しらねーし。触ったおぼえねーし。

言葉が過ぎました。
申し訳ありありません :bow::bow_tone1::bow_tone2::bow_tone3::bow_tone4::bow_tone5:
私のちっぽけな頭の中でおもったことをそのまま書いてしまいました。
自戒の意味を込めてタイトルはそのままにしておきます。

コラム

自戒という言葉で思い出しました。
「しかみ像」と呼ばれる、一風かわった徳川家康公の肖像画のことです。

徳川家康公は武田信玄勢に三方ヶ原の戦いでやぶれ、命からがら居城へ逃げ帰ります。
そのときの恐怖はすさまじく脱糞をしてしまいます。
要は、:poop:を漏らしたということです。
さすがは家康公、ただ漏らしただけでは終わらせません。

この時の家康の苦渋に満ちた表情を写した肖像画(しかみ像)が残っており、これは自身の戒めのために描かせたものと伝えられる(三方ヶ原の戦い)。(ウィキペディア)

https://jikugen.exblog.jp/9012286/

感謝の気持ちでありがたく取り込ませていただきます:pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:

mix nerves.new .で新しく作られたものをそのまま採用

$ git add rel/vm.args.eex
$ git add rootfs_overlay/etc/iex.exs

手動でマージ

  • config/config.exs
  • lib/hello_nerves/application.ex
  • mix.exs
    • 自分で追加した各Hexのバージョンは https://hex.pm/ をみて最新バージョンにしておきます

あとは

$ export MIX_TARGET=rpi2
$ mix deps.get
$ mix test
$ mix format

testなんてロクに書いていないので、mix testは単なるポーズです。
ビルドしてラズパイ2でイゴかします1

$ mix firmware
$ mix upload nerves-rpi2.local

:tada::tada::tada::tada::tada:
イゴいた、イゴいた :rocket::rocket::rocket:

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

プロジェクトのルートでmix nerves.new .をやって、あとはゴニョゴニョやって、Nervesをupgradeしました。
もっといいやり方がありましたら教えてください:pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:

Enjoy Elixir:bangbang::bangbang::bangbang:

  1. 「動かします」の意。おそらく西日本の方言、たぶん。NervesJPではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針2イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg=

  2. 大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。

8
0
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
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?