To przeszkadza mi również, ponieważ mam włączony do szyn 3.
do drugiego pytania: Znalazłem przeszukując strukturę, w której inicjalizatorzy zajmują mniej więcej połowę czasu prostego wywołania rake lub rails, zanim faktycznie zacznie on wykonywać swoje zadanie.
Jeśli umieścisz te proste linie czasowe do pętli połączeń initializer w $GEM_PATH/gems/railties-3.0.3/lib/rails/initializable.rb
(lub piggy-back, jeśli chcesz):
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
EDIT: Albo na railties 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
... możesz śledzić, co się stanie. W moim systemie, którym jest 2.4 Core 2 Duo MacBook, inicjalizatory zajmują około 7 sekund.
Jest kilka szczególnie wolnych w moim systemie. Kiedy filtrowanie wszystko poniżej sekundy, otrzymuję ten wynik w moim systemie:
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
Jestem pewny kogoś (czy to ja?) Zajmie trochę czasu, aby rozpocząć tam i optymalizacji.
Na jakiej platformie jesteś? Linux? Prochowiec? Proszę również zdefiniować "dużo czasu" ... 20 sekund? 2 minuty? –
Tak, właśnie zaczynam tutorial Railsowy z czystą instalacją Rails 3.1.1 na Windows 7 i 'rake-T' trwa 11 sekund do wykonania! –