Skip to content

enogrob/ebook-eloquent-ruby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitPitch

Roberto Nogueira
BSd EE, MSd CE
Solution Integrator Experienced - Certified by Ericsson

eBook Eloquent Ruby

ebook image

About

Learn everything you need to about the subject of this eBook project.

Homepage

Topics

[x] Foreword xix
[x] Preface xxi
[x] Acknowledgments xxv
[x] About the Author xxvii

PART I: The Basics 1

Chapter 1: Write Code That Looks Like Ruby 3
[x] The Very Basic Basics 4
[x] Go Easy on the Comments 6
[x] Camels for Classes, Snakes Everywhere Else 8
[x] Parentheses Are Optional but Are Occasionally Forbidden 9
[x] Folding Up Those Lines 10
[x] Folding Up Those Code Blocks 11
[x] Staying Out of Trouble 12
[x] In the Wild 13
[x] Wrapping Up 15

Chapter 2: Choose the Right Control Structure 17
[x] If, Unless, While, and Until 17
[x] Use the Modifier Forms Where Appropriate 19
[x] Use each, Not for 20
[x] A Case of Programming Logic 21
[x] Staying Out of Trouble 23
[x] In the Wild 25
[x] Wrapping Up 27

Chapter 3: Take Advantage of Ruby’s Smart Collections 29
[x] Literal Shortcuts 29
[x] Instant Arrays and Hashes from Method Calls 30
[x] Running Through Your Collection 33
[x] Beware the Bang! 36
[x] Rely on the Order of Your Hashes 38
[x] In the Wild 38
[x] Staying Out of Trouble 40
[x] Wrapping Up 42

Chapter 4: Take Advantage of Ruby’s Smart Strings 43
[x] Coming Up with a String 44
[ ] Another API to Master 47
[ ] The String: A Place for Your Lines, Characters, and Bytes 49
[ ] In the Wild 50
[ ] Staying Out of Trouble 51
[ ] Wrapping Up 52

Chapter 5: Find the Right String with Regular Expressions 53
[ ] Matching One Character at a Time 54
[ ] Sets, Ranges, and Alternatives 55
[ ] The Regular Expression Star 57
[ ] Regular Expressions in Ruby 58
[ ] Beginnings and Endings 60
[ ] In the Wild 62
[ ] Staying Out of Trouble 63
[ ] Wrapping Up 64

Chapter 6: Use Symbols to Stand for Something 65
[ ] The Two Faces of Strings 65
[ ] Not Quite a String 66
[ ] Optimized to Stand for Something 67
[ ] In the Wild 69
[ ] Staying Out of Trouble 70
[ ] Wrapping Up 71

Chapter 7: Treat Everything Like an Object–Because Everything Is 73
[ ] A Quick Review of Classes, Instances, and Methods 74
[ ] Objects All the Way Down 76
[ ] The Importance of Being an Object 77
[ ] Public, Private, and Protected 79
[ ] In the Wild 81
[ ] Staying Out of Trouble 82
[ ] Wrapping Up 84

Chapter 8: Embrace Dynamic Typing 85
[ ] Shorter Programs, But Not the Way You Think 85
[ ] Extreme Decoupling 89
[ ] Required Ceremony Versus Programmer-Driven Clarity 92
[ ] Staying Out of Trouble 93
[ ] In the Wild 94
[ ] Wrapping Up 96

Chapter 9: Write Specs! 97
[ ] Test::Unit: When Your Documents Just Have to Work 98
[ ] A Plethora of Assertions 101
[ ] Don’t Test It, Spec It! 101
[ ] A Tidy Spec Is a Readable Spec 104
[ ] Easy Stubs 105
[ ] . . . And Easy Mocks 107
[ ] In the Wild 108
[ ] Staying Out of Trouble 110
[ ] Wrapping Up 113

PART II: Classes, Modules, and Blocks 115

