我想知道是否有办法在Rails应用程序中列出所有已定义的环境。
例如,如果一个应用程序有4个已定义的环境(生产,登台,开发,测试),我想获得以下数组
["production", "staging", "development", "test"]
有什么想法吗?感谢
答案 0 :(得分:15)
我不确定您是否可以通过一些Rails API获取已定义环境的列表。环境文件已加载dynamically based on the current environment。如前所述,您可以为任何config/environments
文件添加.rb
目录。
Dir.glob("./config/environments/*.rb").map { |filename| File.basename(filename, ".rb") }
如果您想获得database
中定义的所有database.yml
个环境的列表,可以从以下位置获取列表:
ActiveRecord::Base.configurations.keys
假设您实际上正在使用AR。
答案 1 :(得分:2)
试试这个
Env_path = "#{RAILS_ROOT}/config/environments"
all_env = Dir.entries(Env_path) - ['.','..']
environments = []
all_env.each{|env| environments << env.gsub(".rb", '')}
print environments
答案 2 :(得分:1)
在Rails 3中,您可以执行以下操作:Rails.root
返回Pathname对象
Dir[Rails.root.join('config', 'environments', '*.rb')].map { |fname| File.basename(fname, '.*') }
答案 3 :(得分:0)
扫描.rb的配置/环境。作为想法。
答案 4 :(得分:0)
你走了:
environments = Dir.entries(Rails.root.join("config","environments").to_s).grep(/\.rb$/).map { |fname| fname.chomp!(".rb") }