दिलचस्प पोस्ट
रेडियो ग्रुप दो कॉलम के साथ है जिसमें दस रेडियोबुटन्स हैं I स्विफ्ट में यादृच्छिक अल्फ़ान्यूमेरिक स्ट्रिंग उत्पन्न करें सर्वर पक्ष पेजिंग के साथ jqgrid क्लाइंट साइड सॉर्टिंग – डेटा गायब हो जाता है कच्चे प्रकार और जेनेरिक तरीके का संयोजन कैसे एक बूटस्ट्रैपमोडल से $ _GET चर को एक लिंक से पास करें? ग्रहण – अनुपस्थित लाइन संख्या विशेषताओं के कारण ब्रेकपॉइंट स्थापित करने में असमर्थ वेबव्यू के साथ कस्टम फ़ॉन्ट का उपयोग कैसे करें चेकबॉक्स सर्वर साइड PHP के साथ नया Google रीकैप्टाइ जावास्क्रिप्ट में .slice.call की व्याख्या? मैं जावास्क्रिप्ट को कैसे रोक सकता / सकती हूं? मैं अपने जीवीएम के लिए डिफ़ॉल्ट लोकेल कैसे सेट करूं? पायथन में एक्सटेंशन .txt के साथ एक निर्देशिका में सभी फाइलें खोजें मैं x86 विंडोज में एक सीपीयू कैश फ्लश कैसे कर सकता हूं? <Select> ड्रॉपडाउन विकल्प में लिंक क्या Google API पर "नवीनतम" jQuery लाइब्रेरी पर कोई लिंक है?

मेरे रेल ऐप के लिए कस्टम कॉन्फ़िग विकल्प बनाने का सर्वोत्तम तरीका?

मुझे अपने रेल एप्लिकेशन के लिए एक विन्यास विकल्प बनाने की आवश्यकता है यह सभी वातावरणों के लिए समान हो सकता है। मुझे पता चला कि अगर मैं इसे environment.rb में environment.rb हूं। environment.rb , यह मेरे विचारों में उपलब्ध है, जो वही है जो मुझे चाहिए …

 environment.rb AUDIOCAST_URI_FORMAT = http://blablalba/blabbitybla/yadda 

बहुत अच्छा काम करता है।

हालांकि, मैं थोड़ा असहज हूँ। क्या यह करने का एक अच्छा तरीका है? क्या एक तरीका है जो अधिक कूल्हे है?

वेब के समाधान से एकत्रित समाधान "मेरे रेल ऐप के लिए कस्टम कॉन्फ़िग विकल्प बनाने का सर्वोत्तम तरीका?"

सामान्य अनुप्रयोग कॉन्फ़िगरेशन के लिए जिसे डेटाबेस तालिका में संग्रहीत करने की आवश्यकता नहीं है, मैं config निर्देशिका के भीतर एक config.yml फ़ाइल बनाना चाहूंगा। आपके उदाहरण के लिए, यह इस तरह दिख सकता है:

 defaults: &defaults audiocast_uri_format: http://blablalba/blabbitybla/yadda development: <<: *defaults test: <<: *defaults production: <<: *defaults 

यह कॉन्फ़िगरेशन फ़ाइल कस्टम / initializers में कस्टम initializer से लोड हो जाती है :

 # Rails 2 APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV] # Rails 3+ APP_CONFIG = YAML.load_file(Rails.root.join('config/config.yml'))[Rails.env] 

यदि आप रेल 3 का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप गलती से अपने रिश्तेदार कॉन्फ़िग पथ पर एक अग्रणी स्लैश नहीं जोड़ते हैं।

तब आप का उपयोग करके मूल्य प्राप्त कर सकते हैं:

 uri_format = APP_CONFIG['audiocast_uri_format'] 

पूरे विवरण के लिए यह रेलस्कास्ट देखें।

रेलिंग 3 प्रारंभिक कोड के संस्करण निम्न प्रकार हैं (आरआरआईआर_आरओटी और आरएआरएस_एएनवीवी पदावनत है)

APP_CONFIG = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env]

इसके अलावा, रूबी 1.9.3 साइक का इस्तेमाल करता है, जो मर्ज कुंजियों को संवेदनशील बना देता है, इसलिए आपको अपनी कॉन्फ़िग फाइल को उस खाते में लेने के लिए बदलना होगा, उदा।

 defaults: &DEFAULTS audiocast_uri_format: http://blablalba/blabbitybla/yadda development: <<: *DEFAULTS test: <<: *DEFAULTS production: <<: *DEFAULTS 

रेल 5, रेल 4.2

बस config/ निर्देशिका में एक YAML फ़ाइल बनायें, उदाहरण के लिए: config/neo4j.yml

