मुझे रेलवे 3 इंजन के भीतर से प्रोग्रामर एप्लिकेशन का नाम जानना होगा।मैं रेल 3 एप्लिकेशन ऑब्जेक्ट के नाम तक कैसे पहुंचूं?
उत्तर
रेल 3 में, जेनरेट किए गए एप्लिकेशन को एप्लिकेशन नाम से मेल खाने वाला मॉड्यूल नेमस्पेस दिया जाता है। तो यदि आपके आवेदन को "ट्विटर" कहा जाता है, तो Rails.application की श्रेणी "ट्विटर :: एप्लिकेशन" है।
इसका मतलब है आप अपने रेल आवेदन के वर्ग के नाम की स्ट्रिंग विभाजित इस तरह एक आवेदन नाम पाने के लिए कर सकता है कि:
Rails.application.class.to_s.split("::").first
हमारे उदाहरण में, जिसके परिणामस्वरूप स्ट्रिंग "ट्विटर" होगा।
Rails.application
आपकी MyApp::Application
कक्षा देता है।
स्कॉट उत्तर का उपयोग करना, मैं अपने app/controllers/application_controller.rb
फ़ाइल
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :app_name
private
def app_name
Rails.application.class.to_s.split("::").first
end
तब मेरे टेम्पलेट्स में
मैं सिर्फ #{app_name}
कर सकते हैं जहाँ भी यह आवश्यक है, अगर आप अपने नाम बदलने की आवश्यकता है जो यह बहुत एक परेशानी का कम करता है में निम्नलिखित डाल ऐप (जिसे मुझे आज सुबह करना था)।
मूल पोस्टर के लिए कहा रेल एप्लिकेशन का नाम, वर्ग के नाम के लिए नहीं। वे दो अलग-अलग चीजें हैं। जैसे रेल ऐप की वर्तनी रेल की अपेक्षाओं से भिन्न हो सकती है, उदाहरण के लिए 'test_app' के बजाय 'test-app'।
रेल्स ऐप के नाम को प्राप्त करना मुश्किल है जैसा कि चेक किया गया था- में, क्योंकि वह नाम संरक्षित नहीं है। सत्र_स्टोर के लिए केवल विकल्पों में मूल स्ट्रिंग को थोड़ा संशोधित करना प्रतीत होता है।
रेल एप्लिकेशन के नाम से प्राप्त करने के लिए सबसे अच्छा तरीका है:
यह भले ही अपने अनुप्रयोग निर्देशिका नाम दिया गया था, या प्रतीक से जुड़े काम करेंगे!
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
=> "test-app"
क्यों? चूंकि ऐप के लेखक ने नाम रेल की तुलना में अलग-अलग वर्तनी की हो सकती है ... उदा। '_' के बजाय '-' अक्षरों के साथ; जैसे "टेस्ट एप्लिकेशन"। कक्षा के नाम से आप सही वर्तनी प्राप्त करने की गारंटी नहीं दे सकते।
इस जानकारी का उपयोग करके आप ऐसा कर सकता है:
class << Rails.application
def name
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
end
end
Rails.application.name
=> 'test-app'
या बस अपने ./config/environment.rb
से जोड़ें:
APP_VERSION = '1.0.0'
APP_NAME = Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
कि इन स्थिरांक एप्लिकेशन के शीर्ष-स्तर पर उपलब्ध कराता है।
बंद है, लेकिन कोई सिगार:
यह लगभग सही है, लेकिन यह अभी भी विफल हो जाएगा यदि अनुप्रयोग निर्देशिका का नाम बदला जाता है (उदाहरण के लिए तैनाती के दौरान करने के लिए ' "20121001_110512" या "नवीनतम" .. ।फिर निम्न टूट जाएगा:
File.basename(Rails.root.to_s)
=> "test-app"
निम्नलिखित दो दृष्टिकोण के साथ .. आप एक नाम केवल अनुमान लगा सकता है सही वर्तनी के लिए नहीं मिल सकता है:
इस उप इष्टतम है, और गलत तरीके से लिखे गए परिणाम दे सकते हैं:
आप इस तरह आवेदन नाम की एक व्युत्पन्न करने के लिए प्राप्त कर सकते हैं:
Rails.application.engine_name.gsub(/_application/,'')
=> "test_app"
लेकिन कृपया ध्यान दें कि यह मूर्ख-प्रमाण नहीं है, क्योंकि किसी ने ऐप "test-app" नाम दिया होगा और आप उपरोक्त परिणाम देखेंगे, न कि '-' के साथ सही नाम।
यही बात सच है अगर आप इसे इस तरह से निकाले जाते हैं है:
Rails.application.class.parent_name
=> "TestApp"
इस वर्ग के नाम है, लेकिन क्या आप वाकई नाम के लिए रास्ता लेखक इसकी वर्तनी पाने के लिए नहीं हो सकता।
मुझे लगता है कि यह पिछले खंड में 'Rails.application.class.parent_name' होना चाहिए लेकिन मैं इसे संपादित नहीं कर सकता क्योंकि मेरा परिवर्तन 6 वर्णों से कम है। धन्यवाद StackOverflow। –
इसे इंगित करने के लिए धन्यवाद! मैंने ठीक कर दिया। – Tilo
यह सही है, रेल-वाई उत्तर। मैं यह भी ध्यान दूंगा कि अधिकांश उपयोगकर्ता इस पर उपयोग के लिए .humanize.titleize पर कॉल करना चाहते हैं। – Sam
आप config.ru फ़ाइल में इस पा सकते हैं:
run Dinosaur::Application
या Rakefile में: करने के लिए
Dinosaur::Application.load_tasks
नाम पहले "::" एप्लिकेशन नाम
अधिक "मानवकृत" संस्करण के लिए (पहले उत्तर के आधार पर आप यहां पा सकते हैं) निम्न विधि पर विचार करें: यह आपके TestApp
एप्लिकेशन के लिए Test App
वापस करेगा।
def app_name
Rails.application.class.parent_name
.underscore
.humanize
.split
.map(&:capitalize)
.join(' ')
end
- 1. मैं Task.Factory.StartNew में HttpContext.Current तक कैसे पहुंचूं?
- 2. मैं एक्शनफ़िल्टर से मॉडलस्टेट तक कैसे पहुंचूं?
- 3. मैं ASP.NET MVC नियंत्रक में Request.cookies तक कैसे पहुंचूं?
- 4. रेल 3 - जांचें कि ऑब्जेक्ट
- 5. रेल 3: मैं कैपिबरा
- 6. रेल 3 मार्ग रूट नाम
- 7. एंड्रॉइड: मैं स्टेटस बार अधिसूचना द्वारा बनाए गए लंबित इंटेंट से AsyncTask तक कैसे पहुंचूं?
- 8. मैं रेल 2.3.5 से रेल 2.3.8 तक अपग्रेड कैसे करूं?
- 9. तक पहुँचना मॉडल एक रेल 3 परियोजना
- 10. मैं रेल 3 अनुप्रयोग
- 11. अनुकूलित करने के लिए कैसे रेल 3 एसटीआई स्तंभ नाम
- 12. रेल 3 एप्लिकेशन निर्माता क्या है?
- 13. मैं Emacs Lisp में वर्तमान क्षेत्र की सामग्री तक कैसे पहुंचूं?
- 14. एक रेल 3 एप्लिकेशन में दो मॉडल
- 15. रेल में कोई विधि त्रुटि 3 एप्लिकेशन
- 16. कैसे रेल एप्लिकेशन
- 17. रेल 3
- 18. रेल 3.x में मानव विशेषता नाम?
- 19. रेल 3 मैं _attributes पदनाम
- 20. रेल 3
- 21. मैं आर ऑब्जेक्ट का नाम कैसे बदलूं?
- 22. रेल 3 एप्लिकेशन में सभी परिभाषित वातावरण कैसे सूचीबद्ध करें?
- 23. रेल 3: रेल
- 24. कई सत्यापन रेल 3 (Zombies के लिए रेल, 2: 3)
- 25. कैसे रेल 3
- 26. रेल 3 - आईडी
- 27. रेल 3 और फ़ील्ड_ सक्रियमोडेल (टेबललेस) ऑब्जेक्ट के साथ
- 28. एक्शनमेलर 3 रेल के बिना
- 29. रेल मॉडल मॉडल नाम
- 30. मैं रेल 3 में लॉगिन फॉर्म कैसे बना सकता हूं?
क्या आप एप्लिकेशन नाम पर जाना चाहते हैं जब आपने "आपके नए एप्लिकेशन को रेल" या केवल कक्षा का नाम बनाया था? – Tilo