2015-08-05 8 views
12

के भीतर कॉन्फ़िगरेशन मान प्राप्त करने में समस्या मैं नियंत्रक में फीनिक्स कॉन्फ़िगरेशन फ़ाइल से एक मान प्राप्त करने का प्रयास कर रहा हूं।फीनिक्स नियंत्रक और/या टेम्पलेट

# config.exs 

use Mix.Config 

config :app_name, AppName.Endpoint, 
    url: [host: "localhost"], 
    debug_errors: false, 
    root: Path.expand("..", __DIR__) 

Application.get_env(:app_name, :url), उदाहरण के लिए, कुछ भी वापस नहीं लगता है।

क्या मुझे कुछ याद आ रही है? config/2 और config/3:

+0

दस्तावेज़ को पढ़ना, ऐसा लगता है कि आप 'env.exs' फ़ाइल में' application' फ़ंक्शन के अंदर इन env चर को परिभाषित कर सकते हैं, कॉन्फ़िगर के अंदर नहीं। http://elixir-lang.org/docs/v1.0/elixir/Application.html – Kernael

उत्तर

18

आप docs for the Mix.Config module में देख सकते हैं, वहाँ config के दो वेरिएंट हैं। के रूप में आप तीन तर्कों गुजर रहे हैं आप config/3 संस्करण का उपयोग कर रहे हैं:

  • :app_name
  • AppName.Endpoint
  • एक कीवर्ड सूची ([url: ..., debug_errors: ...])

इसका मतलब यह है कि आप कॉन्फ़िगर कर रहे हैं AppName.Endpoint:app_name एप्लिकेशन के वातावरण में कुंजी, और कीवर्ड सूची में अपना मान सेट करना (याद रखें AppName.Endpoint सिर्फ एक परमाणु, इसलिए इसे एक कुंजी के रूप में उपयोग करना ठीक है)। url प्राप्त करने के लिए, आप की तरह कुछ करने के लिए की आवश्यकता होगी:

Application.get_env(:app_name, AppName.Endpoint)[:url] 

पूर्णता के लिए, config/2 एक आवेदन के लिए env में एक से अधिक कुंजी-मान जोड़ों स्थापित करने के लिए अनुमति देता है। इसके तर्क वास्तव में, एप्लिकेशन का नाम और कुंजी-मूल्य जोड़े की एक सूची हैं।

+0

यह सही था! पूरी तरह से स्पष्टीकरण के लिए धन्यवाद। – Tayler