Я делаю 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
РЕДАКТИРОВАТЬ: Для справки, грабли спецификации работают просто отлично.
Нечетный - это меньше кода, чем приложение, над которым я работаю, и для этого требуется значительно меньше времени. Может быть, использовать ruby-prof, чтобы посмотреть, куда идет время? –