Module: Kernel
- Defined in:
- lib/active_support/vendor/builder/blankslate.rb,
lib/active_support/core_ext/kernel/requires.rb,
lib/active_support/core_ext/kernel/reporting.rb,
lib/active_support/core_ext/kernel/daemonizing.rb
Overview
Since Ruby is very dynamic, methods added to the ancestors of BlankSlate after BlankSlate is defined will show up in the list of available BlankSlate methods. We handle this by defining a hook in the Object and Kernel classes that will hide any defined
Class Method Summary collapse
- .blank_slate_method_added ⇒ Object
-
.method_added(name) ⇒ Object
Detect method additions to Kernel and remove them in the BlankSlate class.
Instance Method Summary collapse
-
#daemonize ⇒ Object
Turns the current script into a daemon process that detaches from the console.
-
#enable_warnings ⇒ Object
Sets $VERBOSE to true for the duration of the block and back to its original value afterwards.
-
#require_library_or_gem(library_name) ⇒ Object
Require a library with fallback to RubyGems.
-
#silence_stderr ⇒ Object
For compatibility.
-
#silence_stream(stream) ⇒ Object
Silences any stream for the duration of the block.
-
#silence_warnings ⇒ Object
Sets $VERBOSE to nil for the duration of the block and back to its original value afterwards.
- #suppress(*exception_classes) ⇒ Object
Class Method Details
.blank_slate_method_added ⇒ Object
39 |
# File 'lib/active_support/vendor/builder/blankslate.rb', line 39 alias_method :blank_slate_method_added, :method_added |
.method_added(name) ⇒ Object
Detect method additions to Kernel and remove them in the BlankSlate class.
43 44 45 46 47 |
# File 'lib/active_support/vendor/builder/blankslate.rb', line 43 def method_added(name) blank_slate_method_added(name) return if self != Kernel Builder::BlankSlate.hide(name) end |
Instance Method Details
#daemonize ⇒ Object
Turns the current script into a daemon process that detaches from the console. It can be shut down with a TERM signal.
4 5 6 7 8 9 10 11 12 13 14 |
# File '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 ⇒ Object
Sets $VERBOSE to true for the duration of the block and back to its original value afterwards.
17 18 19 20 21 22 |
# File 'lib/active_support/core_ext/kernel/reporting.rb', line 17 def enable_warnings old_verbose, $VERBOSE = $VERBOSE, true yield ensure $VERBOSE = old_verbose end |
#require_library_or_gem(library_name) ⇒ Object
Require a library with fallback to RubyGems. Warnings during library loading are silenced to increase signal/noise for application warnings.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File '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_stderr ⇒ Object
For compatibility
25 26 27 |
# File 'lib/active_support/core_ext/kernel/reporting.rb', line 25 def silence_stderr #:nodoc: silence_stream(STDERR) { yield } end |
#silence_stream(stream) ⇒ Object
Silences any stream for the duration of the block.
silence_stream(STDOUT) do
puts 'This will never be seen'
end
puts 'But this will'
36 37 38 39 40 41 42 43 |
# File 'lib/active_support/core_ext/kernel/reporting.rb', line 36 def silence_stream(stream) old_stream = stream.dup stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null') stream.sync = true yield ensure stream.reopen(old_stream) end |
#silence_warnings ⇒ Object
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
9 10 11 12 13 14 |
# File 'lib/active_support/core_ext/kernel/reporting.rb', line 9 def silence_warnings old_verbose, $VERBOSE = $VERBOSE, nil yield ensure $VERBOSE = old_verbose end |