Advanced Ruby and Rails Training
with Gautam Rege and Satish Talim
Master the Ruby programming language—to write more powerful
libraries or improve your Rails applications—by learning
advanced techniques from two experienced Ruby developers and authors in
this 3-day, hands-on training course.
- Write Ruby programs and Rails applications with the confidence
and efficiency that comes from deep knowledge of how things really work
- Learn what's new in Ruby 1.9, and how to make the most of it
- Use your new-found skills to contribute to open source and commercial
projects in an impactful way
- Take your Ruby skills to the next level by focusing exclusively on
advanced Ruby techniques for three days with Dave Thomas and Chad
Fowler
You'll come away from this Studio feeling like a Ruby Master. You'll not
just know Ruby in depth, you'll also understand why things are the way they are. You'll have moved beyond the basic toolbox
of the average Ruby developer—you'll be able to exploit the
libraries and constructs the true pros use to make their code powerful,
compact, and fun to work with.
What Will I Learn?
Basic Ruby, Advanced Ruby Techniques, Tips, and Tricks. Through a series of
lecture, hands-on exercises, and discussion, you'll learn how and when to
use advanced Ruby features. Topics include:
Thinking in Ruby: Ruby is different than the languages
you're used to. If you're still using the techniques that work with those
languages, you're not exploiting the power of Ruby, and you're writing more
code than you need.
- Object Oriented design in a dynamic language: Reuse mechanisms unique to
Ruby and
dynamic languages, mixins, composition and delegation, runtime
class extension
- How to organize your code: libraries and APIs, require and load tricks,
supporting multiple Ruby versions, static builds of Ruby, using and
creating Gems, best practices for file and directory organization
Ruby 1.9 Features: Ruby is a-changin'. As a Ruby programmer, you'll want to stay on top of all
the new syntax and language features.
- A look at the new classes and libraries
- Major changes to String
- New hash goodness
- Enumerators
- More powerful regular expressions
- Multi-nationalization of code and data
- Fibers and threads
- Changes to the Ruby parser and execution engine
Spreading The Code: It's a networked world. Let's move beyond HTTP and find ways of
getting programs to talk to programs.
- Different methods of networking: DRb, custom network
protocol implementation

- Threading, managing processes, creating server daemons
Advanced Programming Techniques
- Blocks, Procs, and closures in depth
- Meta-classes and the meta-object protocol
- Taking advantage of interpreter and system hooks
- Duck-typing protocols and coercions
- Using reflection to discover and inspect classes, inheritance
hierarchies, defined methods, and instantiated objects at runtime
Advanced Meta-programming: Everyone talks about Ruby, meta-programming, and Domain Specific
Languages. But let's see how to do it for real.
- Techniques for runtime class and object extension
- The many faces of eval
- Internal Domain Specific Languages
Real-World Ruby: We may know all the secrets of coding Ruby, but we still need to make
it work in the real world.
- Performance: taking out the garbage, C extensions, integrating
with shared libraries using DL
- How (and why) to read Ruby source code
- Understanding the Ruby compile process
- irb tricks
- RDoc/Ri
- ERb
- Debugging and Profiling
In addition to the prepared topics, you'll have time to ask questions
and spark discussions with other experienced Ruby programmers.
Who’s It For?
It is for beginners in Ruby or in RoR who has basic programming knowledge and if...
- You have a good working knowledge of the Ruby language, but
you want to take it to the next level.
- You've tried what you consider to be advanced features in Ruby,
but you want to understand when and how experts use those features.
Who Teaches the Course?
Gautam Rege
Satish Talim
What Do I Need?
This course is taught on site at your location. As such, you'll need
the following:
- a room to comfortably accommodate your team
- a laptop projector and screen
- a whiteboard or flipchart with markers
- laptops (or desktops) on which each attendee can complete the
hands-on exercises, and access rights on those machines
to install the required software