在Ruby on Rails应用程序中存储配置值(键,密码或仅配置值)的最佳位置在哪里?我经常搜索,但没有找到我认为合适的答案。
答案 0 :(得分:3)
如果涉及密码,我建议您将数据存储在外部文件中,这样可以避免将敏感数据提交到存储库。 然后,您可以通过在初始化程序中读取文件来将数据加载到内存中,例如:
配置/ my_secrets.yml:
development:
password: abcdefgh
test:
password: abcdefgh
配置/初始化/ load_my_config.rb:
MY_CONFIG = YAML.load_file("#{Rails.root.to_s}/config/my_secrets.yml")[Rails.env]
现在,您可以通过访问password
在任何环境中访问MY_CONFIG['password']
。
生产密码可以仅保存在服务器上(以及另一个安全位置)。
对于非敏感数据,我只是将数据直接放在初始化器中。
答案 1 :(得分:3)
密码(用于应用程序)应由身份验证/授权gem处理,例如Devise,Clearance,authLogic等。
您希望通过应用程序的给定请求的ruby代码提供的变量可以存储在全局变量中。类级固定值可以存储在常量中。在rails中,控制器继承自application_controller,您可以在那里定义类级别常量。检查Ruby语言,了解这些变量类型变量的确切继承规则。
实际上,最好不要这样做或尽可能避免它,许多优秀的程序员会像瘟疫一样避免这种情况。这意味着您的代码块未被封装 - 操作现在依赖于外部值,并且通过使许多项依赖于可能在其范围之外发生变化的一件事来增加耦合。
答案 2 :(得分:2)
大概你读过the rails guide for configuring applications?除此之外,每个gem通常在后期安装生成器中提供初始化器/配置文件(如果需要),并在README中记录它。