【问题标题】:Setting enforce_available_locales to true in application.rb make tests slow在 application.rb 中将 enforce_available_locales 设置为 true 会使测试变慢
【发布时间】:2013-12-27 17:08:06
【问题描述】:

升级到 rails 3.2.16 后,我收到了弃用警告。弃用与 enforce_available_locales 有关,我可以通过应用此问题的解决方案来解决它。

Rails I18n validation deprecation warning

解决方案是在config/application.rb中添加这一行

config.i18n.enforce_available_locales = true

添加上述行后,我的 rspec 测试突然变得非常缓慢。通常每个测试用例大约需要 0.03-0.1 秒,现在每个测试用例大约需要 2-4 秒。

有人遇到同样的问题吗?还是这只适用于我的环境?

仅供参考,这是我的宝石:

gem 'rails', '= 3.2.16'  
gem 'rspec', '~> 2.14.1'  
gem 'rspec-rails', '~> 2.14.0'  
gem 'shoulda', '~> 3.5.0'  
gem 'i18n', '~> 0.6.9'

已编辑:

我找到了this issue on GitHub i18n,看来不只是我一个..

【问题讨论】:

    标签: ruby-on-rails ruby rspec


    【解决方案1】:

    有一个关于此的 github 问题:https://github.com/svenfuchs/i18n/issues/230

    问题已在 2014 年 5 月 7 日前解决:https://github.com/svenfuchs/i18n/pull/249

    【讨论】:

      【解决方案2】:

      我建议您使用zeus gem 以更快的方式加载整个环境。您可以关注this screencast了解更多信息。

      tl%tr

      在不将其添加到 Gemfile 的情况下,安装 zeus gem (gem install zeus),然后在 shell 中运行 zeus start。打开另一个shell,您将在zeus 快捷方式下拥有所有常见的rails 命令。

      当您使用zeus rspec spec/ 运行测试时,您会发现速度提升非常快,因为整个 rails 环境始终加载在内存中,并且不需要在每次运行测试时都进行初始化。

      【讨论】:

      • 嗨,虽然您的回答是正确的以加快整体测试性能.. 但是,我的问题与 application.rb 中的 enforce_available_locales 配置特别相关
      • 你是对的,我很抱歉。既然你已经找到了解决方案,我建议你自己添加正确的答案并接受它:)
      • 不幸的是,这不是解决方案。它只是被报告给 i18n github 的一个问题。所以在设置 true 以强制执行可用的语言环境时,我仍然坚持这种缓慢的性能:(
      猜你喜欢
      • 2013-12-27
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 2019-02-15
      相关资源
      最近更新 更多