2015-09-21 12 views
6

मैंकहाँ फीनिक्स फ्रेमवर्क पर सहायक मॉड्यूल डाल करने के लिए

http://hexdocs.pm/httpoison/HTTPoison.Base.html

का उपयोग कर GET अनुरोध करने के लिए एक सहायक मॉड्यूल जोड़ना चाहते हैं लेकिन जब मैं

/lib/दुकानदार में defmodule डाल /CallApi.ex

और 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 परिभाषित करने के लिए और जहाँ मैं यह घोषणा करना चाहिए?

उत्तर

5

जब आप use Shopper.CallApi पर कॉल करते हैं, __using__/1 मैक्रो कहा जाता है - यह मेटा-प्रोग्रामिंग के लिए विशिष्ट है। यदि आप अपने मॉड्यूल में Shopper.CallApi में परिभाषित कार्यों का उपयोग करना चाहते हैं तो इसके बजाय alias Shopper.CallApi का उपयोग करें।

alias, require और import के बीच मतभेद Alias, Require and Import में दर्ज कर रहे हैं और usingDomain Specific Languages में प्रलेखित है।

एक तरफ, आमतौर पर इलीक्सिर परियोजनाओं में, फ़ाइलों को CallApi.ex के बजाय सांप_case - call_api.ex में नामित किया गया है।

+0

और .. मुझे नहीं लगता कि 'उपयोग' दस्तावेज मेरे जैसे शुरुआती के लिए पर्याप्त स्पष्ट है – ardhitama

+0

फ़ाइल नाम के लिए, यह पहले से ही xxxx_api.ex के रूप में है, लेकिन मुझे xxxx भाग को हटाने की आवश्यकता है। बस खराब संपादन :) – ardhitama

संबंधित मुद्दे