इस तरह एक ठेठ config/environments/*.rb
फ़ाइल शुरू होता है:कैसे config प्रतीक वातावरण में हल हो गई है/* rb
MyApp::Application.configure do
config.cache_classes = false
...
end
ब्लॉक configure
के लिए पारित प्रतीक config
जो जाहिरा तौर पर अबाध है dereferences। यह तकनीकी रूप से कैसे काम करता है? ब्लॉक/प्रो/लैम्ब्डा में उपयोग किए गए प्रतीकों को इसकी घोषणा के संदर्भ में बाध्य किया जाना चाहिए, कॉल साइट पर गतिशील दायरे में हल नहीं किया जाना चाहिए।
एक संबंधित प्रश्न है, जहां Application.configure
विधि घोषित की गई है? यह application.rb
, engine.rb
, या railtie.rb
में नहीं है। शायद अगर मैं इस विधि को ढूंढने में कामयाब रहा, तो मुझे अपने मुख्य प्रश्न का उत्तर मिल गया होगा।
इसके अलावा, मैंने Rails initialization procedure का अध्ययन किया है, और मुझे config/environments/*.rb
फ़ाइल का उल्लेख भी नहीं मिला है। अगर मुझे पता था कि इन फ़ाइलों को इनिट प्रक्रिया द्वारा कैसे इलाज किया गया था, जो इस पर कुछ प्रकाश डाल सकता है।
मैंने उस फ़ाइल को चेक किया है [यहां] (https://raw.github.com/rails/rails/b04ec2764f62d5734c57959e2f00f9ef4345d52e/railties/lib/rails/application.rb), लेकिन 'कॉन्फ़िगरेशन' की खोज कुछ भी नहीं बताती है। क्या मैं गलत संस्करण देख रहा हूं? –
स्पष्ट होने के लिए, मुझे 'config' मिल सकता है, लेकिन यह यह नहीं समझाता है कि ब्लॉक' कॉन्फ़िगर 'पर कैसे पारित किया गया है, उस विधि को इसके घोषणा संदर्भ से देख सकता है। मैं 'कॉन्फ़िगरेशन' विधि की तलाश में हूं, जिसे 'ENV.rb' से कहा जा रहा है। –
'lib/rails/Railtie/configurable # config' मुख्य विधि है जिसे इस विधि को 'def कॉन्फ़िगर (& block) के रूप में परिभाषित किया गया है; class_eval (और ब्लॉक); end.' - तो वह ब्लॉक है जिसे आप ढूंढ रहे हैं, है ना? –