4

在 Ruby on Rails 应用程序中存储配置值(键、密码或只是配置值)的最佳位置在哪里?我搜索了很多,没有找到我认为正确的答案。

4

3 回答 3

4

密码(用于应用程序)应由身份验证/授权 gem 处理,例如 Devise、Clearance、authLogic 等。

您希望通过对应用程序的给定请求的 ruby​​ 代码可用的变量可以存储在全局变量中。类级别的固定值可以存储在常量中。在 rails 作为控制器继承自 application_controller 时,您可以在那里定义类级常量。检查 Ruby 语言以了解这些变量类型的变量的确切继承规则。

实际上,最好的做法是根本不这样做或尽可能避免这样做,许多优秀的程序员会像避免瘟疫一样避免这种情况。这意味着您的代码块没有被封装——这些操作现在依赖于外部值,并且它通过使许多项目依赖于可能在其范围之外发生变化的一件事情来增加耦合。

于 2012-06-10T20:25:27.837 回答
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']. 生产密码可以单独保存在服务器上(以及另一个安全位置)。

对于非敏感数据,我只需将数据直接放在初始化程序中。

于 2012-06-10T20:17:18.190 回答
2

想必您已经阅读了用于配置应用程序的 rails 指南?除此之外,如果需要,每个 gem 通常会在安装后生成器中提供一个初始化程序/配置文件,并将其记录在 README 中。

于 2012-06-11T12:50:36.050 回答