9

मैं सोच रहा था कि रेल अनुप्रयोग में सभी परिभाषित वातावरण सूचीबद्ध करने का कोई तरीका है या नहीं।रेल 3 एप्लिकेशन में सभी परिभाषित वातावरण कैसे सूचीबद्ध करें?

उदाहरण के लिए अगर एक आवेदन 4 परिभाषित वातावरण (उत्पादन, मचान, विकास, परीक्षण) मैं निम्नलिखित सरणी

["production", "staging", "development", "test"] 

कोई भी विचार प्राप्त करना चाहते हैं है? धन्यवाद

+0

आप एक छोटे संदर्भ दे सकते हैं आप यह क्यों करना चाहते हैं? आपकी समस्या के लिए वैकल्पिक समाधान हो सकते हैं .. –

+1

@EmilKampp मैं सिर्फ यह जांचना चाहता हूं कि एक yaml कॉन्फ़िगरेशन फ़ाइलों में प्रत्येक परिभाषित वातावरण के लिए सेटिंग्स शामिल हैं – Dorian

उत्तर

14

मुझे यकीन नहीं है कि क्या आप कुछ रेल एपीआई के माध्यम से परिभाषित वातावरण की सूची प्राप्त कर सकते हैं। पर्यावरण फ़ाइलों को dynamically based on the current environment लोड किया गया है। तो जैसा कि पहले से ही उल्लेख किया गया है, आप निर्देशिका को .rb फ़ाइल के लिए बस देख सकते हैं।

ActiveRecord::Base.configurations.keys 

मान लिया जाये कि आप वास्तव में एआर उपयोग कर रहे हैं:

Dir.glob("./config/environments/*.rb").map { |filename| File.basename(filename, ".rb") } 

आप सभी database वातावरण database.yml में परिभाषित की एक सूची प्राप्त करना चाहते हैं, तो आप सूची से प्राप्त कर सकते हैं।

+0

धन्यवाद @ जिरी, आपका उत्तर अब तक का सबसे पूरा उत्तर है! – Dorian

+1

उपर्युक्त उत्तर में एक छोटा सुधार। यदि आपके वातावरण फ़ोल्डर में एक गैर-रूबी फ़ाइल है, तो निम्न स्निपेट इसे एक वैध वातावरण के रूप में सूचीबद्ध करेगा, जो यह नहीं है। – Jakobinsky

+0

अच्छा पकड़ो। फिक्स्ड। –

0

.rb के लिए स्कैन कॉन्फ़िगरेशन/वातावरण स्कैन करें। विचार के रूप में

1

रेल में 3 आप के रूप में Rails.root रिटर्न एक Pathname वस्तु

Dir[Rails.root.join('config', 'environments', '*.rb')].map { |fname| File.basename(fname, '.*') } 
2

इस

Env_path = "#{RAILS_ROOT}/config/environments" 
all_env = Dir.entries(Env_path) - ['.','..'] 
environments = [] 
all_env.each{|env| environments << env.gsub(".rb", '')} 
print environments 
0

प्रयास करें यहां आपको निम्न कर सकते हैं:

environments = Dir.entries(Rails.root.join("config","environments").to_s).grep(/\.rb$/).map { |fname| fname.chomp!(".rb") } 
संबंधित मुद्दे