The Druby Book: Distributed and Parallel Computing With Ruby

  • ISBN13:


  • ISBN10:


  • Format: Paperback
  • Copyright: 2012-05-07
  • Publisher: Oreilly & Associates Inc

Note: Supplemental materials are not guaranteed with Rental or Used book purchases.

Purchase Benefits

  • Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $35.00 Save up to $3.50
  • Rent Book $31.50
    Add to Cart Free Shipping


Supplemental Materials

What is included with this book?

  • The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
  • The Rental copy of this book is not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.


dRuby has been part of the Ruby standard library for more than a decade, yet few know the true power of the gem. Completely written in Ruby, dRuby enables you to communicate between distributed Ruby processes as if there were no boundaries between processes. This is one of the few books that covers distributed and parallel programming for Ruby developers. The dRuby Book has been completely updated and expanded from its Japanese version, with three new chapters written by Masatoshi. You'll find out about the design concepts of the dRuby library, and walk through step-by-step tutorial examples. By building various distributed applications, you'll master distributed programming as well as advanced Ruby techniques such as multithreading, object references, garbage collection, and security. Then you'll graduate to advanced techniques for using dRuby with Masatoshi's other libraries, such as eRuby and Rinda---the Ruby version of the Linda distributed tuplespace system. In the three new chapters, you'll see how to integrate dRuby and eRuby, get a thorough grounding in parallel programming concepts with Rinda, and create a full text search system using Drip. Step by step, you'll gain mastery of dRuby and distributed computing. What You Need:Ruby 1.9.2 or above. All exercises were run on OS X, though it should work on any operating system. You are expected to be comfortable reading Ruby code, as we do not explain basic syntax.

Author Biography

Masatoshi Seki is a Ruby committer and an author of several Ruby standard libraries including dRuby, eRuby, and Rinda. He's the author of Distributed Object Programming with dRuby and Distributed Web Programming with dRuby (in Japanese). Translator Makoto Inoue is a database administrator turned Ruby developer living in London. He speaks about mobile development, NoSQL, and Real Time Web at conferences and meetups.

Table of Contents

Forewordp. ix
Acknowledgmentsp. xi
Prefacep. xiii
Introducing dRuby
Hello, dRubyp. 3
Hello, Worldp. 3
Building the Reminder Applicationp. 7
Moving Aheadp. 14
Architectures of Distributed Systemsp. 15
Understanding Distributed Object Systemsp. 15
Design Principles of dRubyp. 20
dRuby in the Real Worldp. 24
Moving Aheadp. 26
Understanding dRuby
Integrating dRuby with eRubyp. 31
Generating Templates with ERBp. 31
Integrating WEBrick::CGI and ERB with dRubyp. 40
Putting Them Togetherp. 48
Adding an Error Pagep. 53
Changing Process Allocationp. 54
Moving Aheadp. 56
Pass by Reference, Pass by Valuep. 57
Passing Objects Among Processesp. 57
Passing by Reference Automaticallyp. 67
Handling Unknown Objects with DRbUnknownp. 72
Moving Aheadp. 75
Multithreadingp. 77
dRuby and Multithreadingp. 77
Understanding the Thread Classp. 79
Thread-Safe Communication Using Locking, Mutex, and MonitorMixinp. 86
Passing Objects via Queuep. 104
Moving Aheadp. 108
Process Coordination
Coordinating Processes Using Rindap. 111
Introducing Linda and Rindap. 111
How Rinda Worksp. 113
Basic Distributed Data Structuresp. 124
Toward Applicationsp. 134
Moving Aheadp. 136
Extending Rindap. 137
Adding a Timeout in a Tuplep. 137
Adding Notifications for New Eventsp. 141
Expressing a Tuple with Hashp. 144
Removing Tuples Safely with TupleSpaceProxyp. 146
Finding a Service with Ringp. 148
Examples of Ring Applicationsp. 155
Moving Aheadp. 163
Parallel Computing and Persistence with Rindap. 165
Computing in Parallel with rinda_evalp. 165
Concurrency in rinda_evalp. 167
Persisting a Tuple with PTupleSpacep. 174
Moving Aheadp. 179
Drip: A Stream-Based Storage Systemp. 181
Introducing Dripp. 181
Drip Compared to Queuep. 182
Drip Compared to Hashp. 187
Browsing Data with Keyp. 190
Design Goals of the APIp. 194
Moving Aheadp. 195
Building a Simple Search System with Dripp. 197
Running the Appp. 197
Examining Each Componentp. 199
Crawling Interval and Synchronization with Indexerp. 205
Resetting Datap. 206
Using RBTree for Range Searchp. 207
Adding a Web UIp. 213
Moving Aheadp. 217
Running dRuby and Rinda in a Production Environment
Handling Garbage Collectionp. 221
Dealing with GCp. 221
Using DRbIdConv to Prevent GCp. 225
Moving Aheadp. 227
Security in dRubyp. 229
dRuby's Attitude Toward Securityp. 229
Accessing Remote Services via SSH Port Forwardingp. 234
Summaryp. 241
Bibliographyp. 243
Indexp. 245
Table of Contents provided by Ingram. All Rights Reserved.

Rewards Program

Write a Review