mirror of
https://github.com/github/rails.git
synced 2026-02-17 01:21:42 -05:00
Added rack logger middleware that tails the environment log
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
module Rails
|
||||
module Rack
|
||||
autoload :Logger, "rails/rack/logger"
|
||||
autoload :Static, "rails/rack/static"
|
||||
end
|
||||
end
|
||||
|
||||
28
railties/lib/rails/rack/logger.rb
Normal file
28
railties/lib/rails/rack/logger.rb
Normal file
@@ -0,0 +1,28 @@
|
||||
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
|
||||
end
|
||||
|
||||
def call(env)
|
||||
response = @app.call(env)
|
||||
::File.open(@path, 'r') do |f|
|
||||
f.seek @cursor
|
||||
if f.mtime > @last_checked
|
||||
contents = f.read
|
||||
@last_checked = f.mtime
|
||||
@cursor += contents.length
|
||||
print contents
|
||||
end
|
||||
end
|
||||
response
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user