The Ruby Course
Ruby is a scripting language designed to promote developer joy.

Ruby is a clean and tidy little scripting language with a sensible and elegant API that reads very like English. Complex programs become simple, legible little one liners.
Startups love Ruby because it allows them to construct minimum viable products in weeks rather than months. Enterprise consumers may prefer JRuby which compiles to Java Bytecode and runs on the JVM, allowing access to the full power of Java, plus the productivity and scripting joy of Ruby.
Course Notes
Course Content
-
Intro to Ruby
Welcome to Ruby. Learn the language fundamentals, and how it differs from your current language of choice.
-
Variables and Constants
Ruby takes a relaxed attitude to data storage. Variables and constants.
-
Integers and Floats
Numbers are objects in Ruby and can be treated as such.
-
Strings
Ruby has an unusually rich string manipulation API.
-
Functions
Creating functions
-
Flow Control
Ruby loves it when you tell it what to do.
-
Blocks
Blocks are inline functions. We use them everywhere in Ruby. Learn what they are and how they work.
-
RSpec
Testing is a big deal in Ruby. RSpec is your premier tool for the job.
-
Arrays
We can accomplish many tasks using Array manipulation
-
Hashes and Symbols
Symbols are lightweight placeholder strings. Learn what they are useful for.
-
Classes and Objects
Everything in Ruby is an object. Learn Object orientation.
-
Monkey Patching
All objects are open and can be modified and extended.
-
Operator Overloading
Most language constructs in Ruby are in fact functions and can be overridden.
-
Inheritance
Inheritance allows a class to inherit values from it's parent. Ruby of course has it.
-
Static Methods
Ruby's simple object model doesn't support Static methods directly, instead we get Eigenclasses, which are better.
-
Modules
Separate your code into sensible modules for code reuse and modularity.
-
Include vs Extend
When to extend modules, and when to include them
-
Exception Handling
When things go wrong.
-
Writing Methods which Receive Blocks
We can pass blocks to functions.
-
Writing a Gem
We can ball our code up into a gem to make it easy to share.
-
Send
Write code which writes code
-
Define Method
Define methods dynamically
-
Method Missing
Create adaptive objects by defining methods on the fly
-
Instance Eval
Create a Domain Specific Language using instance eval.