Chapter 10: Construct Your Classes from Short, Focused Methods 117
[ ] Compressing Specifications 117
[ ] Composing Methods for Humans 121
[ ] Composing Ruby Methods 122
[ ] One Way Out? 123
[ ] Staying Out of Trouble 126
[ ] In the Wild 127
[ ] Wrapping Up 128

Chapter 11: Define Operators Respectfully 129
[ ] Defining Operators in Ruby 129
[ ] A Sampling of Operators 131
[ ] Operating Across Classes 134
[ ] Staying Out of Trouble 135
[ ] In the Wild 137
[ ] Wrapping Up 139

Chapter 12: Create Classes That Understand Equality 141
[ ] An Identifier for Your Documents 141
[ ] An Embarrassment of Equality 142
[ ] Double Equals for Everyday Use 143
[ ] Broadening the Appeal of the == Method 145
[ ] Well-Behaved Equality 146
[ ] Triple Equals for Case Statements 149
[ ] Hash Tables and the eql? Method 150
[ ] Building a Well-Behaved Hash Key 152
[ ] Staying Out of Trouble 153
[ ] In the Wild 154
[ ] Wrapping Up 156

Chapter 13: Get the Behavior You Need with Singleton and Class Methods 157
[ ] A Stubby Puzzle 158
[ ] A Hidden, but Real Class 160
[ ] Class Methods: Singletons in Plain Sight 162
[ ] In the Wild 164
[ ] Staying Out of Trouble 165
[ ] Wrapping Up 167

Chapter 14: Use Class Instance Variables 169
[ ] A Quick Review of Class Variables 169
[ ] Wandering Variables 171
[ ] Getting Control of the Data in Your Class 174
[ ] Class Instance Variables and Subclasses 175
[ ] Adding Some Convenience to Your Class Instance Variables 176
[ ] In the Wild 177
[ ] Staying Out of Trouble 179
[ ] Wrapping Up 179

Chapter 15: Use Modules as Name Spaces 181
[ ] A Place for Your Stuff, with a Name 181
[ ] A Home for Those Utility Methods 184
[ ] Building Modules a Little at a Time 185
[ ] Treat Modules Like the Objects That They Are 186
[ ] Staying Out of Trouble 189
[ ] In the Wild 190
[ ] Wrapping Up 191

Chapter 16: Use Modules as Mixins 193
[ ] Better Books with Modules 193
[ ] Mixin Modules to the Rescue 195
[ ] Extending a Module 197
[ ] Staying Out of Trouble 198
[ ] In the Wild 202
[ ] Wrapping Up 205

Chapter 17: Use Blocks to Iterate 207
[ ] A Quick Review of Code Blocks 207
[ ] One Word after Another 209
[ ] As Many Iterators as You Like 210
[ ] Iterating over the Ethereal 211
[ ] Enumerable: Your Iterator on Steroids 213
[ ] Staying Out of Trouble 215
[ ] In the Wild 217
[ ] Wrapping Up 218

Chapter 18: Execute Around with a Block 219
[ ] Add a Little Logging 219
[ ] When It Absolutely Must Happen 224
[ ] Setting Up Objects with an Initialization Block 225
[ ] Dragging Your Scope along with the Block 225
[ ] Carrying the Answers Back 227
[ ] Staying Out of Trouble 228
[ ] In the Wild 229
[ ] Wrapping Up 231

Chapter 19: Save Blocks to Execute Later 233
[ ] Explicit Blocks 233
[ ] The Call Back Problem 234
[ ] Banking Blocks 236
[ ] Saving Code Blocks for Lazy Initialization 237
[ ] Instant Block Objects 239
[ ] Staying Out of Trouble 240
[ ] In the Wild 243
[ ] Wrapping Up 244

PART III: Metaprogramming 247

Chapter 20: Use Hooks to Keep Your Program Informed 249
[ ] Waking Up to a New Subclass 250
[ ] Modules Want To Be Heard Too 253
[ ] Knowing When Your Time Is Up 255
[ ] . . . And a Cast of Thousands 256
[ ] Staying Out of Trouble 257
[ ] In the Wild 259
[ ] Wrapping Up 261

