Ruby on rails 从settings.yml读取Rails
嗨,可以从控制器读取设置yml吗?Im使用rails 4.2.0 我想在settings.yml中存储一些全局信息,以便在视图中显示这些信息 现在我试着这样做: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"]
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.rbFile.read(Rails.root+“/config/settings.yml”)中尝试read yml的方式
但是可能有更聪明的东西吗?目前没有什么,当然我可以在application.rbFile.read(Rails.root+“/config/settings.yml”)
但是可能有更聪明的东西吗?谢谢,但是没有传统的宝石就没有办法了吗,至少你需要yaml
或者别的什么。你不想实现另一个yaml解析器,是吗?你能发布你的.yml文件的内容吗?我已经复制了你的.yml文件并尝试了你的ruby代码。它非常适合我。也许您应该注意.yml文件中的缩进?谢谢,但是没有传统的gem就没有办法了吗?好吧,至少您需要yaml
或其他东西。你不想实现另一个yaml解析器,是吗?你能发布你的.yml文件的内容吗?我已经复制了你的.yml文件并尝试了你的ruby代码。它非常适合我。也许你应该注意你的.yml文件中的缩进?这很好用,比使用额外的gem要好得多。这很好用,比使用额外的gem要好得多。