module Refinements::IO

Provides additional enhancements to the IO primitive.

Public Instance Methods

redirect(other) { |self| ... } click to toggle source
# File lib/refinements/io.rb, line 22
def redirect other
  return self unless block_given?

  backup = dup
  reopen other
  yield self
  reopen backup
end
squelch(&block) click to toggle source
# File lib/refinements/io.rb, line 31
  def squelch(&block) = self.class.void.then { |void| redirect(void, &block) }
end
void() { |io| ... } click to toggle source
# File lib/refinements/io.rb, line 9
def void
  new(sysopen("/dev/null", "w+")).then do |io|
    return io unless block_given?

    yield io
    io.tap(&:close)
  end
end