From a10e473b8124f16538a2616858e243408f6ffcee Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 18 Dec 2008 14:42:06 -0800 Subject: Rename Rails::Rack::Logger -> LogTailer. Speed up log mtime checks. --- railties/lib/rails/rack.rb | 2 +- railties/lib/rails/rack/log_tailer.rb | 35 +++++++++++++++++++++++++++++++++++ railties/lib/rails/rack/logger.rb | 28 ---------------------------- 3 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 railties/lib/rails/rack/log_tailer.rb delete mode 100644 railties/lib/rails/rack/logger.rb (limited to 'railties/lib') diff --git a/railties/lib/rails/rack.rb b/railties/lib/rails/rack.rb index f721abddc8..9705f65e52 100644 --- a/railties/lib/rails/rack.rb +++ b/railties/lib/rails/rack.rb @@ -1,7 +1,7 @@ module Rails module Rack autoload :Debugger, "rails/rack/debugger" - autoload :Logger, "rails/rack/logger" + autoload :LogTailer, "rails/rack/log_tailer" autoload :Metal, "rails/rack/metal" autoload :Static, "rails/rack/static" end diff --git a/railties/lib/rails/rack/log_tailer.rb b/railties/lib/rails/rack/log_tailer.rb new file mode 100644 index 0000000000..a237cee6bc --- /dev/null +++ b/railties/lib/rails/rack/log_tailer.rb @@ -0,0 +1,35 @@ +module Rails + module Rack + class LogTailer + EnvironmentLog = "#{File.expand_path(Rails.root)}/log/#{Rails.env}.log" + + def initialize(app, log = nil) + @app = app + + path = Pathname.new(log || EnvironmentLog).cleanpath + @cursor = ::File.size(path) + @last_checked = Time.now.to_f + + @file = ::File.open(path, 'r') + end + + def call(env) + response = @app.call(env) + tail_log + response + end + + def tail_log + @file.seek @cursor + + mod = @file.mtime.to_f + if mod > @last_checked + contents = @file.read + @last_checked = mod + @cursor += contents.size + $stdout.print contents + end + end + end + end +end diff --git a/railties/lib/rails/rack/logger.rb b/railties/lib/rails/rack/logger.rb deleted file mode 100644 index 25a814f1db..0000000000 --- a/railties/lib/rails/rack/logger.rb +++ /dev/null @@ -1,28 +0,0 @@ -module Rails - module Rack - class Logger - EnvironmentLog = "#{File.expand_path(Rails.root)}/log/#{Rails.env}.log" - - def initialize(app, log = nil) - @app = app - @path = Pathname.new(log || EnvironmentLog).cleanpath - @cursor = ::File.size(@path) - @last_checked = Time.now.to_f - end - - def call(env) - response = @app.call(env) - ::File.open(@path, 'r') do |f| - f.seek @cursor - if f.mtime.to_f > @last_checked - contents = f.read - @last_checked = f.mtime.to_f - @cursor += contents.length - print contents - end - end - response - end - end - end -end -- cgit v1.2.3