Это меня тоже беспокоит, так как я перешел на Rails 3.
На ваш второй вопрос: я нашел, копая фреймворк, что инициализаторы занимают примерно половину времени простого вызова rake или railsдо того, как он фактически начнет выполнять свою задачу.
Если вы поместите эти простые строки синхронизации в цикл вызовов инициализатора в $GEM_PATH/gems/railties-3.0.3/lib/rails/initializable.rb
(или добавьте его обратно, если хотите):
def run_initializers(*args)
return if instance_variable_defined?(:@ran)
t0 = Time.now
initializers.tsort.each do |initializer|
t = Time.now
initializer.run(*args)
puts("%60s: %.3f sec" % [initializer.name, Time.now - t])
end
puts "%60s: %.3f sec" % ["for all", Time.now - t0]
@ran = true
end
РЕДАКТИРОВАТЬ: Или, для поручней 4.2.1:
def run_initializers(group=:default, *args)
return if instance_variable_defined?(:@ran)
t0 = Time.now
initializers.tsort.each do |initializer|
t = Time.now
initializer.run(*args) if initializer.belongs_to?(group)
puts("%60s: %.3f sec" % [initializer.name, Time.now - t])
end
puts "%60s: %.3f sec" % ["for all", Time.now - t0]
@ran = true
end
... вы можете следить за тем, что происходит.На моей системе, которая является 2.4 Core 2 Duo MacBook, инициализация занимает около 7 секунд.
Некоторые из них работают в моей системе особенно медленно.Когда я фильтрую все ниже секунды, я получаю такой результат в моей системе:
load_active_support: 1.123 sec
active_support.initialize_time_zone: 1.579 sec
load_init_rb: 1.118 sec
set_routes_reloader: 1.291 sec
Я уверен, что кому-то (это я?) Понадобится некоторое время, чтобы начать там и оптимизировать.