【问题标题】:UndefinedFunctionError - iex aliasing in phoenix / ectoUndefinedFunctionError - phoenix / ecto 中的 iex 别名
【发布时间】:2016-10-02 12:34:54
【问题描述】:

当我启动时

iex -S mix phoenix.server

我希望能够运行以下命令:

iex(1) > Repo.all(MyModel)

但是,这给了我这个错误:

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

如果我在调用前加上我的项目名称,它会起作用:

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

如何避免在 iex 中使用我的项目名称作为呼叫前缀?

【问题讨论】:

    标签: elixir phoenix-framework ecto


    【解决方案1】:

    如果您将代码添加到文件.iex.exs,那么只要您在该目录中启动iex,它就会被执行。因此,如果您只是将其添加到您的 .iex.exs:

    alias ProjectName.{Repo, MyModel}
    

    您将能够以Repo 的身份访问ProjectName.Repo,以MyModel 的身份访问ProjectName.MyModel

    【讨论】:

    • 我在尝试时收到此错误(带大括号)。 SyntaxError) .iex.exs:1: syntax error before: '{' 如果我将每个别名放在单独的行上,它可以在没有大括号的情况下正常工作。
    • 可以有通配符吗?即alias ProjectName.*
    • 你在使用 Elixir 中将它们放在单独的调用中(就像您已经想通的那样)。
    • 我很确定没有办法使用通配符进行别名,但是当您升级到 1.2 时,大括号语法应该会有很大帮助(与我们在 1.1 中的相比)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    相关资源
    最近更新 更多