पिछले हफ्ते रेल्स 4.2 का पहला बीटा घोषित किया गया था, और यह पहले से ही अद्भुत लग रहा है। मैं अपने ऐप्स में ActiveJob, वेब कंसोल, एडिक्वेट रिकॉर्ड, और फॉरेन की सपोर्ट का उपयोग करने के लिए वास्तव में उत्साहित हूं।
लेकिन रेल्स की सुंदरता विवरण में है। और यदि आप थोड़ी खुदाई करते हैं, तो आप कुछ कम विज्ञापित विशेषताएं पाएंगे जो रेल्स के साथ आपके दैनिक काम को पूरी तरह से सुधार देंगी।
आसानी से कॉन्फ़िग फाइलें लोड करें
ठीक है, मैं पक्षपाती हो सकता हूं। लेकिन कॉन्फ़िग फाइलों को लोड करने का एक बिल्ट-इन तरीका होना बहुत बढ़िया होने वाला है।
config_for, रेल्स 4.2 में नया, ठीक वैसे ही काम करता है जैसे आप उम्मीद करेंगे:
development:
host: localhost
port: 6379
test:
host: localhost
port: 6379
production:
host: redis-production
port: 6379
irb(main):001:0> Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6379}
अर्थात, यदि आप config_for(:redis) कॉल करते हैं, तो यह आपके रेल्स ऐप में config/redis.yml को ढूंढेगा, इसे पार्स करेगा, और आपके RAILS_ENV के लिए सही कॉन्फ़िगरेशन वापस करेगा।
यह आपको अपने YAML में ERB डालने भी देता है:
development:
host: localhost
port: <%= ENV['REDIS_PORT'] %>
test:
host: localhost
port: <%= ENV['REDIS_PORT'] %>
production:
host: redis-production
port: <%= ENV['REDIS_PORT'] %>
$ REDIS_PORT=6380 bin/rails c
Loading development environment (Rails 4.2.0.beta1)
irb(main):001:0> Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6380}
यदि आप अपने ऐप में बहुत सारी सेवाओं को कॉन्फ़िगर करते हैं, तो यह आपके इनिशियलाइज़र्स को पढ़ने में बहुत आसान बना देगा।
अपने ऐप्स को बूटस्ट्रैप करना
अधिकांश रेल्स ऐप्स को इससे पहले कि आप उन्हें आज़मा सकें, कुछ कमांड चलाने की आवश्यकता होती है। यहां तक कि ज्यादातर खाली रेल्स ऐप्स को अभी भी बूट होने से पहले डेटाबेस सेट अप करने की आवश्यकता होती है।
तो, रेल्स, एक बार फिर कन्वेंशन ओवर कॉन्फ़िगरेशन के साथ जा रहा है, आपके सेटअप कोड के लिए विशेष रूप से एक जगह बनाई: bin/setup।
डिफ़ॉल्ट अच्छा है। लेकिन bin/setup वह जगह भी है जहां आप अपने ऐप को शुरू करने के लिए आवश्यक किसी भी अन्य कोड को डाल सकते हैं।
तो अब जब यह कन्वेंशन है, यदि आपने पहले से ही अपने ऐप के लिए एक बूटस्ट्रैप स्क्रिप्ट लिखी है, तो इसका नाम बदलकर bin/setup कर दें, ताकि आपके ऐप्स का उपयोग करने वाले लोग आसानी से शुरू कर सकें।
bin/setup आपको नए रेल्स ऐप्स उत्पन्न करते समय एक कम निर्णय लेने के लिए देता है। और एक बार जब आप git pull के बाद bin/setup चलाने की आदत डाल लेते हैं, तो आपको नया ऐप उत्पन्न करते समय फिर कभी rake db:setup चलाना याद नहीं रखना पड़ेगा।
अपने हैश मानों को ट्रांसफॉर्म करें
यह एक और चीज है जिसकी मुझे अक्सर पर्याप्त आवश्यकता होती है कि मुझे लगता है कि यह रूबी में बिल्ट-इन था। जब आप हैश पर transform_values कॉल करते हैं, तो यह हैश मानों पर map कॉल करने जैसा कार्य करता है, और मूल कुंजियों से जुड़े प्रतिस्थापित मानों के साथ एक नया हैश वापस करता है:
h = {a: 1, b: 2, c: 3}
h.transform_values { |v| v * 2 }
# => {a: 2, b: 4, c: 6}
काफी सरल। लेकिन आप आश्चर्यचकित होंगे कि यह कितनी बार काम आता है।
बोनस: अधिक कॉन्फ़िगरेशन!
रेल्स 4.2 आपकी अपनी ग्लोबल कॉन्फ़िगरेशन सेट करने का एक सरल तरीका प्रदान करता है:
Rails.application.config.x.some_configuration_key = "Some Value"
Rails.application.config.x.some_configuration_key
# => "Some Value"
Rails.configuration.x.some_configuration_key
# => "Some Value"
यह विशेष रूप से अच्छी तरह से काम करता है जब आप इसे config_for के साथ जोड़ते हैं:
app_config = Rails.application.config_for(:app)
Rails.application.config.x.block_phone_calls = app_config["block_phone_calls"]
और भी बहुत कुछ है!
ऐसा लगता है कि रेल्स 4.2 एक अद्भुत रिलीज़ होने के लिए तैयार है। लेकिन यह छोटे रिफाइनमेंट हैं जो इसे हर दिन रेल्स में काम करना इतना शानदार बनाते हैं। तो, यदि आपने अभी तक नहीं किया है, तो 4.2 रिलीज़ नोट्स के माध्यम से एक त्वरित नज़र डालें और देखें कि आप कौन सी अन्य सहायक सुधार पा सकते हैं।
(और यदि आप कुछ अच्छी चीजें पाते हैं, तो इसे अपने पास न रखें। इसे यहां साझा करें, ताकि हम सभी कुछ नया सीख सकें!)