neo4j.yml सामग्री नीचे की तरह neo4j.yml हो सकती है (सादगी के लिए, मैंने सभी वातावरणों के लिए डिफ़ॉल्ट इस्तेमाल किया था):

 default: &default host: localhost port: 7474 username: neo4j password: root development: <<: *default test: <<: *default production: <<: *default 

config/application.rb :

 module MyApp class Application < Rails::Application config.neo4j = config_for(:neo4j) end end 

अब, आपकी कस्टम कॉन्फ़िग नीचे की तरह पहुंच योग्य है:

 Rails.configuration.neo4j['host'] #=>localhost Rails.configuration.neo4j['port'] #=>7474 

और जानकारी

रेलिंग आधिकारिक एपीआई दस्तावेज़ config_for पद्धति का वर्णन करता है:

मौजूदा रेल env के लिए config / foo.yml लोड करने के लिए सुविधा


यदि आप एक yaml फ़ाइल का उपयोग नहीं करना चाहते हैं

जैसा कि आधिकारिक गाइड रेल कहते हैं:

आप config.x संपत्ति के अंतर्गत कस्टम कॉन्फ़िगरेशन के साथ रेल विन्यास ऑब्जेक्ट के माध्यम से अपना स्वयं का कोड कॉन्फ़िगर कर सकते हैं।

उदाहरण

 config.x.payment_processing.schedule = :daily config.x.payment_processing.retries = 3 config.x.super_debugger = true 

ये कॉन्फ़िगरेशन पॉइंट कॉन्फ़िगरेशन ऑब्जेक्ट के माध्यम से उपलब्ध होते हैं:

 Rails.configuration.x.payment_processing.schedule # => :daily Rails.configuration.x.payment_processing.retries # => 3 Rails.configuration.x.super_debugger # => true Rails.configuration.x.super_debugger.not_set # => nil 

config_for विधि के लिए आधिकारिक संदर्भ | आधिकारिक रेल गाइड

चरण 1: config / initializers / appconfig.rb बनाएँ

 require 'ostruct' require 'yaml' all_config = YAML.load_file("#{Rails.root}/config/config.yml") || {} env_config = all_config[Rails.env] || {} AppConfig = OpenStruct.new(env_config) 

चरण 2: config / config.yml बनाएं

 common: &common facebook: key: 'asdjhasxas' secret : 'xyz' twitter: key: 'asdjhasxas' secret : 'abx' development: <<: *common test: <<: *common production: <<: *common 

चरण 3: कोड में कहीं भी स्थिरांक प्राप्त करें

 facebook_key = AppConfig.facebook['key'] twitter_key = AppConfig.twitter['key'] 

मैं सिर्फ 4.2 और 5 पटरियों में नवीनतम कूल स्टफ के लिए इसे अपडेट करना चाहता था, अब आप अपने किसी भी config/**/*.rb फ़ाइलों में यह कर सकते हैं:

 config.x.whatever = 42 

(और वह वहां एक शाब्दिक x है, अर्थात config.x. शाब्दिक रूप से होना चाहिए, और फिर आप x बाद जो चाहें जोड़ सकते हैं)

… और यह आपके ऐप में उपलब्ध होगा:

 Rails.configuration.x.whatever 

यहां अधिक देखें: http://guides.rubyonrails.org/configuring.html#custom-configuration

इस विषय पर बस कुछ अतिरिक्त जानकारी:

 APP_CONFIG = YAML.load_file(Rails.root.join('config', 'config.yml'))[Rails.env].with_indifferent_access 

".with_indifferent_access" आपको स्ट्रिंग कुंजी का उपयोग करने वाले या समकक्ष प्रतीक कुंजी के साथ हैश में मानों तक पहुंचने की अनुमति देता है।

जैसे।
APP_CONFIG['audiocast_uri_format'] => 'http://blablalba/blabbitybla/yadda' APP_CONFIG[:audiocast_uri_format] => 'http://blablalba/blabbitybla/yadda' APP_CONFIG['audiocast_uri_format'] => 'http://blablalba/blabbitybla/yadda' APP_CONFIG[:audiocast_uri_format] => 'http://blablalba/blabbitybla/yadda'

पूरी तरह से एक सुविधा बात है, लेकिन मैं अपनी चाबियाँ प्रतीकों के रूप में प्रतिनिधित्व करने के लिए पसंद करते हैं।

मैं रेल 3.0 / 3.1 के लिए जॉन के समान कुछ उपयोग करता हूं, लेकिन मुझे पहले फ़ाइल को पार्स करना है:

 APP_CONFIG = YAML.load(ERB.new(File.new(File.expand_path('../config.yml', __FILE__)).read).result)[Rails.env] 

इससे मुझे अपने कॉन्फ़िग में ERB का उपयोग करने की इजाजत दी जाती है अगर मुझे हेओकोक की रेडिस्टोगो यूआरएल पढ़ने की ज़रूरत है:

 production: <<: *default redis: <%= ENV['REDISTOGO_URL'] %> 

