Chapter outlines for three classic Ruby programming language books:
- Eloquent Ruby
- Programming Ruby
- Ruby under the Microscope

Also links to Ruby's core classes & standard library (v3.1.2).

Ruby book notes & library links

book notes
format
comments
camel case & snake case
parentheses
semicolons & line folds
avoiding trouble; wrapup
if, unless, while, until
modifiers
each, not for
case
avoiding trouble; in the wild; wrapup
book notes
- literal shortcuts
- arrays & hashes from method calls
- running through your collection
- beware the bang!
- hash ordering
- avoiding trouble; in the wild; wrapup
syntax
string methods
lines, characters & bytes
avoiding trouble; in the wild; wrapup
single-character matches
sets, ranges, alternatives
the asterik, aka star
Ruby regexes
beginnings & endings
avoiding trouble; in the wild; wrapup
two faces of strings
not quite a string
symbols "stand for something"
avoiding trouble; in the wild; wrapup
review - classes, instances, methods
objects all the way down
importance of being an object
public, private, protected objects
in the wild; wrapup
shorter programs - not the way you expect
decoupling
ceremony vs clarity
avoiding trouble; in the wild; wrapup
test::unit
assertions
don't test it - spec it
readability
stubs & mocks
avoiding trouble; in the wild; wrapup
compressing specs
methods for humans
ruby methods
one way out?
avoiding trouble; in the wild; wrapup
defining operators
examples
operating across classes
avoiding trouble; in the wild; wrapup
document identifiers
multiple equality methods
==
more == uses
well-behaved equality
=== for case statements
eql? and hashes
well-behaved hash keys
avoiding trouble; in the wild; wrapup
a puzzle
a hidden, but real, class
class methods
avoiding trouble; in the wild; wrapup
quick review
wandering variables
controlling data in your class
class instance variables & subclasses
convenience helpers
avoiding trouble; in the wild; wrapup
a place for your stuff
a home for utility methods
construction
modules are objects
avoiding trouble; in the wild; wrapup
better books with modules
mixin modules
module extensions
avoiding trouble; in the wild; wrapup
quick review
one word after another
as many iterators as you want
iterating over the ethereal
Enumerable - your iterator on steroids
avoiding trouble; in the wild; wrapup
logging
when something absolutely MUST happen
initialization blocks
dragging your scope along with the block
carrying the answers back
avoiding trouble; in the wild; wrapup
explicit blocks
callback problems
banking blocks
saving blocks for lazy initialization
instant block objects
avoiding trouble; in the wild; wrapup
waking up to a new subclass
modules want to be heard too
knowing when time is up
...and a cast of thousands
avoiding trouble; in the wild; wrapup
meeting those methods
handling document errors
coping with constants
in the wild; wrapup
intro
challenges
method_missing
more discriminating delegation
in the wild; wrapup
form letters - one word at a time
method_missingits the users that count
in the wild; wrapup
classes are wide-open
fixing a broken class
improving classes
alias_method
do anyting, anytime, to any class
avoiding trouble; in the wild; wrapup
open classes
logic in classes
class methods that change their class
avoiding trouble; in the wild; wrapup
a document of paragraphs
subclassing challenges
class methods that build instance methods
define_method
advanced modification ideas
avoiding trouble; in the wild; wrapup
little languages for big problems
dealing with XML
stepping over the line
pulling out the stops
in the wild - avoiding trouble - wrapup
the trouble with Ripper
internal is not the only DSL
regexes & parsing
treetop
avoiding trouble; in the wild; wrapup
using gems
gem versions
nuts & bolts
construction
uploading to a repository
automation
avoiding trouble; in the wild; wrapup
quick list of variants
MRI
YARV (next-gen MRI)
JRuby
Rubinius
avoiding trouble; in the wild; wrapup
basics
- Getting started
- Ruby.new
- classes, variables, objects
- containers, blocks, iterators
- datatypes
- methods
- expressions
- exceptions | catch | throw
- modules
- i/o
- threads & processes
- unit testing
- debugging
settings
- ruby and its world
- ruby shell (irb)
- documenting
- rubygems
- web operations
- tk
- ms windows
- extensions
part 3
- ruby the language
- predefined variables
- booleans
- if, unless
- case
- loops
- duck typing
- classes & objects
- security
- reflection, ObjectSpace, distributed Ruby
std library
- built-in classes & modules
- Array ... Zlib
appendices
- socket library ... mkmf
see lib/ in Ruby source code, or
lib/ruby/version/ of an installation.
the object model
open classes & monkeypatching
instance variables vs instance methods
classes are objects
method calls
kernel module
self keyword
dynamic definitions
dynamic method calls
method_missing
instance_eval
class_eval
singleton methods & classes
blocks = closure in ruby
which is faster? (while vs each)
lambdas and procs
local variables inside a lambda
alternative ways to define methods
self and scope
closures (eval, instance_eval, binding)define_method
installation
identifiers
methods, messages, objects
writing & saving programs
feeding a program to ruby
keyboard & file I/O
key directories
require, require_relative
tools (ruby, irb, rdoc, ri, rake, gem, erb)
talking to objects
construction
behaviors
arguments
local variables
classes & instances
instance variables & object state
setters
attributes
inheritance
classes as objects & message receivers
constants
basics (bundles of methods & constants)
method lookup
method_missing
naming conventions
introduction
scope | global variables
public | private | protected methods
top-level methods (definitions)
conditionals (if, not, unless)
case
loops, iterators, code blocks
errors & exceptions
built-in modules & classes
string|symbol|array|hash|range|regexp|proc syntax
syntactical sugar
bang methods
to_* methods
booleans
comparison ops
object methods (a long list)
arrays vs hashes
arrays & collection handling
hashes
ranges
sets
each
boolean queries
searches & indexes
element-wise ops
each_*
map aka collect
strings
sorting
enumerators
semantics & uses
writing them
building a pattern
matching, substrings & MatchData
quantifiers, anchors, modifiers
strings <-> regexes
common uses
UNFINISHED
- basics
- file ops
- queries
- directories
- file utils
singletons
modifying ruby core classes & modules
BasicObject
procs
lambda and "stabby lambda"
methods as objects
instance_eval, class_eval
threads
system commands, backticks, exec
intro
interpreting object capability queries
introspection
tracing execution
callbacks & method inspection
pure functions
immutability
higher-order functions
recursion (unfinished, btw.)

admin interfaces ... web sockets