Module: Kernel

Defined in:
lib/cassandra_mapper/core_ext/kernel/reporting.rb,
lib/cassandra_mapper/core_ext/kernel/singleton_class.rb

Instance Method Summary collapse

Instance Method Details

#class_eval(*args, &block) ⇒ Object

class_eval on an object acts like singleton_class.class_eval.



10
11
12
# File 'lib/cassandra_mapper/core_ext/kernel/singleton_class.rb', line 10

def class_eval(*args, &block)
  singleton_class.class_eval(*args, &block)
end

#enable_warningsObject

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



15
16
17
# File 'lib/cassandra_mapper/core_ext/kernel/reporting.rb', line 15

def enable_warnings
  with_warnings(true) { yield }
end

#silence_stderrObject

For compatibility



28
29
30
# File 'lib/cassandra_mapper/core_ext/kernel/reporting.rb', line 28

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'


39
40
41
42
43
44
45
46
# File 'lib/cassandra_mapper/core_ext/kernel/reporting.rb', line 39

def silence_stream(stream)
  old_stream = stream.dup
  stream.reopen(Config::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
  stream.sync = true
  yield
ensure
  stream.reopen(old_stream)
end

#silence_warningsObject

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


10
11
12
# File 'lib/cassandra_mapper/core_ext/kernel/reporting.rb', line 10

def silence_warnings
  with_warnings(nil) { yield }
end

#singleton_classObject

Returns the object’s singleton class.



3
4
5
6
7
# File 'lib/cassandra_mapper/core_ext/kernel/singleton_class.rb', line 3

def singleton_class
  class << self
    self
  end
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"


56
57
58
59
60
61
# File 'lib/cassandra_mapper/core_ext/kernel/reporting.rb', line 56

def suppress(*exception_classes)
  begin yield
  rescue Exception => e
    raise unless exception_classes.any? { |cls| e.kind_of?(cls) }
  end
end

#with_warnings(flag) ⇒ Object

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



20
21
22
23
24
25
# File 'lib/cassandra_mapper/core_ext/kernel/reporting.rb', line 20

def with_warnings(flag)
  old_verbose, $VERBOSE = $VERBOSE, flag
  yield
ensure
  $VERBOSE = old_verbose
end