aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2008-12-18 14:42:06 -0800
committerJeremy Kemper <jeremy@bitsweat.net>2008-12-18 14:42:06 -0800
commita10e473b8124f16538a2616858e243408f6ffcee (patch)
tree45e73db3df29df5168c7875e18729757b838a0de /railties/lib
parent6703f909c705ba8405360f23d8d0959bf11514a8 (diff)
downloadrails-a10e473b8124f16538a2616858e243408f6ffcee.tar.gz
rails-a10e473b8124f16538a2616858e243408f6ffcee.tar.bz2
rails-a10e473b8124f16538a2616858e243408f6ffcee.zip
Rename Rails::Rack::Logger -> LogTailer. Speed up log mtime checks.
Diffstat (limited to 'railties/lib')
-rw-r--r--railties/lib/rails/rack.rb2
-rw-r--r--railties/lib/rails/rack/log_tailer.rb35
-rw-r--r--railties/lib/rails/rack/logger.rb28
3 files changed, 36 insertions, 29 deletions
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