Module: Kernel
- Defined in:
- lib/passive_support/core_ext/kernel/debugger.rb,
lib/passive_support/core_ext/kernel/requires.rb,
lib/passive_support/core_ext/kernel/reporting.rb,
lib/passive_support/core_ext/kernel/daemonizing.rb
Instance Method Summary collapse
- #breakpoint ⇒ Object
-
#daemonize ⇒ Object
Turns the current script into a daemon process that detaches from the console.
-
#debugger ⇒ Object
Starts a debugging session if ruby-debug has been loaded (call script/server –debugger to do load it).
-
#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
Blocks and ignores any exception passed as argument if raised within the block.
Instance Method Details
#breakpoint ⇒ Object
11 12 13 14 15 |
# File 'lib/passive_support/core_ext/kernel/debugger.rb', line 11 def breakpoint = "\n***** The 'breakpoint' command has been renamed 'debugger' -- please change *****\n" defined?(Rails) ? Rails.logger.info() : $stderr.puts() debugger end |
#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 |
# File 'lib/passive_support/core_ext/kernel/daemonizing.rb', line 4 def daemonize Process.daemon end |
#debugger ⇒ Object
Starts a debugging session if ruby-debug has been loaded (call script/server –debugger to do load it).
4 5 6 7 |
# File 'lib/passive_support/core_ext/kernel/debugger.rb', line 4 def debugger = "\n***** Debugger requested, but was not available: Start server with --debugger to enable *****\n" defined?(Rails) ? Rails.logger.info() : $stderr.puts() 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/passive_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/passive_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/passive_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/passive_support/core_ext/kernel/reporting.rb', line 36 def silence_stream(stream) old_stream = stream.dup stream.reopen(RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? '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/passive_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) ⇒ Object
Blocks and ignores any exception passed as argument if raised within the block.
suppress(ZeroDivisionError) do
1/0
puts "This code is NOT reached"
end
puts "This code gets executed and nothing related to ZeroDivisionError was seen"
53 54 55 56 57 58 |
# File 'lib/passive_support/core_ext/kernel/reporting.rb', line 53 def suppress(*exception_classes) begin yield rescue Exception => e raise unless exception_classes.any? { |cls| e.kind_of?(cls) } end end |