gpt4 book ai didi

ruby-on-rails - 在 Rails 应用程序中存储全局变量的最佳位置在哪里?

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:24 25 4
gpt4 key购买 nike

我想知道是否有关于在 Rails 应用程序中存储全局设置的最佳实践。我的意思是:我定义了一些可能会改变的全局变量,但不太可能,而且将它们存储在数据库中似乎不合适,因为它们被使用得太多了。例如,我有 SYSTEM_EMAIL & SYSTEM_EMAIL_SIGNATURE & SYSTEM_STORAGE_ROOT。

现在我将它们保存在 environment.rb 中,但我不确定这是否是存储它们的正确位置。

谢谢

编辑:

已接受的答案仍然是适当的,但我后来开始使用 https://github.com/markbates/configatron ,还有其他选项,但我最喜欢 configatron。

最佳答案

我最喜欢的技术之一是将包含常量的文件放在目录 config/initializers/ 中(此目录中的所有文件都会自动加载),但每个不同的 Rails 环境都有一个部分。例如


case ENV['RAILS_ENV']
when "development"
SYSTEM_EMAIL = ...
SYSTEM_EMAIL_SIGNATURE = ...
when "staging"
SYSTEM_EMAIL = ...
SYSTEM_EMAIL_SIGNATURE = ...
when "production"
SYSTEM_EMAIL = ...
SYSTEM_EMAIL_SIGNATURE = ...
end

相反,如果您想将所有常量加载到一个大哈希中,则可以将它们加载为 YAML 文件。创建两个文件,一个名为 config/initializers/email_constants.rb,另一个名为 config/email_constants.yml。在后者中输入类似的内容:


development:
:system_email: ...
:system_email_signature: ...
staging:
:system_email: ...
system_email_signature: ...

... etc ...

然后在 config/initializers/email_constants.rb 中放置:


EMAIL_CONSTANTS = YAML.load_file("#{RAILS_ROOT}/config/email_constants.yml")[RAILS_ENV]

这将加载整个 YAML 文件并将适当键(代表 RAILS_ENV)的值分配给 EMAIL_CONSTANTS

这两种技术的优势在于局部性。您可以将所有相互关联的常量(即本例中的电子邮件常量)放在一个文件中。此外,不是将相同的常量分布在三个不同的文件中(每个 Rails 环境一个),而是将它们全部放在一个文件中。

关于ruby-on-rails - 在 Rails 应用程序中存储全局变量的最佳位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670910/

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