在Rails中配置config或yml文件中的一些变量

时间:2014-06-24 10:06:41

标签: ruby-on-rails configuration

在我的项目中,我想在配置或yml文件中放置一些配置细节,如密钥,一些独特的代码,以便在处理时访问。以及如何在UI或JS文件中访问该变量

我无法将值保留在database.ymlany config file中。

其中一个假设是将内部放在application.yml

config/application.yml

defaults: &defaults
  email: test@example.com
  secret: example_test

2 个答案:

答案 0 :(得分:2)

您可以创建一个初始化程序来加载YML文件,根据您当前的环境对其进行解析,并将结果保存在全局变量中。

例如:

配置/ application.yml

defaults: &defaults
  email: example@example.com
  secret: secret

test:
  <<: *defaults
  secret: another_secret

development:
  <<: *defaults

production:
  <<: *defaults
  email: production@example.com
  secret: production_secret

然后,您可以使用此初始化程序加载此配置:

配置/初始化/ app_config.rb

class ConfigurationFileNotFound < RuntimeError ; end

$CONF = begin
  YAML.load_file(Rails.root.join('config', 'application.yml'))[Rails.env].symbolize_keys
rescue Errno::ENOENT => e
  raise ConfigurationFileNotFound, 'config/application.yml was not found. You can find an example of it in config/application.yml-example'
end

现在,您的配置应该可以使用全局变量$ CONF

在应用程序的任何位置使用
$CONF[:email]

如果你有一个大的配置,你应该创建一个单独的类并让它初始化你的yml文件并在其中的属性中加载它的键和值,然后使用该类来访问所需的配置。

答案 1 :(得分:0)

有几种方法可以做到这一点。

  1. 您可以创建自己的配置文件并编写一个类来解析此文件(如果是.yml cofig则使用Psych),然后访问此类的方法。
  2. 您还可以将配置存储在通常的模型中并将其保存在数据库中。通过这种方式,您可以在管理面板中更改它们。例如。
  3. 您可以使用https://github.com/bkeepers/dotenv gem将变量保存在ENV
  4. rails config的另一个gem https://github.com/railsjedi/rails_config。它看起来像第一点的功能