如何打印传递给`require`的文件名?

时间:2012-02-26 04:29:46

标签: ruby-on-rails-3

启动Rails 3.x服务器(rails s)时,是否可以在加载时打印每个文件的路径和名称?

如下所示,但对于Rails require d的每个文件(例如,考虑加载每个铁路):

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

请注意,我只需在上面的文件中使用puts调用即可完成上述操作,但这不是我的目标。相反,我希望通过任何代码打印文件名require d,而不仅仅是在我的应用程序中,而是在调用require时。例如,打印在Rails代码中调用require的文件名。

更新

谢谢@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 个答案:

答案 0 :(得分:2)

看起来您需要编辑kernel.rb。这是一个SO Post关于它的响应者建议这一点(尽管你可以将其限制为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