Chapter 21: Use method_missing for Flexible Error Handling 263
[ ] Meeting Those Missing Methods 264
[ ] Handling Document Errors 266
[ ] Coping with Constants 267
[ ] In the Wild 268
[ ] Staying Out of Trouble 270
[ ] Wrapping Up 271

Chapter 22: Use method_missing for Delegation 273
[ ] The Promise and Pain of Delegation 274
[ ] The Trouble with Old-Fashioned Delegation 275
[ ] The method_missing Method to the Rescue 277
[ ] More Discriminating Delegation 278
[ ] Staying Out of Trouble 279
[ ] In the Wild 281
[ ] Wrapping Up 283

Chapter 23: Use method_missing to Build Flexible APIs 285
[ ] Building Form Letters One Word at a Time 286
[ ] Magic Methods from method_missing 287
[ ] It’s the Users That Count–All of Them 289
[ ] Staying Out of Trouble 289
[ ] In the Wild 290
[ ] Wrapping Up 292

Chapter 24: Update Existing Classes with Monkey Patching 293
[ ] Wide-Open Classes 294
[ ] Fixing a Broken Class 295
[ ] Improving Existing Classes 296
[ ] Renaming Methods with alias_method 297
[ ] Do Anything to Any Class, Anytime 299
[ ] In the Wild 299
[ ] Staying Out of Trouble 303
[ ] Wrapping Up 303

Chapter 25: Create Self-Modifying Classes 305
[ ] Open Classes, Again 305
[ ] Put Programming Logic in Your Classes 308
[ ] Class Methods That Change Their Class 309
[ ] In the Wild 310
[ ] Staying Out of Trouble 314
[ ] Wrapping Up 315

Chapter 26: Create Classes That Modify Their Subclasses 317
[ ] A Document of Paragraphs 317
[ ] Subclassing Is (Sometimes) Hard to Do 319
[ ] Class Methods That Build Instance Methods 321
[ ] Better Method Creation with define_method 324
[ ] The Modification Sky Is the Limit 324
[ ] In the Wild 327
[ ] Staying Out of Trouble 330
[ ] Wrapping Up 332

PART IV: Pulling It All Together 333

Chapter 27: Invent Internal DSLs 335
[ ] Little Languages for Big Problems 335
[ ] Dealing with XML 336
[ ] Stepping Over the DSL Line 341
[ ] Pulling Out All the Stops 344
[ ] In the Wild 345
[ ] Staying Out of Trouble 347
[ ] Wrapping Up 349

Chapter 28: Build External DSLs for Flexible Syntax 351
[ ] The Trouble with the Ripper 352
[ ] Internal Is Not the Only DSL 353
[ ] Regular Expressions for Heavier Parsing 356
[ ] Treetop for Really Big Jobs 358
[ ] Staying Out of Trouble 360
[ ] In the Wild 362
[ ] Wrapping Up 364

Chapter 29: Package Your Programs as Gems 367
[ ] Consuming Gems 367
[ ] Gem Versions 368
[ ] The Nuts and Bolts of Gems 369
[ ] Building a Gem 370
[ ] Uploading Your Gem to a Repository 374
[ ] Automating Gem Creation 375
[ ] In the Wild 376
[ ] Staying Out of Trouble 377
[ ] Wrapping Up 380

Chapter 30: Know Your Ruby Implementation 381
[ ] A Fistful of Rubies 381
[ ] MRI: An Enlightening Experience for the C Programmer 382
[ ] YARV: MRI with a Byte Code Turbocharger 385
[ ] JRuby: Bending the “J” in the JVM 387
[ ] Rubinius 388
[ ] In the Wild 389
[ ] Staying Out of Trouble 389
[ ] Wrapping Up 390

Chapter 31: Keep an Open Mind to Go with Those Open Classes 391
[ ] Appendix: Going Further 393
[ ] Index 397

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published