2009-07-10 15 views
43

रेल अनुप्रयोग पर रूबी में, निरंतर परिभाषित करने के लिए सबसे अच्छी जगह कहां है?रेल अनुप्रयोग पर रुबी में निरंतर परिभाषित करने के लिए सबसे अच्छी जगह कहां है?

मेरे पास निरंतर डेटा की एक सरणी है जिसे मुझे अपने आवेदन में सभी नियंत्रकों में उपलब्ध होना चाहिए।

उत्तर

10

आप उन्हें config/environment.rb में जगह कर सकते हैं:

Rails::Initializer.run do |config| 
    ... 
    SITE_NAME = 'example.com' 
end 

आप वैश्विक स्थिरांक की बड़ी मात्रा में है, तो यह गंदा हो सकता है। किसी YAML फ़ाइल से सोर्सिंग पर विचार करें, या डेटाबेस में स्थिरांक रखें।

संपादित करें:

weppos 'जवाब बेहतर जवाब है।

* config/initializers में एक फ़ाइल में अपने स्थिरांक रखें /। आरबी

63

रेल> = 3, आवेदन अपने आप में एक मॉड्यूल (config/application.rb में रहने वाले) है। आप उन्हें आवेदन मॉड्यूल

module MyApplication 
    SUPER_SECRET_TOKEN = "123456" 
end 

में स्टोर फिर लगातार संदर्भ के लिए MyApplication::SUPER_SECRET_TOKEN उपयोग कर सकते हैं।


रेल> = 2.1 & & < 3 आप उन्हें

    /config/initializers में
  1. जगह चाहिए जब लगातार एक विशिष्ट मॉडल/नियंत्रक/आप सहायक को संदर्भित करता है जब लगातार अनुप्रयोगों गुंजाइश
  2. है कक्षा/मॉड्यूल के भीतर ही इसे

रेल 2.1 और initializers समर्थन से पहले, प्रोग्रामर का उपयोग पर्यावरण.आरबी में अनुप्रयोग स्थिरांक रखने के लिए किया जाता था।

यहाँ कुछ उदाहरण

# config/initializers/constants.rb 
SUPER_SECRET_TOKEN = "123456" 

# helpers/application_helper.rb 
module ApplicationHelper 
    THUMBNAIL_SIZE= "100x20" 

    def thumbnail_tag(source, options = {}) 
    image_tag(source, options.merge(:size => THUMBNAIL_SIZE) 
    end 

end 
+2

अजीब बात है, लेकिन काम नहीं करता। हालांकि कॉन्स्टेंट.आरबी लॉन्च पर निष्पादित किया गया है, मैं नियंत्रकों या विचारों में SUPER_SECRET_TOKEN तक नहीं पहुंच सकता। –

+6

अब यह मजाकिया है। कौन जानता है कि उन स्थिरांकों की 'ऊपरीता' रेलों में लागू होती है? –

+5

नोट: नया स्थिर बनाने के बाद अपने सर्वर को पुनरारंभ करना न भूलें। अन्यथा, यह ठीक से दिखाई नहीं देगा! –

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

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