9

Zastanawiam się, czy istnieje sposób na listę wszystkich zdefiniowanych środowisk w aplikacji Rails.Jak wyświetlić listę wszystkich zdefiniowanych środowisk w aplikacji Rails 3?

Na przykład, jeśli aplikacja posiada 4 określonych środowiskach (produkcji, rusztowania, rozwój testu) ja jak do uzyskania następującej tablicy

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

pomysłów? Dzięki

+0

można dać trochę kontekst dlaczego chciałbyś to zrobić? Mogą istnieć alternatywne rozwiązania twojego problemu. –

+1

@EmilKampp Chcę przetestować, czy pliki konfiguracyjne yaml zawierają ustawienia dla każdego zdefiniowanego środowiska. – Dorian

Odpowiedz

14

Nie jestem pewien, czy można uzyskać listę zdefiniowanych środowisk za pośrednictwem niektórych interfejsów API Rails. Pliki środowiska są ładowane dynamically based on the current environment. Jak już wspomniano, możesz po prostu wyskalować katalog config/environments dla dowolnego pliku .rb.

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

Jeśli chcesz uzyskać listę wszystkich database warunkach określonych w database.yml, można uzyskać listę z:

ActiveRecord::Base.configurations.keys 

Zakładając, że są rzeczywiście przy AR.

+0

Dzięki @Jiri, twoja odpowiedź jest najbardziej kompletną odpowiedzią aż do teraz! – Dorian

+1

Jedna mała poprawka do powyższej odpowiedzi. Jeśli w folderze environment znajduje się plik inny niż ruby, w poniższym fragmencie zostanie wyświetlone prawidłowe środowisko, którym nie jest. – Jakobinsky

+0

Dobry połów. Naprawiony. –

0

Konfiguracja/środowiska skanowania dla .rb. Jako pomysł.

1

W Rails 3 można wykonać następujące czynności jako Rails.root zwraca Pathname Przedmiotem

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

Spróbuj

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

Proszę bardzo:

environments = Dir.entries(Rails.root.join("config","environments").to_s).grep(/\.rb$/).map { |fname| fname.chomp!(".rb") } 
Powiązane problemy