我想添加一个帮助程序模块来使用
执行get请求http://hexdocs.pm/httpoison/HTTPoison.Base.html
但是当我将defmodule
放入
/lib/Shopper/CallApi.ex
和<{p>中的use
/web.ex
def controller do
quote do
use Phoenix.Controller
alias Shopper.Repo
import Ecto.Model
import Ecto.Query, only: [from: 1, from: 2]
import Shopper.Router.Helpers
use Shopper.CallApi
end
端
编译器失败并带有
== Compilation error on file web/controllers/page_controller.ex ==
** (UndefinedFunctionError) undefined function: Shopper.CallApi.__using__/1
Shopper.CallApi.__using__([])
web/controllers/page_controller.ex:2: (module)
那么......在哪里定义CallApi.ex以及我应该在哪里声明它?
答案 0 :(得分:5)
当您致电use Shopper.CallApi
时,会调用__using__/1
宏 - 这是特定于元编程的。如果您想使用模块中Shopper.CallApi
中定义的函数,请改用alias Shopper.CallApi
。
Alias, Require and Import中记录了alias
,require
和import
之间的差异,Domain Specific Languages中记录了using
。
另外,通常在elixir项目中,文件以snake_case命名 - call_api.ex
而不是CallApi.ex
。