Methods
D
E
R
S
Instance Public methods
daemonize()

Turns the current script into a daemon process that detaches from the console. It can be shut down with a TERM signal.

# File rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb, line 4
def daemonize
  exit if fork                   # Parent exits, child continues.
  Process.setsid                 # Become session leader.
  exit if fork                   # Zap session leader. See [1].
  Dir.chdir "/"                  # Release old working directory.
  File.umask 0000                # Ensure sensible umask. Adjust as needed.
  STDIN.reopen "/dev/null"       # Free file descriptors and
  STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
  STDERR.reopen STDOUT           # STDOUT/ERR should better go to a logfile.
  trap("TERM") { exit }
end
enable_warnings()

Sets $VERBOSE to true for the duration of the block and back to its original value afterwards.

# File rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb, line 17
def enable_warnings
  old_verbose, $VERBOSE = $VERBOSE, true
  yield
ensure
  $VERBOSE = old_verbose
end
exec(*args)
# File rails/railties/test/mocks/stubbed_kernel.rb, line 2
def exec(*args)
  true
end
require_library_or_gem(library_name)

Require a library with fallback to RubyGems. Warnings during library loading are silenced to increase signal/noise for application warnings.

# File rails/activesupport/lib/active_support/core_ext/kernel/requires.rb, line 4
def require_library_or_gem(library_name)
  silence_warnings do
    begin
      require library_name
    rescue LoadError => cannot_require
      # 1. Requiring the module is unsuccessful, maybe it's a gem and nobody required rubygems yet. Try.
      begin
        require 'rubygems'
      rescue LoadError => rubygems_not_installed
        raise cannot_require
      end
      # 2. Rubygems is installed and loaded. Try to load the library again
      begin
        require library_name
      rescue LoadError => gem_not_installed
        raise cannot_require
      end
    end
  end
end
silence_stream(stream)

Silences any stream for the duration of the block.

silence_stream(STDOUT) do
  puts 'This will never be seen'
end

puts 'But this will'
# File rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb, line 36
def silence_stream(stream)
  old_stream = stream.dup
  stream.reopen(RUBY_PLATFORM =~ %rmswin/ ? 'NUL:' : '/dev/null')
  stream.sync = true
  yield
ensure
  stream.reopen(old_stream)
end
silence_warnings()

Sets $VERBOSE to nil for the duration of the block and back to its original value afterwards.

silence_warnings do
  value = noisy_call # no warning voiced
end

noisy_call # warning voiced
# File rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb, line 9
def silence_warnings
  old_verbose, $VERBOSE = $VERBOSE, nil
  yield
ensure
  $VERBOSE = old_verbose
end
suppress(*exception_classes)
# File rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb, line 45
def suppress(*exception_classes)
  begin yield
  rescue Exception => e
    raise unless exception_classes.any? { |cls| e.kind_of?(cls) }
  end
end