My Account Log in

1 option

Polished Ruby programming : build better software with more intuitive, maintainable, scalable, and high-performance Ruby code / Jeremy Evans.

Ebook Central College Complete Available online

View online
Format:
Book
Author/Creator:
Evans, Jeremy, author.
Language:
English
Subjects (All):
Ruby (Computer program language).
Physical Description:
1 online resource (434 pages)
Place of Publication:
Birmingham, England ; Mumbai : Packt, [2021]
Biography/History:
Evans Jeremy: Jeremy Evans is a Ruby committer who focuses on fixing bugs in Ruby, as well as improving the implementation of Ruby. He is the maintainer of many popular Ruby libraries, including the fastest web framework (Roda) and fastest database library (Sequel). His libraries are known not just for their performance, but also for their code quality, understandability, documentation, and how quickly any bugs found are fixed. For his contributions to Ruby and the Ruby community, he has received multiple awards, such as receiving the prestigious RubyPrize in 2020 and being chosen as a Ruby Hero in 2015. He has given presentations at over 20 Ruby conferences. In addition to working on Ruby, he is also a committer for the OpenBSD operating system.
Summary:
Elevate your Ruby skills to an advanced level by deepening your understanding of the design principles, best practices, and trade-offs involved in implementation approaches to future-proof your Ruby applications Key FeaturesLearn Ruby web application design principles and strategies for databases, security, and testing from a Ruby committerUnderstand the design principles behind polished Ruby code and trade-offs between implementation approachesUse metaprogramming and DSLs to reduce the amount of code needed without decreasing maintainabilityBook DescriptionAnyone striving to become an expert Ruby programmer needs to be able to write maintainable applications. Polished Ruby Programming will help you get better at designing scalable and robust Ruby programs, so that no matter how big the codebase grows, maintaining it will be a breeze. This book takes you on a journey through implementation approaches for many common programming situations, the trade-offs inherent in each approach, and why you may choose to use different approaches in different situations. You'll start by refreshing Ruby fundamentals, such as correctly using core classes, class and method design, variable usage, error handling, and code formatting. Then you'll move on to higher-level programming principles, such as library design, use of metaprogramming and domain-specific languages, and refactoring. Finally, you'll learn principles specific to web application development, such as how to choose a database and web framework, and how to use advanced security features. By the end of this Ruby programming book, you’ll be a well rounded web developer with a deep understanding of Ruby. While most code examples and principles discussed in the book apply to all Ruby versions, some examples and principles are specific to Ruby 3.0, the latest release at the time of publication.What you will learnUse Ruby s core classes and design custom classes effectivelyExplore the principles behind variable usage and method argument choiceImplement advanced error handling approaches such as exponential backoffDesign extensible libraries and plugin systems in RubyUse metaprogramming and DSLs to avoid code redundancyImplement different approaches to testing and understand their trade-offsDiscover design patterns, refactoring, and optimization with RubyExplore database design principles and advanced web app securityWho this book is forThis book is for Ruby programmers who are comfortable in coding with Ruby but want to advance their skills by mastering the deeper principles and best practices behind writing maintainable, scalable, optimized, and well-structured Ruby code. This book won’t teach you the basics of Ruby – you’ll need intermediate knowledge and practical experience before you can dive in.
Contents:
Cover
Title Page
Copyright and Credits
Dedicated
Contributors
Table of Contents
Preface
Section 1: Fundamental Ruby Programming Principles
Chapter 1: Getting the Most out of Core Classes
Technical requirements
Learning when to use core classes
Best uses for true, false, and nil objects
Different numeric types for different needs
Understanding how symbols differ from strings
Learning how best to use arrays, hashes, and sets
Implementing an in-memory database
Working with Struct - one of the underappreciated core classes
Summary
Questions
Further reading
Chapter 2: Designing Useful Custom Classes
Learning when to create a custom class
Handling trade-offs in SOLID design
The single-responsibility principle
The open-closed principle
The Liskov substitution principle
The interface segregation principle
The dependency inversion principle
Deciding on larger classes or more classes
Learning when to use custom data structures
Chapter 3: Proper Variable Usage
Using Ruby's favorite variable type - the local variable
Increasing performance by adding local variables
Avoiding unsafe optimizations
Handling scope gate issues
Naming considerations with local variables
Learning how best to use instance variables
Increasing performance with instance variables
Handling scope issues with instance variables
Naming considerations for instance variables
Understanding how constants are just a type of variable
Handling scope issues with constants
Visibility differences between constants and class instance variables
Naming considerations with constants
Replacing class variables
Replacing class variables with constants.
Replacing class variables with class instance variables using the superclass lookup approach
Replacing class variables with class instance variables using the copy to subclass approach
Avoiding global variables, most of the time
Chapter 4: Methods and Their Arguments
Understanding that there are no class methods, only instance methods
Naming methods
Special method names
Using the many types of method arguments
Positional arguments
Optional positional arguments
Rest arguments
Keyword arguments
Block arguments
Learning about the importance of method visibility
Fixing visibility mistakes
Handling delegation
Delegating to other objects
Chapter 5: Handling Errors
Handling errors with return values
Handling errors with exceptions
Considering performance when using exceptions
Retrying transient errors
Understanding more advanced retrying
Breaking circuits
Designing exception class hierarchies
Using core exception classes
Chapter 6: Formatting Code for Easy Reading
Recognizing different perspectives of code formatting
Learning how syntactic consistency affects maintainability
Enforcing consistency with RuboCop
Understanding the consequences of using arbitrary limits
Checking basic code formatting with Ruby
Realizing the actual importance of code formatting
Section 2: Ruby Library Programming Principles
Chapter 7: Designing Your Library
Focusing on the user experience
Library naming
Library first impressions
The simplest possible interface
Determining the appropriate size for your library.
Handling complexity trade-offs during method design
Fewer but more complex methods
Chapter 8: Designing for Extensibility
Using Ruby's extensibility features
Designing plugin systems
Designing a basic plugin system
Handling changes to classes
Plugin modifications to classes
Supporting plugin dependencies
Making plugin loading easier
Handling subclasses in plugin systems
Configuring plugins
Understanding globally frozen, locally mutable design
Chapter 9: Metaprogramming and When to Use It
Learning the pros and cons of abstraction
Eliminating redundancy
Understanding different ways of metaprogramming methods
Using method_missing judiciously
Chapter 10: Designing Useful Domain-Specific Languages
Designing your DSL
Configuration DSLs
DSLs for making specific changes
DSLs for reducing the verbosity of code
Libraries implemented as DSLs
Implementing your DSL
Learning when to use a DSL
Chapter 11: Testing to Ensure Your Code Works
Understanding why testing is so critical in Ruby
Learning different approaches to testing
Considering test complexity
Understanding the many levels of testing
Realizing that 100% coverage means nothing
Chapter 12: Handling Change
Considering reasons to refactor
Learning about the refactoring process
Implementing the most common Ruby refactoring techniques
Extracting a method
Extracting a class
Refactoring to add features
Removing features properly
Removing methods
Removing constants
Chapter 13: Using Common Design Patterns.
Technical requirements
Learning about the many design patterns that are built into Ruby
The object pool design pattern
The prototype design pattern
The private class data design pattern
The proxy design pattern
Handling cases where there can be only one
Dealing with nothing
Visiting objects
Adapting and strategizing
Chapter 14: Optimizing Your Library
Understanding that you probably don't need to optimize code
Profiling first, optimizing second
Understanding that no code is faster than no code
Handling code where everything is slow
Section 3: Ruby Web Programming Principles
Chapter 15: The Database Is Key
Learning why database design is so important
Deciding on a database to use
Understanding the most important database design principles
Considerations when denormalizing your database design
Other database design principles
Treating the database as not just dumb storage
Choosing the model layer
Handling database and model errors
Chapter 16: Web Application Design Principles
Choosing between client-side and server-side design
Deciding on a web framework
Ruby on Rails
Sinatra
Grape
Roda
Designing URL paths
Structuring with monoliths, microservices, and island chains
Chapter 17: Robust Web Application Security
Understanding that most security issues in Ruby web applications are high level
Trusting input never
Performing access control at the highest level possible
Avoiding injection
Script injection
SQL injection
Code injection
Approaching high-security environments
Limiting database access.
Internal firewalling
Randomizing memory layouts
Limiting filesystem access
Limiting system call access
Assessments
About Packt
Other Books You May Enjoy
Index.
Notes:
Includes index.
Description based on print version record.
ISBN:
1-80107-791-6
OCLC:
1263776368

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account