2015-09-18 10 views
12

Mam mały problem próbujący użyć biblioteki Erlang w projekcie Elixir. Biblioteka, o której mowa, to erl8583 dla pakowania i rozpakowywania wiadomości ISO-8583.Używanie biblioteki Erlang z Eliksirem

znalazłem repozytorium GitHub dla erl8583 i poprawiłem mix.exs na następujące kwestie:

defmodule Iso.Mixfile do 
    use Mix.Project 

    def project do 
    [app: :iso, 
    version: "0.0.1", 
    elixir: "~> 1.0", 
    build_embedded: Mix.env == :prod, 
    start_permanent: Mix.env == :prod, 
    deps: deps] 
    end 

    def application do 
    [applications: [:logger]] 
    end 

    defp deps do 
    [{:erl8583, github: "mgwidmann/erl8583"}] 
    end 
end 

Kiedy biegnę mix deps.get i mix deps.compile, działa płynnie.

Wtedy staram się rozpocząć sesję iex z iex -S mix i uzyskać następujący błąd:

Unchecked dependencies for environment dev: 
* erl8583 (git://github.com/mgwidmann/erl8583.git) 
    could not find an app file at _build/dev/lib/erl8583/ebin/erl8583.app. This may happen if the dependency was not yet compiled, or you specified the wrong application name in your deps, or the dependency indeed has no   app file (then you can pass app: false as option) 
** (Mix) Can't continue due to errors on dependencies 

mówi, że could not find an app file at _build/dev/lib/erl8583/ebin/erl8583.app. Jak rozumiem, miks powinien był po prostu chwycić ten plik z deps/erl8583/src i tam dołączyć (ten plik istnieje, sprawdziłem).

Próbowałem ręcznie skopiować plik z deps do _build, ale bez powodzenia. Co ja robię źle?

Odpowiedz

10

Zmieniono nazwę pliku aplikacji .app. Plik .app zwykle znajduje się w katalogu ebin dla aplikacji Erlang; jeśli jest to plik źródłowy używany do generowania pliku .app, powinien on mieć nazwę .app.src. Jeśli zmienisz nazwę, to zadziała, jak pokazuje moja sesja powłoki poniżej:

$ mix deps.get 
* Getting erl8583 (https://github.com/mgwidmann/erl8583.git) 
Cloning into '/private/tmp/m/deps/erl8583'... 
remote: Counting objects: 3468, done. 
remote: Compressing objects: 100% (4/4), done. 
remote: Total 3468 (delta 1), reused 0 (delta 0), pack-reused 3464 
Receiving objects: 100% (3468/3468), 1002.71 KiB | 618.00 KiB/s, done. 
Resolving deltas: 100% (2640/2640), done. 
Checking connectivity... done. 
$ mv ./deps/erl8583/src/erl8583.app ./deps/erl8583/src/erl8583.app.src 
$ mix deps.compile 
==> erl8583 (compile) 
Compiled src/erl8583_message_helpers.erl 
Compiled src/erl8583_message.erl 
Compiled src/erl8583_marshaller_xml.erl 
Compiled src/erl8583_marshaller_ebcdic.erl 
Compiled src/erl8583_marshaller_json.erl 
Compiled src/erl8583_marshaller_binary.erl 
Compiled src/erl8583_marshaller_ascii.erl 
Compiled src/erl8583_fields_2003.erl 
Compiled src/erl8583_fields_1993.erl 
Compiled src/erl8583_fields.erl 
Compiled src/erl8583_marshaller.erl 
src/erl8583_convert.erl:133: Warning: variable 'AsciiHex' is unused 
src/erl8583_convert.erl:136: Warning: variable 'IntValue' is unused 
Compiled src/erl8583_convert.erl 
$ iex -S mix 
Erlang/OTP 18 [erts-7.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] 

Generated iso app 
Interactive Elixir (1.1.0-rc.0) - press Ctrl+C to exit (type h() ENTER for help) 
iex(1)> 
+0

To rozwiązało problem. Dziękuję Ci! – thepanuto

Powiązane problemy