如何在rails中设置全局配置变量

时间:2016-04-15 06:43:50

标签: ruby-on-rails variables

我有一个最终是开源的应用程序。目前它在我自己的域上运行,但我想将域设置为可以更改的变量。基本上在宣布之后:

foo = ENV['DOMAIN_NAME'] || 'example.com'

我希望能够参考:

  1. 浏览
  2. 配置
  3. 控制器
  4. 助手
  5. 可选:我可以在某个地方设置一个包含所有全局声明变量的配置文件,然后在任何地方引用它们吗?这样我就可以创建一个config.rb.sample文件,我可以让用户填写他们的设置。

2 个答案:

答案 0 :(得分:2)

我对the global gemthe dotenv gem的组合非常满意。第一个用于全局配置,第二个用于存储环境变量。

您的全局.yml文件将包含对您的环境变量的引用(例如您上面提到的那个:ENV['DOMAIN_NAME']),它实际上会在您的.env文件中定义。

答案 1 :(得分:1)

你可以使用费加罗。它非常好用且易于使用。你不需要任何配置,你可以在你的Gemfile,bundle中添加gem,就是这样!

要存储变量,您需要在config/application.yml中创建一个新文件,然后将其存储为:

# Global
#
aws_access_key: ~
aws_secret_key: ~
aws_s3_host: 's3-eu-west-1.amazonaws.com'

rails_secret: 'ce223735d819fb993466ac5e615fff07cc71c19db40e211b83a3ac579203fcf4db78251f4143025e99aabffb1ea46bd252b7b16e50c4c88e5407b42fe5d4e6c4'
devise_secret: '9c1fdc65b9f385c54c99e1a81ea398269749f12eee6790c12921dcf1ba7579864ef0fe40f8bcf33d2d78fcbbb506573f5a0c864090de9f3fd991f8367c2aee7c'

# Per Environment
#

development:
  domain: 'lvh.me:3000'

production:
  domain: ~

  # Puma
  #
  max_threads: 5
  web_concurency: 2

要访问它们,您只需致电Figaro.env.rails_secretENV['rails_secret']:)

更多信息:https://github.com/laserlemon/figaro