module Dev::UI::StdoutRouter
Constants
- NotEnabled
- WRITE_WITHOUT_DEV_UI
Attributes
duplicate_output_to[RW]
Public Class Methods
assert_enabled!()
click to toggle source
# File lib/dev/ui/stdout_router.rb, line 134 def assert_enabled! raise NotEnabled unless enabled? end
disable()
click to toggle source
# File lib/dev/ui/stdout_router.rb, line 161 def disable return false unless enabled?($stdout) && enabled?($stderr) deactivate($stdout) deactivate($stderr) true end
enable()
click to toggle source
# File lib/dev/ui/stdout_router.rb, line 150 def enable return false if enabled?($stdout) || enabled?($stderr) activate($stdout, :stdout) activate($stderr, :stderr) true end
enabled?(stream = $stdout)
click to toggle source
# File lib/dev/ui/stdout_router.rb, line 157 def enabled?(stream = $stdout) stream.respond_to?(WRITE_WITHOUT_DEV_UI) end
ensure_activated()
click to toggle source
TODO: remove this
# File lib/dev/ui/stdout_router.rb, line 146 def ensure_activated enable unless enabled? end
with_enabled() { || ... }
click to toggle source
# File lib/dev/ui/stdout_router.rb, line 138 def with_enabled enable yield ensure disable end
Private Class Methods
activate(stream, streamname)
click to toggle source
# File lib/dev/ui/stdout_router.rb, line 176 def activate(stream, streamname) writer = StdoutRouter::Writer.new(stream, streamname) raise if stream.respond_to?(WRITE_WITHOUT_DEV_UI) stream.singleton_class.send(:alias_method, WRITE_WITHOUT_DEV_UI, :write) stream.define_singleton_method(:write) do |*args| writer.write(*args) end end
deactivate(stream)
click to toggle source
# File lib/dev/ui/stdout_router.rb, line 170 def deactivate(stream) sc = stream.singleton_class sc.send(:remove_method, :write) sc.send(:alias_method, :write, WRITE_WITHOUT_DEV_UI) end