2016-06-02 5 views
4

wenn ichUndefinedFunctionError - iex Aliasing in Phoenix/ecto

iex -S mix phoenix.server 

starten würde ich Befehle in der Lage sein mag laufen wie:

iex(1) > Repo.all(MyModel) 

aber das gibt mir diese Fehlermeldung:

(UndefinedFunctionError) undefined function: Repo.all/1 (module Repo is not available) 

Wenn ich meine Aufrufe mit meinem ProjectName voranstelle, funktioniert es:

iex(1) > ProjectName.Repo.all(ProjectName.MyModel) 

Wie kann ich verhindern, dass meine Anrufe mit meinem Projektnamen in iex vorangestellt werden müssen?

Antwort

7

Wenn Sie der Datei .iex.exs Code hinzufügen, wird sie ausgeführt, wenn Sie iex in diesem Verzeichnis starten. Also, wenn Sie nur diese .iex.exs zu Ihrer hinzufügen:

alias ProjectName.{Repo, MyModel} 

können Sie ProjectName.Repo als Repo und ProjectName.MyModel als MyModel zuzugreifen.

+0

Ich bekomme diesen Fehler, wenn ich es versuche (mit Klammern). 'SyntaxError) .iex.exs: 1: Syntaxfehler vor: '{ Es funktioniert ohne geschweifte Klammern obwohl wenn ich jeden Alias ​​auf einer separaten Zeile. – Doug

+0

Ist es möglich, einen Platzhalter zu haben? dh 'alias Projektname. *' – Doug

+0

Sind Sie auf Elixir <= 1.1? Die geschweifte Syntax wurde in 1.2 hinzugefügt. Sie müssen sie in separate Aufrufe (wie Sie bereits herausgefunden haben) in <= 1.1. – Dogbert