| # All things in ruby are objects1.is_a? Object
 => true
 
 'this'.is_a? Object
 => true
 
 # Create new instance of Object
 Object.new
 => #<Object:0x007fe9ac8fa258>
 
 # Define a method
 def greet
 'hello'
 end
 
 # Call the method
 greet
 => "hello"
 
 # Define a method on all Objects
 class Object
 def greet
 'hello'
 end
 end
 
 Object.new.greet
 => "hello"
 
 Object.new.respond_to? :greet
 => true
 
 # Define method on an object
 cheatsheet = Object.new
 
 def cheatsheet.title
 'The Ruby Cheatsheet'
 end
 
 # Get methods accessible by object
 cheatsheet.methods
 => [:title, :instance_variable_defined?, ...
 
 # Get methods defined on object
 cheatsheet.methods(false)
 => [:title]
 
 # Get the method object
 title = cheatsheet.method(:title)
 => #<Method: #<Object:0x...>.title>
 
 # Call it
 title.call
 => "The Ruby Cheatsheet"
 
 | # Objects are instances of a classcheatsheet.class
 => Object
 
 # Show inheritance
 cheatsheet.class.ancestors
 => [Object, Kernel, BasicObject]
 
 # Show owner
 cheatsheet.method(:method).owner
 => Kernel
 
 cheatsheet.method(:==).owner
 => BasicObject
 
 # Define classes like this
 class Book
 end
 => Book
 
 # Assign class to a constant
 Book = Class.new
 => Book
 
 # You can also declare classes like this
 book = Class.new
 => #<Class:0x00007fd9e102d830>
 
 # Objects can have instance variables
 class Book
 def initialize(title)
 @title = title
 end
 end
 
 b = Book.new("The Ruby Cheatsheet")
 
 b.instance_variables
 #=> [:@title]
 b.instance_variable_set(
 :@title, "The Ruby Cheatsheet v2")
 
 b.instance_variable_get(:@title)
 #=> "The Ruby Cheatsheet v2"
 
 # Classes can have class variables
 class Book
 @@size = 12
 end
 
 b.class_variable_set(:@@size, 20)
 
 b.class_variable_get(:@@size)
 => 20
 
 |