Books & Videos

Table of Contents

  1. Chapter 1 Strings

    1. Building a String from Parts

    2. Substituting Variables into Strings

    3. Substituting Variables into an Existing String

    4. Reversing a String by Words or Characters

    5. Representing Unprintable Characters

    6. Converting Between Characters and Values

    7. Converting Between Strings and Symbols

    8. Processing a String One Character at a Time

    9. Processing a String One Word at a Time

    10. Changing the Case of a String

    11. Managing Whitespace

    12. Testing Whether an Object Is String-Like

    13. Getting the Parts of a String You Want

    14. Handling International Encodings

    15. Word-Wrapping Lines of Text

    16. Generating a Succession of Strings

    17. Matching Strings with Regular Expressions

    18. Replacing Multiple Patterns in a Single Pass

    19. Validating an Email Address

    20. Classifying Text with a Bayesian Analyzer

  2. Chapter 2 Numbers

    1. Parsing a Number from a String

    2. Comparing Floating-Point Numbers

    3. Representing Numbers to Arbitrary Precision

    4. Representing Rational Numbers

    5. Generating Random Numbers

    6. Converting Between Numeric Bases

    7. Taking Logarithms

    8. Finding Mean, Median, and Mode

    9. Converting Between Degrees and Radians

    10. Multiplying Matrices

    11. Solving a System of Linear Equations

    12. Using Complex Numbers

    13. Simulating a Subclass of Fixnum

    14. Doing Math with Roman Numbers

    15. Generating a Sequence of Numbers

    16. Generating Prime Numbers

    17. Checking a Credit Card Checksum

  3. Chapter 3 Date and Time

    1. Finding Today's Date

    2. Parsing Dates, Precisely or Fuzzily

    3. Printing a Date

    4. Iterating Over Dates

    5. Doing Date Arithmetic

    6. Counting the Days Since an Arbitrary Date

    7. Converting Between Time Zones

    8. Checking Whether Daylight Saving Time Is in Effect

    9. Converting Between Time and DateTime Objects

    10. Finding the Day of the Week

    11. Handling Commercial Dates

    12. Running a Code Block Periodically

    13. Waiting a Certain Amount of Time

    14. Adding a Timeout to a Long-Running Operation

  4. Chapter 4 Arrays

    1. Iterating Over an Array

    2. Rearranging Values Without Using Temporary Variables

    3. Stripping Duplicate Elements from an Array

    4. Reversing an Array

    5. Sorting an Array

    6. Ignoring Case When Sorting Strings

    7. Making Sure a Sorted Array Stays Sorted

    8. Summing the Items of an Array

    9. Sorting an Array by Frequency of Appearance

    10. Shuffling an Array

    11. Getting the N Smallest Items of an Array

    12. Building Up a Hash Using Injection

    13. Extracting Portions of Arrays

    14. Computing Set Operations on Arrays

    15. Partitioning or Classifying a Set

  5. Chapter 5 Hashes

    1. Using Symbols as Hash Keys

    2. Creating a Hash with a Default Value

    3. Adding Elements to a Hash

    4. Removing Elements from a Hash

    5. Using an Array or Other Modifiable Object as a Hash Key

    6. Keeping Multiple Values for the Same Hash Key

    7. Iterating Over a Hash

    8. Iterating Over a Hash in Insertion Order

    9. Printing a Hash

    10. Inverting a Hash

    11. Choosing Randomly from a Weighted List

    12. Building a Histogram

    13. Remapping the Keys and Values of a Hash

    14. Extracting Portions of Hashes

    15. Searching a Hash with Regular Expressions

  6. Chapter 6 Files and Directories

    1. Checking to See If a File Exists

    2. Checking Your Access to a File

    3. Changing the Permissions on a File

    4. Seeing When a File Was Last Used Problem

    5. Listing a Directory

    6. Reading the Contents of a File

    7. Writing to a File

    8. Writing to a Temporary File

    9. Picking a Random Line from a File

    10. Comparing Two Files

    11. Performing Random Access on "Read-Once" Input Streams

    12. Walking a Directory Tree

    13. Locking a File

    14. Backing Up to Versioned Filenames

    15. Pretending a String Is a File

    16. Redirecting Standard Input or Output

    17. Processing a Binary File

    18. Deleting a File

    19. Truncating a File

    20. Finding the Files You Want

    21. Finding and Changing the Current Working Directory

  7. Chapter 7 Code Blocks and Iteration

    1. Creating and Invoking a Block

    2. Writing a Method That Accepts a Block

    3. Binding a Block Argument to a Variable

    4. Blocks as Closures: Using Outside Variables Within a Code Block

    5. Writing an Iterator Over a Data Structure

    6. Changing the Way an Object Iterates

    7. Writing Block Methods That Classify or Collect

    8. Stopping an Iteration

    9. Looping Through Multiple Iterables in Parallel

    10. Hiding Setup and Cleanup in a Block Method

    11. Coupling Systems Loosely with Callbacks

  8. Chapter 8 Objects and Classes

    1. Managing Instance Data

    2. Managing Class Data

    3. Checking Class or Module Membership

    4. Writing an Inherited Class

    5. Overloading Methods

    6. Validating and Modifying Attribute Values

    7. Defining a Virtual Attribute

    8. Delegating Method Calls to Another Object

    9. Converting and Coercing Objects to Different Types

    10. Getting a Human-Readable Printout of Any Object

    11. Accepting or Passing a Variable Number of Arguments

    12. Simulating Keyword Arguments

    13. Calling a Superclass's Method

    14. Creating an Abstract Method

    15. Freezing an Object to Prevent Changes

    16. Making a Copy of an Object

    17. Declaring Constants

    18. Implementing Class and Singleton Methods

    19. Controlling Access by Making Methods Private

  9. Chapter 9 Modules and Namespaces

    1. Simulating Multiple Inheritance with Mixins

    2. Extending Specific Objects with Modules

    3. Mixing in Class Methods

    4. Implementing Enumerable: Write One Method, Get 22 Free

    5. Avoiding Naming Collisions with Namespaces

    6. Automatically Loading Libraries as Needed

    7. Including Namespaces

    8. Initializing Instance Variables Defined by a Module

    9. Automatically Initializing Mixed-In Modules

  10. Chapter 10 Reflection and Metaprogramming

    1. Finding an Object's Class and Superclass

    2. Listing an Object's Methods

    3. Listing Methods Unique to an Object

    4. Getting a Reference to a Method

    5. Fixing Bugs in Someone Else's Class

    6. Listening for Changes to a Class

    7. Checking Whether an Object Has Necessary Attributes

    8. Responding to Calls to Undefined Methods

    9. Automatically Initializing Instance Variables

    10. Avoiding Boilerplate Code with Metaprogramming

    11. Metaprogramming with String Evaluations

    12. Evaluating Code in an Earlier Context

    13. Undefining a Method

    14. Aliasing Methods

    15. Doing Aspect-Oriented Programming

    16. Enforcing Software Contracts

  11. Chapter 11 XML and HTML

    1. Checking XML Well-Formedness

    2. Extracting Data from a Document's Tree Structure

    3. Extracting Data While Parsing a Document

    4. Navigating a Document with XPath

    5. Parsing Invalid Markup

    6. Converting an XML Document into a Hash

    7. Validating an XML Document

    8. Substituting XML Entities

    9. Creating and Modifying XML Documents

    10. Compressing Whitespace in an XML Document

    11. Guessing a Document's Encoding

    12. Converting from One Encoding to Another

    13. Extracting All the URLs from an HTML Document

    14. Transforming Plain Text to HTML

    15. Converting HTML Documents from the Web into Text

    16. A Simple Feed Aggregator

  12. Chapter 12 Graphics and Other File Formats

    1. Thumbnailing Images

    2. Adding Text to an Image

    3. Converting One Image Format to Another

    4. Graphing Data

    5. Adding Graphical Context with Sparklines

    6. Strongly Encrypting Data

    7. Parsing Comma-Separated Data

    8. Parsing Not-Quite-Comma-Separated Data

    9. Generating and Parsing Excel Spreadsheets

    10. Compressing and Archiving Files with Gzip and Tar

    11. Reading and Writing ZIP Files

    12. Reading and Writing Configuration Files

    13. Generating PDF Files

    14. Representing Data as MIDI Music

  13. Chapter 13 Databases and Persistence

    1. Serializing Data with YAML

    2. Serializing Data with Marshal

    3. Persisting Objects with Madeleine

    4. Indexing Unstructured Text with SimpleSearch

    5. Indexing Structured Text with Ferret

    6. Using Berkeley DB Databases

    7. Controlling MySQL on Unix

    8. Finding the Number of Rows Returned by a Query

    9. Talking Directly to a MySQL Database

    10. Talking Directly to a PostgreSQL Database

    11. Using Object Relational Mapping with ActiveRecord

    12. Using Object Relational Mapping with Og

    13. Building Queries Programmatically

    14. Validating Data with ActiveRecord

    15. Preventing SQL Injection Attacks

    16. Using Transactions in ActiveRecord

    17. Adding Hooks to Table Events

    18. Adding Taggability with a Database Mixin

  14. Chapter 14 Internet Services

    1. Grabbing the Contents of a Web Page

    2. Making an HTTPS Web Request

    3. Customizing HTTP Request Headers

    4. Performing DNS Queries

    5. Sending Mail

    6. Reading Mail with IMAP

    7. Reading Mail with POP3

    8. Being an FTP Client

    9. Being a Telnet Client

    10. Being an SSH Client

    11. Copying a File to Another Machine

    12. Being a BitTorrent Client

    13. Pinging a Machine

    14. Writing an Internet Server

    15. Parsing URLs

    16. Writing a CGI Script

    17. Setting Cookies and Other HTTP Response Headers

    18. Handling File Uploads via CGI

    19. Running Servlets with WEBrick

    20. A Real-World HTTP Client

  15. Chapter 15 Web Development: Ruby on Rails

    1. Writing a Simple Rails Application to Show System Status

    2. Passing Data from the Controller to the View

    3. Creating a Layout for Your Header and Footer

    4. Redirecting to a Different Location

    5. Displaying Templates with Render

    6. Integrating a Database with Your Rails Application

    7. Understanding Pluralization Rules

    8. Creating a Login System

    9. Storing Hashed User Passwords in the Database

    10. Escaping HTML and JavaScript for Display

    11. Setting and Retrieving Session Information

    12. Setting and Retrieving Cookies

    13. Extracting Code into Helper Functions

    14. Refactoring the View into Partial Snippets of Views

    15. Adding DHTML Effects with

    16. Generating Forms for Manipulating Model Objects

    17. Creating an Ajax Form

    18. Exposing Web Services on Your Web Site

    19. Sending Mail with Rails

    20. Automatically Sending Error Messages to Your Email

    21. Documenting Your Web Site

    22. Unit Testing Your Web Site

    23. Using breakpoint in Your Web Application

  16. Chapter 16 Web Services and Distributed Programming

    1. Searching for Books on Amazon

    2. Finding Photos on Flickr

    3. Writing an XML-RPC Client

    4. Writing a SOAP Client

    5. Writing a SOAP Server

    6. Searching the Web with Google's SOAP Service

    7. Using a WSDL File to Make SOAP Calls Easier

    8. Charging a Credit Card

    9. Finding the Cost to Ship Packages via UPS or FedEx

    10. Sharing a Hash Between Any Number of Computers

    11. Implementing a Distributed Queue

    12. Creating a Shared "Whiteboard"

    13. Securing DRb Services with Access Control Lists

    14. Automatically Discovering DRb Services with Rinda

    15. Proxying Objects That Can't Be Distributed

    16. Storing Data on Distributed RAM with MemCached

    17. Caching Expensive Results with MemCached

    18. A Remote-Controlled Jukebox

  17. Chapter 17 Testing, Debugging, Optimizing, and Documenting

    1. Running Code Only in Debug Mode

    2. Raising an Exception

    3. Handling an Exception

    4. Rerunning After an Exception

    5. Adding Logging to Your Application

    6. Creating and Understanding Tracebacks

    7. Writing Unit Tests

    8. Running Unit Tests

    9. Testing Code That Uses External Resources

    10. Using breakpoint to Inspect and Change the State of Your Application

    11. Documenting Your Application

    12. Profiling Your Application

    13. Benchmarking Competing Solutions

    14. Running Multiple Analysis Tools at Once

    15. Who's Calling That Method? A Call Graph Analyzer

  18. Chapter 18 Packaging and Distributing Software

    1. Finding Libraries by Querying Gem Respositories

    2. Installing and Using a Gem

    3. Requiring a Specific Version of a Gem

    4. Uninstalling a Gem

    5. Reading Documentation for Installed Gems

    6. Packaging Your Code as a Gem

    7. Distributing Your Gems

    8. Installing and Creating Standalone Packages with setup.rb

  19. Chapter 19 Automating Tasks with Rake

    1. Automatically Running Unit Tests

    2. Automatically Generating Documentation

    3. Cleaning Up Generated Files

    4. Automatically Building a Gem

    5. Gathering Statistics About Your Code

    6. Publishing Your Documentation

    7. Running Multiple Tasks in Parallel

    8. A Generic Project Rakefile

  20. Chapter 20 Multitasking and Multithreading

    1. Running a Daemon Process on Unix

    2. Creating a Windows Service

    3. Doing Two Things at Once with Threads

    4. Synchronizing Access to an Object

    5. Terminating a Thread

    6. Running a Code Block on Many Objects Simultaneously

    7. Limiting Multithreading with a Thread Pool

    8. Driving an External Process with popen

    9. Capturing the Output and Error Streams from a Unix Shell Command

    10. Controlling a Process on Another Machine

    11. Avoiding Deadlock

  21. Chapter 21 User Interface

    1. Getting Input One Line at a Time

    2. Getting Input One Character at a Time

    3. Parsing Command-Line Arguments

    4. Testing Whether a Program Is Running Interactively

    5. Setting Up and Tearing Down a Curses Program

    6. Clearing the Screen

    7. Determining Terminal Size

    8. Changing Text Color

    9. Reading a Password

    10. Allowing Input Editing with Readline

    11. Making Your Keyboard Lights Blink

    12. Creating a GUI Application with Tk

    13. Creating a GUI Application with wxRuby

    14. Creating a GUI Application with Ruby/GTK

    15. Creating a Mac OS X Application with RubyCocoa

    16. Using AppleScript to Get User Input

  22. Chapter 22 Extending Ruby with Other Languages

    1. Writing a C Extension for Ruby

    2. Using a C Library from Ruby

    3. Calling a C Library Through SWIG

    4. Writing Inline C in Your Ruby Code

    5. Using Java Libraries with JRuby

  23. Chapter 23 System Administration

    1. Scripting an External Program

    2. Managing Windows Services

    3. Running Code as Another User

    4. Running Periodic Tasks Without cron or at

    5. Deleting Files That Match a Regular Expression

    6. Renaming Files in Bulk

    7. Finding Duplicate Files

    8. Automating Backups

    9. Normalizing Ownership and Permissions in User Directories

    10. Killing All Processes for a Given User

  1. Colophon