diff options
Diffstat (limited to 'railties/lib/rails/rack/log_tailer.rb')
-rw-r--r-- | railties/lib/rails/rack/log_tailer.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/railties/lib/rails/rack/log_tailer.rb b/railties/lib/rails/rack/log_tailer.rb new file mode 100644 index 0000000000..bc26421a9e --- /dev/null +++ b/railties/lib/rails/rack/log_tailer.rb @@ -0,0 +1,38 @@ +require 'active_support/deprecation' + +module Rails + module Rack + class LogTailer + def initialize(app, log = nil) + ActiveSupport::Deprecation.warn "LogTailer is deprecated and will be removed on Rails 5" + + @app = app + + path = Pathname.new(log || "#{::File.expand_path(Rails.root)}/log/#{Rails.env}.log").cleanpath + + @cursor = @file = nil + if ::File.exist?(path) + @cursor = ::File.size(path) + @file = ::File.open(path, 'r') + end + end + + def call(env) + response = @app.call(env) + tail! + response + end + + def tail! + return unless @cursor + @file.seek @cursor + + unless @file.eof? + contents = @file.read + @cursor = @file.tell + $stdout.print contents + end + end + end + end +end |