Railsアプリケーションで定義されたすべての環境を一覧表示する方法があるかどうか疑問に思いました。
たとえば、アプリケーションに4つの定義済み環境(本番、ステージング、開発、テスト)がある場合、次の配列を取得したいと思います。
["production", "staging", "development", "test"]
何か案は?ありがとう
Railsアプリケーションで定義されたすべての環境を一覧表示する方法があるかどうか疑問に思いました。
たとえば、アプリケーションに4つの定義済み環境(本番、ステージング、開発、テスト)がある場合、次の配列を取得したいと思います。
["production", "staging", "development", "test"]
何か案は?ありがとう
RailsAPIを介して定義された環境のリストを取得できるかどうかはわかりません。環境ファイルは、現在の環境に基づいて動的にロードされます。config/environments
したがって、すでに述べたように、任意のファイルのディレクトリをグロブすることができ.rb
ます。
Dir.glob("./config/environments/*.rb").map { |filename| File.basename(filename, ".rb") }
で定義されているすべてのdatabase
環境のリストを取得する場合database.yml
は、次の場所からリストを取得できます。
ActiveRecord::Base.configurations.to_h.keys
実際にARを使用していると仮定します。
これを試して
Env_path = "#{RAILS_ROOT}/config/environments"
all_env = Dir.entries(Env_path) - ['.','..']
environments = []
all_env.each{|env| environments << env.gsub(".rb", '')}
print environments
Rails 3では、 PathnameオブジェクトをRails.root
返すように次のことを行うことができます
Dir[Rails.root.join('config', 'environments', '*.rb')].map { |fname| File.basename(fname, '.*') }
どうぞ:
environments = Dir.entries(Rails.root.join("config","environments").to_s).grep(/\.rb$/).map { |fname| fname.chomp!(".rb") }
config/environmentsで.rbをスキャンします。アイデアとして。