Tutorial by Examples

def hello puts "Hello readers" end hello # => "Hello readers" def hello puts "Hell riders" end hello # => "Hell riders"
puts "Hello readers".reverse # => "sredaer olleH" class String def reverse "Hell riders" end end puts "Hello readers".reverse # => "Hell riders"
You can access the exact same context as the method you override. class Boat def initialize(name) @name = name end def name @name end end puts Boat.new("Doat").name # => "Doat" class Boat def name "⛵ #{@name} ⛵" end end ...
class String def fancy "~~~{#{self}}~~~" end end puts "Dorian".fancy # => "~~~{Dorian}~~~"
Since Ruby 2.0, Ruby allows to have safer Monkey Patching with refinements. Basically it allows to limit the Monkey Patched code to only apply when it is requested. First we create a refinement in a module: module RefiningString refine String do def reverse "Hell riders" ...

Page 1 of 1