RbRuby · Lesson 11 of 11
Ruby Cheatsheet
Syntax, blocks, collections, and classes on one page.
Ruby
# ── Basics ──────────────────────────────
x = 42
pi = 3.14
name = "Ada"
ok = true
nothing = nil
puts "#{name} is #{x}" # interpolation
:symbol # lightweight identifier
# ── Control flow ────────────────────────
if x > 10
"big"
elsif x > 5
"medium"
else
"small"
end
puts "yes" if ok # trailing modifier
puts "no" unless ok
label = x > 10 ? "big" : "small"
case x
when 1..5 then "low"
when Integer then "number"
else "other"
end
5.times { |i| puts i }
(1..5).each { |i| puts i }
while x > 0 do x -= 1 end
# ── Methods ─────────────────────────────
def greet(name, punct: "!") # keyword arg with default
"Hi #{name}#{punct}" # last expression returned
end
def total(*nums) = nums.sum # endless method (3.0+)Ruby
# ── Collections & blocks ────────────────
nums = [3, 1, 4]
nums << 1 # append
nums.first; nums.last; nums[1..2]; nums.length
nums.map { |n| n * 2 } # [6, 2, 8, 2]
nums.select { |n| n > 1 } # filter
nums.reject { |n| n > 1 }
nums.sum; nums.sort; nums.uniq; nums.include?(4)
nums.each_with_index { |n, i| }
nums.reduce(0) { |acc, n| acc + n }
%w[apple banana cherry] # word array
ages = { "Ada" => 17, bob: 15 } # hash (symbol keys common)
ages[:bob]; ages.fetch(:eve, 0)
ages.each { |k, v| puts "#{k}: #{v}" }
# ── Strings ─────────────────────────────
s.upcase.strip.split(",").join("-")
s.start_with?("ru"); s.include?("x"); s.gsub("a", "b")
# ── Classes ─────────────────────────────
class Dog
attr_reader :name # getter
attr_accessor :age # getter + setter
def initialize(name, age = 0)
@name = name # instance variable
@age = age
end
def bark = "#{@name} says woof"
def to_s = "Dog(#{@name})"
end
dog = Dog.new("Rex", 3)
dog.bark
# ── Errors & files ──────────────────────
begin
risky
rescue ArgumentError => e
handle(e)
ensure
cleanup
end
File.read("f.txt"); File.write("f.txt", data)
File.readlines("f.txt").each { |line| }
# gem install pry | bundle init | bundle add rails