我想知道是否有一种方法可以列出 Rails 应用程序中所有已定义的环境。
例如,如果一个应用程序有 4 个已定义的环境(生产、登台、开发、测试),我想获得以下数组
["production", "staging", "development", "test"]
有任何想法吗?谢谢
我想知道是否有一种方法可以列出 Rails 应用程序中所有已定义的环境。
例如,如果一个应用程序有 4 个已定义的环境(生产、登台、开发、测试),我想获得以下数组
["production", "staging", "development", "test"]
有任何想法吗?谢谢
我不确定您是否可以通过某些 Rails API 获取已定义环境的列表。环境文件是根据当前环境动态加载的。因此,如前所述,您可以将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 中,您可以执行以下操作作为Rails.root
返回Pathname对象
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") }
扫描 .rb 的配置/环境。作为想法。