Rails 4

एक कस्टम विन्यास यमल बनाने के लिए और इसे लोड करें (और अपने ऐप पर उपलब्ध कराएं) जैसे डेटाबेस_संरचना

*.yml बनाएँ, मेरे मामले में मुझे एक redis विन्यास फाइल की जरूरत है

config/redis.yml

 default: &default host: localhost port: 6379 development: <<: *default test: <<: *default production: <<: *default host: <%= ENV['ELASTICACHE_HOST'] %> port: <%= ENV['ELASTICACHE_PORT'] %> 

फिर विन्यास लोड करें

config/application.rb

 module MyApp class Application < Rails::Application ## http://guides.rubyonrails.org/configuring.html#initialization-events config.before_initialize do Rails.configuration.redis_configuration = YAML.load_file("#{Rails.root}/config/redis.yml") end end end 

मूल्यों तक पहुंचें:

Rails.configuration.redis_configuration[Rails.env] समान रूप से आप Rails.configuration.database_configuration[Rails.env] द्वारा अपने database.yml तक पहुंच प्राप्त कर सकते हैं Rails.configuration.database_configuration[Rails.env]

ओमर असलम के सुरुचिपूर्ण समाधान पर बिल्डिंग, मैंने कुंजी को प्रतीकों में बदलने का फैसला किया। केवल परिवर्तन है:

 all_config = YAML.load_file("#{Rails.root}/config/config.yml").with_indifferent_access || {} 

यह आपको चाबियों के रूप में प्रतीकों द्वारा मूल्यों को संदर्भित करने देता है, जैसे

 AppConfig[:twitter][:key] 

यह मेरी आँखों से साफ दिखता है

(उत्तर के रूप में पोस्ट किया गया क्योंकि मेरी प्रतिष्ठा ओमेर के उत्तर पर टिप्पणी करने के लिए पर्याप्त नहीं है)

मुझे simpleconfig पसंद है यह आपको हर पर्यावरण कॉन्फ़िगरेशन की अनुमति देता है

आवेदन पैरामीटर को स्टोर करने के लिए सबसे अच्छी जगह कहां से मेरी प्रतिक्रिया देखें : डेटाबेस, फ़ाइल, कोड …?

आपके पास क्या भिन्नता है कि यह दूसरी फ़ाइल का एक सरल संदर्भ है यह देखता है कि पर्यावरण। आरबी लगातार अद्यतन नहीं है और उसमें ऐप विशिष्ट सामान का एक ढेर नहीं है। यद्यपि आपके प्रश्न का कोई विशिष्ट उत्तर नहीं है, 'क्या यह रेल मार्ग है?', शायद इस बारे में कुछ चर्चा होनी चाहिए।

मैं वैश्विक अनुप्रयोग स्टैक के माध्यम से सेटिंग्स तक पहुंच पसंद करता हूं। मैं स्थानीय क्षेत्र में अतिरिक्त वैश्विक चर से बचना

config / initializers / myconfig.rb

 MyAppName::Application.define_singleton_method("myconfig") {YAML.load_file("#{Rails.root}/config/myconfig.yml") || {}} 

और इसके साथ प्रवेश करें।

 MyAppName::Application.myconfig["yamlstuff"] 

रेल आरंभ करने से पहले सेटिंग लोड करने का मेरा तरीका

आपको रेल इनिशियलाइज़ेशन में सेटिंग्स का उपयोग करने और पर्यावरण प्रति सेटिंग्स कॉन्फ़िगर करने की अनुमति देता है

 # config/application.rb Bundler.require(*Rails.groups) mode = ENV['RAILS_ENV'] || 'development' file = File.dirname(__FILE__).concat('/settings.yml') Settings = YAML.load_file(file).fetch(mode) Settings.define_singleton_method(:method_missing) {|name| self.fetch(name.to_s, nil)} 

आप दो तरीकों से सेटिंग प्राप्त कर सकते हैं: सेटिंग्स ['ईमेल'] या सेटिंग्स.ईमेल

कस्टम कॉन्फ़िग का मेरा सबसे अच्छा तरीका, raise message के साथ जब set.yml गुम है

config / initializers / custom_config.rb में कस्टम initializer से लोड हो जाता है

 setting_config = File.join(Rails.root,'config','setting.yml') raise "#{setting_config} is missing!" unless File.exists? setting_config config = YAML.load_file(setting_config)[Rails.env].symbolize_keys @APP_ID = config[:app_id] @APP_SECRET = config[:app_secret] 

Config / setting.yml में एक YAML बनाएँ

 development: app_id: 433387212345678 app_secret: f43df96fc4f65904083b679412345678 test: app_id: 148166412121212 app_secret: 7409bda8139554d11173a32222121212 production: app_id: 148166412121212 app_secret: 7409bda8139554d11173a32222121212