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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在Rails应用程序中存储全局变量的最佳位置在哪里?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道在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环境一个),您可以将它们全部放在一个文件中.

原文链接:https://www.f2er.com/ruby/271936.html

猜你在找的Ruby相关文章