2012-02-26 4 views
0

При запуске сервера Rails 3.x (rails s) можно ли печатать путь и имя каждого файла при его загрузке?Как напечатать имя файла, переданное `require`?

Что-то, как показано ниже, но для каждого файла, который require d по Rails (думаю загрузку каждого railtie, например):

Loading boot.rb... 
Loading application.rb... 
Loading environment.rb... 
Loading development.rb... 
Loading routes.rb... 

Обратите внимание, что я могу сделать выше, просто используя puts звонки в файлах выше, но это не то, к чему я стремлюсь. Вместо этого я хотел бы напечатать имя файла require d любым кодом, а не только в моем приложении, но всякий раз, когда вызывается require. Например, печать имен файлов для вызовов require производится внутри кода Rails.

UPDATE

Благодаря @ScottJShea. Я использовал следующий код:

В application.rb:

require File.expand_path('../boot', __FILE__) 

module Kernel 
    def require_and_print(string) 
    puts string 
    require_original(string) 
    end 
    alias_method :require_original, :require 
    alias_method :require, :require_and_print 
end 
.... 

ответ

2

Похоже, вам нужно будет редактировать kernel.rb. Вот SO Post об этом, где ответчик предлагает это (хотя вы можете муравья ограничить его требованием):

module Kernel 
    def load_and_print(string) 
    $:.each do |p| 
     if File.exists? File.join(p, string) 
     puts File.join(p, string) 
     break 
     end 
    end 
    load_original(string) 
    end 

    alias_method :load_original, :load 
    alias_method :load, :load_and_print 

end 
+0

Супер. Используется этот пример для запроса. Обновленный ответ с кодом, который я использовал. – Zabba

+0

Рад, что это сработало :) – ScottJShea

Смежные вопросы