スポンサーリンク

2016年11月2日

[Elixir]Proxy環境下でElixirを無理やり動かす!

Proxy環境下でElixirを動かすまでにやったこと

社内の環境だとProxyがあるためうまく動かないことはわかっていた。
時間ができたので、突貫でElixirの仮環境を作成しました。
突貫で作業したので、内容に不備があるかもしれません。
もし問題が発生しましたら、お手数ですが、ご連絡していただけると助かります。
また、私の環境で行ったことなので、環境の差異によって何か起こるかもしれませんのであらかじめご了承ください

前提条件

以下のものがインストール済みであること。
  • Git
  • Erlang
  • Elixir

環境

  • Windows7 (32bit)
  • Git 2.?
  • Erlang/OTP 19
  • Elixir v1.3.4

Gitのproxyを設定する

proxy環境下なので、proxyの設定がないとcloneさえできない!(残当)
そういうことで、まずはGitを使えるようにするためにgitの設定にproxyを追加します。
(Git Bashで実行しました)

Example:

$ git config --global http.proxy http://proxy.example.com:[port番号]
$ git config --global https.proxy http://proxy.example.com:[port番号]
$ git config --list
...
http.proxy=http://proxy.example.com:[port番号]
https.proxy=http://proxy.example.com:[port番号]
参考になるかわかりませんが、proxyについてはIEの設定から引っこ抜きました。

Elixir(mix)にlocal.hexをインストールする

私の環境だとどうにも”mix local.hex”を実行しても外へ接続ができませんでした。
仕方がないので、Githubからソースを取得してそれをアーカイブに固めました。

Example:

$ cd path/to/clone/directory
$ git clone git@github.com:hexpm/hex.git
$ cd hex
$ mix archive.build
これでhexをアーカイブに固めたファイルができています。
ファイル名を忘れてしまったのですが、.ezで作成されているはずです。
そのファイルを”mix archive.install”で指定してあげればいいんです。

Note: hexのカスタムタスクは使えるようになったが、結局local.hexは使えなかった。

Example:

$ mix archive.install [hex archive].ez
$ mix archive
hexの設定にproxyを追加します。

Example:

$ mix hex.config http_proxy http://proxy.example.com:[port番号]
$ mix hex.config https_proxy http://proxy.example.com:[port番号]
$ mix hex.config

Note: とりあえず設定していますが、httpsの方は意味があるのかはわかりません。(変な設定入れさせるな!って人ははずして進めてください)

Elixir(mix)にlocal.rebarをインストールする

これが意外と面倒でした。
Erlangのソースですからmix archive.buildで.ezファイルの作成ができなかったので・・・
しかし、すでに固めてあることを見つけたので最終的には簡単な手順でした。
下記のURL先からrebarをダウンロードしてきます。(2016/11/1確認)
(ダウンロードしたファイルは参照しやすいところに設置しておく、この後指定します)
なぜかよくわからないんですが、wikiからダウンロードできるみたいで・・・

Example:

$ mix local.rebar rebar [path/to/rebar]
rebar3を使う場合。
公式サイトでもGithubからでもrebar3はダウンロードできます。

Example:

$ mix local.rebar rebar3 [path/to/rebar3]
今は、rebar3が出ているのでちょい古い?ですね。

Note: local.hexと同じく、local.rebarは使えないままでした。

Elixirアプリケーションの実行確認

Elixirのアプリケーションを作成して実行確認をとりましょう。

Example:

$ cd path/to/app/create/directory
$ mix new example
$ cd ./example
特に使うわけじゃないですが、deps.getの確認をしたいのでパッケージを適当にしてする。(ここではPlugとCowboyを取得します)

File: mix.exs

defmodule Example.Mixfile do

  ...

  defp deps do
    [{:cowboy, "~> 1.0", optional: true},
     {:plug, "~> 1.1"}]
  end
end
適当にモジュールを作成しましょう。

File: lib/example.ex

defmodule Example do
  def test do
    IO.inspect "hogehoge"
  end
end
パッケージの取得、コンパイル、iexからモジュールの実行までできれば問題はないでしょう。

Example:

$ mix deps.get
$ mix compile
$ iex -S mix

iex> Example.test
"hogehoge"
"hogehoge"

おまけ

Phoenixフレームワークを使うのであれば、Node.jsで使われているnpmのproxy設定もあった方がよいです。

Example:

$ npm -g config set proxy http://proxy.example.com:[port番号]
$ npm -g config set https-proxy http://proxy.example.com:[port番号]
$ npm config list
上記でつながらない場合、下記も設定してみると動いてくれるかもしれません。
$ npm -g config set registry http://registry.npmjs.org/

おわりに

こんな感じでかなり無理くり環境構築もできるみたいです。
まぁおすすめはしません。
ではノシ

人気の投稿