Studio Game is a Ruby program developed based on Pragmatic Studio’ Ruby Programming hands-on video course, and distributed as a Ruby gem.

This program has been developed using all the strengths of Ruby including the following.

Ruby Programming Environment

  • Installing Ruby on your favorite operating system (free exercise)

  • Running Ruby using the interactive Ruby shell (irb) and writing Ruby program files

  • Using Ruby’s documentation system to get help

  • Installing external Ruby libraries using RubyGems

  • Troubleshooting common problems

Ruby Language Constructs

  • Expressions and variables

  • Numbers, string, and symbols (free video & exercise)

  • Loops and conditional expressions

  • Arrays and hashes (free video & exercise on hashes)

  • Classes, modules, and structs

Object-Oriented Programming

  • Using built-in Ruby classes

  • Defining your own classes with state and behavior (free video & exercise)

  • Creating unique objects

  • Telling objects what to do by calling methods

  • Modeling class-level inheritance relationships

  • Sharing code with mixins

Object-Oriented Design Principles

  • Encapsulation

  • Separation of concerns

  • Polymorphism

  • Don’t Repeat Yourself

  • Tell, Don’t Ask

Blocks and Iterators

  • Calling built-in methods that take blocks

  • Writing your own methods that yield to blocks

  • Implementing custom iterators

  • Effectively using blocks in your programs

Organizing Ruby Code

  • Creating a Ruby project structure

  • Separating source files for easier reuse and testing

  • Namespacing to avoid naming clashes

  • Input/Output

  • Reading data from files

  • Writing data to files

  • Creating an interactive console prompt

  • Handling command-line input

Unit Testing

  • Writing and running unit tests with RSpec

  • Test-driven development and the red-green-refactor cycle

  • Stubbing methods to control tests

  • Refactoring code, safely!

Distribution

  • Conforming to RubyGems conventions

  • Writing a GemSpec

  • Building a RubyGem

  • Publishing a RubyGem to a public server

Ruby Programming Idioms