这也困扰着我,因为我已经切换到 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
编辑:或者,对于 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
...您可以跟进发生的情况。在我的系统上,这是一个 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
我确信有人(是我吗?)需要一些时间从那里开始并优化。