mcommit's message

ソフトウェア開発の仕事をしているsimotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

Elixir入門 ~7日目 mixが動かない原因が分かった~

mix が動かない原因が分かった。

「elixir iex INFO REPORT」

ググるといくつか情報が出ていて、日本語の情報だとQiitaのこちらの記事が参考になりそうです。

qiita.com
※参考にさせて頂き、ありがとうございます (m_m)

手元で確認したバージョンと結果

ということで、原因は要するに、 Erlang/OTPとElixirのバージョンの相性ということで間違いなさそう。

Linux環境では基本的にapt-getでインストールしていたけど、インストールされるOTPのバージョンが違うために偶然にもうまく動くパターンもあった。

多分apt使うときにupdateとか叩き忘れているという・・・

手元で確認したバージョンとかの組み合わせを一応あげておきます。

OS Elixir Erlang/OTP 動作 インストール方法
Linux Mint Elixir 1.1 18 OK apt
Linux Mint Elixir 1.1 20 NG apt
Windows10 Elixir 1.1 20 OK インストーラ

試したかったこ

さて、とりあえず手元にうごく環境もあるということでmixの勉強をしてみる。

Mixの使い方を知るには、

elixirschool.com

がよさそう。

早速 mix new で新しいプロジェクトを作る。
やりたいのはHTTP通信(クライアント側)HTTPクライアントの機能を使ってみたいのでプロジェクト名はhttpとした。
HTTPPoisonというモジュールがあるらしい。

$ mix new http                                                                      
* creating README.md
* creating .gitignore
* creating mix.exs
* creating config
* creating config/config.exs
* creating lib
* creating lib/http.ex
* creating test
* creating test/test_helper.exs
* creating test/http_test.exs

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

    cd http
    mix test

Run `mix help` for more commands.

mix.exsの編集

mix.exs がRubyでいうところのGemfileに相当するファイルのようだ。

github.com

qiita.com

GithubやQiitaの記事などを参考にさせて頂き適当に編集。

mix deps.get が失敗した

$ mix deps.get

が bundle install 相当のコマンドになるようだ。

最初にmix deps.getを実行したときにモジュールの取得に失敗していた。

20:10:50.392 [error] SSL: :certify: ssl_handshake.erl:1474:Fatal error: certificate expired

Failed to check for new Hex version
Failed to fetch record for 'hexpm/httpoison' from registry (using cache)

20:10:50.393 [error] SSL: :certify: ssl_handshake.erl:1474:Fatal error: certificate expired


20:10:50.394 [error] SSL: :certify: ssl_handshake.erl:1474:Fatal error: certificate expired

ログをみてみるとSSL認証で失敗しているらしい。Elixirを試しているのはVM Ware Player上のLinux Mintだが案の定時間が大幅にずれていた。
時刻を合わせて再度試したらうまくいったようだ。いろいろとトラブルが発生するものだ・・・


続きは明日にしよう。