从 settings.yml 读取 Rails

Fel*_*lix 1 ruby ruby-on-rails ruby-on-rails-4

嗨,是否可以从控制器读取设置 yml?我使用导轨 4.2.0

我想在 settings.yml 中存储一些全局信息以在视图中显示这些信息

目前我尝试这种方式:

settingsfile = File.read(Rails.root + "./config/settings.yml")
settingsfile = YAML.load(settingsfile)
settingsfile["default"]
Run Code Online (Sandbox Code Playgroud)

有效,但当我想更深入时

settingsfile["default"]["info"]
Run Code Online (Sandbox Code Playgroud)

它是空的

Yml文件

default:
  supported_languages:
    de: Deutsch
    fr: Francais
    en: English
    it: Italiano
    sv: Svenska
    pt: Português
    nl: Nederlands
    es: Español
  production:
  info:
    version: 2.0.0
    datum: 11.05.2015
Run Code Online (Sandbox Code Playgroud)

Mil*_*ind 5

不使用 gem .. 你可以使用类似 ..

你的 dev/config/email.yml

 development:
  :address: smtp.service.com
  :port: 25
  :user_name: mike@gmail.com
  :password: mikepassword
production:
  :address: smtp.gmail.com
  :port: 587
  :authentication: plain
  :user_name: mike@gmail.com
  :password: mikepassword
  :enable_starttls_auto: true
Run Code Online (Sandbox Code Playgroud)

你可以像加载这个 yml 文件一样......

  email_settings = YAML::load(File.open("#{Rails.root.to_s}/config/email.yml"))
 ActionMailer::Base.smtp_settings = email_settings[Rails.env] unless email_settings[Rails.env].nil?
Run Code Online (Sandbox Code Playgroud)

您也可以使用 -Rails::Application.config_for(:email)如Rails 4+ 以后的文档中所示。