gpt4 book ai didi

ruby-on-rails - Rails 4.2 常量 - 将它们放在哪里 : application. yml 与自定义配置文件.rb

转载 作者:太空宇宙 更新时间:2023-11-03 16:14:53 26 4
gpt4 key购买 nike

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

  1. 有些实际上是外部内容的密码,例如 sendgrid 登录名/密码

  2. 有些是内部“密码”,例如设计 key

  3. 有些就是我所说的全局常量,也就是说我们在整个应用程序中经常使用一些常量,并且不希望任何人轻易更改它。 它们几乎从不改变。一些示例:我们 facebook 页面的 ID,或者我们在主页无限滚动中定义的“每页”交易数量(对用户体验至关重要),或者我们在 aws cdn 上经过品牌验证的 Logo 的 url(存在于许多查看文件 html.erb 和 Assets javascript .js 文件)。在问我的问题时,我还要考虑的一个方面是,即使它们看起来不如设计 key 那么重要,但对于那些常量,我还是想收集,以确保只有少数人和授权开发人员可以更改这些关键数据.

这是我们今天要做的:

  • 对于 1 和 2:我将常量放在 config/application.yml 上

  • 对于 3:我按照官方 Rails 指南 (guides.rubyonrails.org/v4.2/configuring.html#custom-configuration) 的描述将常量放在自定义 .rb 配置文件中例如:在/config/initializers/app_custom.rb

    Rails.application.configure do        
    config.x.infite_scrollhp_feed_per_page_deals = 30
    end

然后在 Controller 中这样调用它:

nb_per_page = Rails.configuration.x.infite_scrollhp_feed_per_page_deals

但每次我都不确定是否应该将全局常量放在 config/application.yml 或我的自定义 config.rb 文件中?

推荐的“Rails-way”是什么?如何决定将它们放在哪里?是否存在普遍接受的“明智”/“被证明有效/结构良好”的实践/规则?

在性能上也有不同,也就是说,当用户加载页面时,application.yml 更快地“注入(inject)”到 View (.html) 和 Assets (.js) 文件中,而不是在我的自定义配置文件中定义它们?

最佳答案

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

  development:
some_password: ...

test:
some_password: ...

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

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

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

关于ruby-on-rails - Rails 4.2 常量 - 将它们放在哪里 : application. yml 与自定义配置文件.rb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47921773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com