xcu*_*cut 7 app-config ruby-on-rails
我们总是习惯将应用程序配置放入环境文件中.这对生产管理没有好处,所以现在我们通过初始化程序加载它:
# myinitializer.rb
ApplicationConfig = YAML.load_file("#{Rails.root}/config/application/default.yml").symbolize_keys()
Run Code Online (Sandbox Code Playgroud)
一旦我们开始访问配置ApplicationConfig,应用程序测试性能就会变得更糟.一个rspec套件从4秒减少到30秒.
在我们的应用程序控制器中,我们需要使用a执行一些操作before_filter,其工作方式如下:
before_filter :extra_control
def extra_control
if ApplicationConfig.some_flag
...
end
end
Run Code Online (Sandbox Code Playgroud)
声明一个指向ApplicationConfig完全恢复性能的变量:
config = ApplicationConfig
def extra_control
if config.some_flag
...
end
end
Run Code Online (Sandbox Code Playgroud)
为什么?为什么通过全局变量访问它会破坏性能?我们在视图和其他控制器的整个代码库中执行此操作.我们是否需要以不同方式执行此操作,例如将实例变量注入所有控制器?
编辑:我们确实验证了从YAML加载配置的代码无论哪种方式都被调用一次,因此重复加载似乎不是根本原因.
编辑:事实证明这是一个由设置变量引起的错误,该变量被加载为字符串而不是布尔值,导致应用程序进入测试睡眠模式:(对不起,感谢您的尝试.我生命的3天我永远不会回来!
这里的其他答案没有什么区别 - 这是由一个不相关的问题引起的。作为记录
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |