我在我的应用程序中使用了一些常量。 我说有三种类型:
有些是外部资源的密码,例如sendgrid登录/密码
有些是内部"密码"喜欢设计密钥
有些正是我所谓的全局常量,也就是说我们在整个应用程序中使用了很多常量,并且不希望任何人轻易改变它。 他们几乎永远不会改变。一些例子:我们的Facebook页面的ID,或交易数量"每页"我们定义在主页上的无限滚动(对UX来说很关键),或者我们在aws cdn上的品牌验证徽标的url(存在于许多视图文件html.erb和assets javascript .js文件中)。在提出我的问题时我也想到的一个方面是,即使它们看起来不像设计密钥那么重要,对于那些常数,我想收集,以确保很少的人和只有授权的开发人员可以更改这些关键数据
以下是我们今天所做的事情:
对于1和2:我将常量放在config / application.yml上
对于3:我将常量放在自定义.rb配置文件中,如官方Rails指南所述(guides.rubyonrails.org/v4.2/configuring.html#custom-configuration) 例如:on /config/initializers/app_custom.rb
Rails.application.configure do
config.x.infite_scrollhp_feed_per_page_deals = 30
end
然后以这种方式在控制器中调用它:
nb_per_page = Rails.configuration.x.infite_scrollhp_feed_per_page_deals
但每次我不确定是否应将全局常量放在config / application.yml或我的自定义配置.rb文件中?
推荐什么" Rails -way"?如何决定把它们放在哪里?是否存在普遍接受的"良好意识" /"被证明是有效/良好结构的"练习/规则?
也有不同的性能,也就是说application.yml"注入"用户加载页面时比在自定义配置文件中定义文件更快进入视图(.html)和资产(.js)文件?
答案 0 :(得分:1)
我建议将config/secrets.yml
用于敏感数据(1和2):
development:
some_password: ...
test:
some_password: ...
production:
some_password: <%= ENV["SOME_PASSWORD"] %>
这样,您可以为不同的环境(开发,测试和生产)设置不同的设置。
我强烈建议将生产敏感数据保存在ENV
变量中。
当涉及非敏感数据时(3)当不同环境需要不同的设置时,我会输入config/environments/*.rb
个文件。
如果情况并非如此,并且所有环境的设置都相同,我会将其放入application.rb
,application.yml
或initializers/*
中的自定义文件中,或者甚至作为类常数。