【问题标题】:RSpec loading is extremely slowRSpec 加载非常慢
【发布时间】:2014-07-24 21:58:17
【问题描述】:

我正在从 Rails 2.3 升级 Rails 3.2,并随之升级到新版本的 gems,如 RSpec。

值得注意的是,我的应用非常大:

$ rake stats
+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                | 132568 | 96987 |    1108 |    7078 |   6 |    11 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 55656     Test LOC: 41331     Code to Test Ratio: 1:0.7

我每天都在使用 zeus,它在大约 20 秒内启动了测试环境,运行构建大约需要 40 分钟。

但是如果我跑了

$ rspec

刚开始需要 4 分 53 秒,然后从那里爬取。

我的规范助手没有做任何疯狂的事情。我唯一真正删除的是 rspec/autorun,它是防止 zeus 重复执行所有内容所必需的。

# spec_helper.rb
ENV["Rails.env"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/given'
require 'database_cleaner'
require 'capybara/rspec/matchers'
require 'debugger'

Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

include FactoryGirl::Syntax::Methods

RSpec.configure do |config|
  config.treat_symbols_as_metadata_keys_with_true_values = true
  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end

  config.fixture_path = "#{::Rails.root}/spec/fixtures"
  config.global_fixtures = :users, :roles
  config.use_transactional_fixtures = false
  config.infer_base_class_for_anonymous_controllers = false
  config.order = "random"

  def (ActionDispatch::Integration::Session).fixture_path
    RSpec.configuration.fixture_path
  end
end

编辑:为了记录,rake 规范工作得很好。

【问题讨论】:

  • 奇怪 - 这比我开发的应用程序的代码少,而且启动所需的时间也大大减少。也许使用 ruby​​-prof 来查看时间的去向?

标签: ruby-on-rails rspec


【解决方案1】:

关键是ENV["Rails.env"],它不是一个格式正确的环境变量,它让一切变得疯狂。搜索和替换出错了。

【讨论】:

  • 解决办法是什么?
猜你喜欢
  • 2019-04-21
  • 2015-02-03
  • 2016-04-03
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2016-06-11
相关资源
最近更新 更多