在application.rb中将enforce_available_locales设置为true会使测试变慢

时间:2013-12-10 09:06:28

标签: ruby-on-rails ruby rspec

升级到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,似乎不仅仅是我......

2 个答案:

答案 0 :(得分:1)

有一个github问题:https://github.com/svenfuchs/i18n/issues/230

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

答案 1 :(得分:0)

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

TL%TR

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

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