2014-07-15 4 views
2

Я делаю Rails 3.2 Обновляю Rails 2.3, а вместе с ней собираюсь в новые версии драгоценных камней, таких как RSpec.Загрузка 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 

дня в день, я использую Зевсой, который имеет тестовую среду загружается примерно за 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 

РЕДАКТИРОВАТЬ: Для справки, грабли спецификации работают просто отлично.

+0

Нечетный - это меньше кода, чем приложение, над которым я работаю, и для этого требуется значительно меньше времени. Может быть, использовать ruby-prof, чтобы посмотреть, куда идет время? –

ответ

1

Ключ был ENV["Rails.env"], который не является правильно сформированной переменной окружения, и это заставляло все сходить с ума. Поиск и замена поменялись неправильно.

Смежные вопросы