Ruby on rails 从settings.yml读取Rails

Ruby on rails 从settings.yml读取Rails,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,嗨,可以从控制器读取设置yml吗?Im使用rails 4.2.0 我想在settings.yml中存储一些全局信息,以便在视图中显示这些信息 现在我试着这样做: settingsfile = File.read(Rails.root + "./config/settings.yml") settingsfile = YAML.load(settingsfile) settingsfile["default"] 工作,但当我想更深入 settingsfile["default"]["info"]

嗨,可以从控制器读取设置yml吗?Im使用rails 4.2.0

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

现在我试着这样做:

settingsfile = File.read(Rails.root + "./config/settings.yml")
settingsfile = YAML.load(settingsfile)
settingsfile["default"]
工作,但当我想更深入

settingsfile["default"]["info"]
它是空的

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

看一看宝石。

看一看宝石。

不用宝石..你可以用

你的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
您可以像……一样加载此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?

您还可以使用-
Rails::Application.config\u for(:email)
,如for Rails 4+及以后版本中所示。

而不使用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
您可以像……一样加载此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?
此外,您还可以对(:email)使用-code>Rails::Application.config\u,如适用于Rails 4+以后的版本中所示。

您可以尝试:

@settingsvariable = Settings.default.supported_languages.de
这种方法在我的应用程序中有效。

您可以尝试:

@settingsvariable = Settings.default.supported_languages.de

这种方法在我的应用程序中有效。

您可以尝试一种解决方案,例如或,它提供了一种将YML文件加载到设置对象的简单方法

这两个库都允许使用方法调用轻松访问设置:

类设置
这将允许您访问以下设置:

Settings.info.version#“2.0.0”
Settings.supported_languages.es#'Español'

在本例中,我们使用
:default
作为名称空间,但您也可以使用
Rails.env
将设置范围限定到特定环境。

您可以尝试一种解决方案,例如或,它提供了一种将YML文件加载到设置对象中的简单方法

这两个库都允许使用方法调用轻松访问设置:

类设置
这将允许您访问以下设置:

Settings.info.version#“2.0.0”
Settings.supported_languages.es#'Español'

在本例中,我们使用
:default
作为名称空间,但您也可以使用
Rails.env
将设置范围限定到特定的环境。

目前没有任何内容,当然我可以在application.rb
File.read(Rails.root+“/config/settings.yml”)中尝试read yml的方式
但是可能有更聪明的东西吗?目前没有什么,当然我可以在application.rb
File.read(Rails.root+“/config/settings.yml”)
但是可能有更聪明的东西吗?谢谢,但是没有传统的宝石就没有办法了吗,至少你需要
yaml
或者别的什么。你不想实现另一个yaml解析器,是吗?你能发布你的.yml文件的内容吗?我已经复制了你的.yml文件并尝试了你的ruby代码。它非常适合我。也许您应该注意.yml文件中的缩进?谢谢,但是没有传统的gem就没有办法了吗?好吧,至少您需要
yaml
或其他东西。你不想实现另一个yaml解析器,是吗?你能发布你的.yml文件的内容吗?我已经复制了你的.yml文件并尝试了你的ruby代码。它非常适合我。也许你应该注意你的.yml文件中的缩进?这很好用,比使用额外的gem要好得多。这很好用,比使用额外的gem要好得多。