我有一个最终是开源的应用程序。目前它在我自己的域上运行,但我想将域设置为可以更改的变量。基本上在宣布之后:
foo = ENV['DOMAIN_NAME'] || 'example.com'
我希望能够参考:
可选:我可以在某个地方设置一个包含所有全局声明变量的配置文件,然后在任何地方引用它们吗?这样我就可以创建一个config.rb.sample
文件,我可以让用户填写他们的设置。
答案 0 :(得分:2)
我对the global gem和the 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_secret
或ENV['rails_secret']
:)