Refinements class Analyzer def short_summary { m: @array.mean } end end a1 = [1, 2, 3, 4] analyzer = Analyzer.new(a1) analyzer.summary # => {:mean=>2} analyzer.short_summary rescue "no mean method" # => "no mean method" 17
Module#include+/+prepend class Analyzer include Stats def mean puts "Analyzer#mean" super end end Analyzer.ancestors # => [Analyzer, Stats, Object, Kernel, BasicObject] Analyzer.new.mean # => nil # >> Analyzer#mean # >> Stats#mean # >> Stats#mean no superclass mean method 29
Module#include+/+prepend class Analyzer2 prepend Stats def mean puts "Analyzer2#mean" super rescue puts "Analyzer2#mean no superclass mean method" end end Analyzer2.ancestors # => [Stats, Analyzer2, Object, Kernel, BasicObject] Analyzer2.new.mean # => nil # >> Stats#mean # >> Analyzer2#mean # >> Analyzer2#mean no superclass mean method 30
Excep&on#cause-(2.1) class Downloader class DownloadException < StandardError; end def download! begin raise "boom!" rescue RuntimeError raise DownloadException end end end 40