Design patterns for ruby