diff options
author | Eric Wong <normalperson@yhbt.net> | 2010-06-15 23:17:33 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2010-06-15 23:25:17 +0000 |
commit | 13dc5b88cde691cc4e105de04ebb7804ae633ae6 (patch) | |
tree | c66df3ad8dfa2b5dd3e9517adf9696e82bfbd102 /lib/unicorn.rb | |
parent | 43175d4fe36f91a28563a8cbf46160ee076de31c (diff) | |
download | unicorn-13dc5b88cde691cc4e105de04ebb7804ae633ae6.tar.gz |
While log reopening worked reliably for newly-created File objects in the unit tests, the $stderr and $stdout handles that get redirected did not get reopened reliably under Rubinius. We work around this by relying on Rubinius internals and directly setting the @path instance variable. This is harmless for MRI and should be harmless for other any other Ruby implementations we'll eventually support. ref: http://github.com/evanphx/rubinius/issues/360
Diffstat (limited to 'lib/unicorn.rb')
-rw-r--r-- | lib/unicorn.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/unicorn.rb b/lib/unicorn.rb index a7b0646..9dcdc29 100644 --- a/lib/unicorn.rb +++ b/lib/unicorn.rb @@ -816,7 +816,12 @@ module Unicorn end def redirect_io(io, path) - File.open(path, 'ab') { |fp| io.reopen(fp) } if path + File.open(path, 'ab') do |fp| + io.reopen(fp) + + # workaround for http://github.com/evanphx/rubinius/issues/360 + io.instance_variable_set(:@path, path) if io.path.nil? + end if path io.sync = true end |