In Rails 3 i found a nice article to know how to hook in your engine or railtie initializers.
It printed the order of initializer execution. With Rails 4 this did not work any longer.
But i since i did not need it any longer, i removed it.
Now i wanted to know how long did my initializers take? Reason: Somehow it got slower with some changes i did.
So i came up with this little piece of code that prints the name of the executed initializer and how long it took. So now i can detmine in the logs when a initializer was executed and which took too long.
module RailsInitializerTimeLogging
module TimeLoggedInitializer
def self.included(base)
base.send :alias_method, :run_without_timelogging, :run
base.send :alias_method, :run, :run_with_timelogging
end
def run_with_timelogging(*args)
beginning = Time.now
begin
run_without_timelogging(*args)
ensure
puts "executed initializer: #{name} took #{Time.now - beginning} seconds"
end
end
end
end
Rails::Initializable::Initializer.send :include, RailsInitializerTimeLogging::TimeLoggedInitializer
And require it before your application:
require 'rails_initializer_time_logging'
module YourApplication
class Application < Rails::Application
....
end
end