Как напечатать имя файла, переданное в `require`? - PullRequest
0 голосов
/ 26 февраля 2012

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

Примерно так, как показано ниже, но для каждого файла, который 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
....

1 Ответ

2 голосов
/ 26 февраля 2012

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...