Rails 自定义配置

Rails 允许你在 config/application 中自定义配置自己的变量,比如 config.hello = 'world'

而如果你要使用多层嵌套的变量,则要使用 config.x,下面具体举个例子。

用 config.x 定义全局嵌套 Hash 常量

因为需要用到的变量特别多,所以单独在 config/initializes 目录下新建一个初始化文件,然后配置:

CONSTANT = Rails.configuration.x.custom_configurations

CONSTANT.params = ActiveSupport::HashWithIndifferentAccess.new
CONSTANT.params[:test] = ENV["LOCAL_PARAMETER"] || 'test'

第一行 将自定义的变量 custom_configurations 赋予常量 CONSTANT。

第二行 使用 ActiveSupport 特有的 HashWithIndifferentAccess 类初始化 CONSTANT 的一个嵌套变量,这样就能将这个变量作为 Hash 赋值了。

第三行 用 symbol 的方式给 params 赋值,没有设定环境变量则取值 ‘test’。

这个用法非常方便,支持你在整个 Rails 项目中使用 CONSTANT 常量,比如你可以在 controller 里面做判断 if test == CONSTANT.params[:test]

对 Hash 你可以继续嵌套下去,像这样:

CONSTANT.params[:nested] = ActiveSupport::HashWithIndifferentAccess.new
CONSTANT.params[:nested][:first] = 'first'

参考资料: