2012-05-27 29 views
6

Chúng tôi đang phát triển một ứng dụng trên Ruby 1.9.3 và Rails 3.2.1.Tại sao "thời gian khởi động" của tôi là "kiểm tra rake": đơn vị` trên Rails 3.2.1 quá chậm?

Gần đây, các thử nghiệm đơn vị của chúng tôi đã trở nên chậm chạp ngay từ đầu. Phải mất ~ 15 giây để thực hiện các yêu cầu thực thi &. Khi tôi nhìn thấy "Kiểm tra thực thi: đơn vị", phải mất thêm 10 giây nữa trước khi tôi thấy bất kỳ đầu ra nào. Cuối cùng, nhiệm vụ hoàn thành và kiểm tra chỉ mất 3 giây để thực thi bản thân.

3 giây để kiểm tra đơn vị được chấp nhận. Thời gian tải 25 giây không thực tế đối với BDD/TDD.

Đây là những gì xảy ra khi tôi chạy với rake test:units --trace:

** Invoke test:units (first_time) 
** Invoke test:prepare (first_time) 
** Invoke db:test:prepare (first_time) 
** Invoke db:abort_if_pending_migrations (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:abort_if_pending_migrations 
** Execute db:test:prepare 
** Invoke db:test:load (first_time) 
** Invoke db:test:purge (first_time) 
** Invoke environment 
** Execute db:test:purge 
** Execute db:test:load 
** Invoke db:test:load_schema (first_time) 
** Invoke db:test:purge 
** Execute db:test:load_schema 
** Invoke db:schema:load (first_time) 
** Invoke environment 
** Execute db:schema:load 
** Execute test:prepare 
** Execute test:units 

Tôi sẽ không nghi ngờ rằng giản đồ cơ sở dữ liệu được nạp, sau đó tái nạp, có thể là một nguồn quan trọng của sự chậm chạp. Tuy nhiên, tôi đã không làm bất cứ điều gì để Rakefile liên quan đến các bài kiểm tra đơn vị của chúng tôi. Tôi có thể nhìn trộm ở đâu để xem điều gì đang thực sự xảy ra dưới mui xe?

Đây là những gì ở phía trên cùng của test/test_helper.rb:

require 'simplecov' 
ENV["RAILS_ENV"] = "test" 
require File.expand_path('../../config/environment', __FILE__) 
require 'rails/test_help' 

Những gì tôi đã cố gắng:

  1. Bình luận ra simplecov, vì chúng tôi chỉ sử dụng cho máy chủ CI của chúng tôi, chứ không phải quá trình phát triển (không có sự khác biệt trong thời gian thực hiện)
  2. Nhận xét các nội dung khác, nhưng điều đó đã phá vỡ các thử nghiệm thậm chí thực thi. Tôi không hoàn toàn chắc chắn lý do tại sao những mặt hàng khác đang có, như tôi nghĩ rằng môi trường Rails sẽ được nạp trong "thử nghiệm" tự động.

Bất kỳ ý tưởng nào về cách thức/cách tôi có thể chọc đầu mình bên cạnh để xem?

Có khả năng Rails đang chạy di chuyển thay vì chỉ schema:load? Khi chúng ta phát triển, chúng ta có một số lượng lớn di cư (~ 30).

EDIT:

Tôi đang sử dụng 2011-model Macbook Pro với 8G RAM và Core i7 - không nghĩ rằng đó là máy tính của tôi. Tôi đã thấy in this question rằng trên Windows, require có thể gây ra sự cố.

Tôi cũng cho rằng đồ đạc có thể là vấn đề, nhưng nếu đồ đạc là vấn đề, các bài kiểm tra mình, không phải thời gian tải để kiểm tra, sẽ chậm, phải không?

EDIT 2:

Nhờ câu trả lời pchap10k của tôi nghĩ rằng nó không có gì để làm với cào - đó là khoảng Gemfile của chúng tôi. Có lẽ tôi nên tìm kiếm trong khu vực đó ...

Trả lời

2

Có thể đá quý của bạn đang tải chậm. Xem chủ đề này để biết các khiếu nại tương tự về thời gian tải cào chậm trong Rails 3.x>slow rails stack

+0

Điều đó có vẻ như vậy. Gemfile mất 15 giây để tải môi trường Rails. – makdad

Các vấn đề liên quan