Rails 4.2常量 - 放置它们的位置:application.yml vs custom config file.rb

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails 4.2常量 - 放置它们的位置:application.yml vs custom config file.rb相关的知识,希望对你有一定的参考价值。

我在我的应用程序中使用了一些常量。我会说有三种类型:

  1. 有些是外部东西的密码,如sendgrid登录/密码
  2. 有些是内部的“密码”,就像设计密钥一样
  3. 有些正是我所说的全局常量,也就是说我们在整个应用程序中使用了很多常量,并且不希望任何人轻易改变它。他们几乎从不改变。一些例子:我们的Facebook页面的ID,或者我们在主页上无限滚动中定义的“每页”交易数量(对于UX来说很关键),或者我们在aws cdn上的品牌验证徽标的URL(存在于许多中)查看文件html.erb和资产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)文件,而不是在我的自定义配置文件中定义它们?

答案

我建议使用config/secrets.yml获取敏感数据(1和2):

  development:
    some_password: ...

  test:
    some_password: ...

  production:
    some_password: <%= ENV["SOME_PASSWORD"] %>

这样,您可以为不同的环境(用于开发,测试和生产)设置不同的设置。我强烈建议将生产敏感数据保存在ENV变量中。

当它用于非敏感数据时(3)当不同环境需要不同的设置时,我会输入config/environments/*.rb文件。如果情况并非如此,并且所有环境的设置都相同,我会将其放入application.rbapplication.ymlinitializers/*中的自定义文件中,甚至作为类常量。

以上是关于Rails 4.2常量 - 放置它们的位置:application.yml vs custom config file.rb的主要内容,如果未能解决你的问题,请参考以下文章

Rails:Webpacker 4.2 在 /app/public/packs/manifest.json heroku 中找不到应用程序

Rails:为特定视图放置 onload 的位置

未初始化的常量 Faker::Date 更新到 rails 5.1

在不同位置放置Rails Form_For字段

我应该在 Rails 应用程序的哪个位置放置将不同 JSON 字符串展平为类友好格式的功能?

Rails 4.2 强参数和解析 json put/update 上的更改属性