Component-Based Rails Applications: Large Domains Under Control, 1st edition
Published by Addison-Wesley Professional (June 22, 2018) © 2018
- Stephan Hagemann
eTextbook
- Available for purchase from all major ebook resellers, including InformIT.com.
- To request a review copy, click on the "Request a Review Copy" button.
- A print text (hardcover or paperback)Â
- Free shipping
- Also available for purchase as an ebook from all major ebook resellers, including InformIT.com
As Rails applications grow, even experienced developers find it difficult to navigate code bases, implement new features, and keep tests fast. Components are the solution, and Component-Based Rails Applications shows how to make the most of them.
Writing for programmers and software team leads who are comfortable with Ruby and Rails, Stephan Hagemann introduces a practical, start-to-finish methodology for modernizing and restructuring existing Rails applications.
One step at a time, Hagemann demonstrates how to revamp Rails applications to exhibit visible, provably independent, and explicitly connected parts—thereby simplifying them and making them far easier for teams to manage, change, and test. Throughout, he introduces design concepts and techniques you can use to improve applications of many kinds, even if they weren’t built with Rails or Ruby.
- The first realistic guide to modernizing and improving the Rails applications your organization depends on
- A breakthrough resource for all developers who need to level up their skills for large-scale application environments -- in Rails, Ruby, and beyond
- Introduces new refactoring techniques for extracting components from existing applications
- Shows how to leverage powerful architectural patterns such as DCI and hexagonal architecture
- The newest title in the well-respected Addison-Wesley Professional Ruby Series
The full text downloaded to your computer
With eBooks you can:
- search for key concepts, words and phrases
- make highlights and notes as you study
- share your notes with friends
eBooks are downloaded to your computer and accessible either offline through the Bookshelf (available as a free download), available online and also via the iPad and Android apps.
Upon purchase, you'll gain instant access to this eBook.
Foreword xi
Preface xiii
Acknowledgments xxi
About the Author xxiii
Chapter 1: Introduction to Component-Based Rails Applications 1
1.1 Component-Based Rails 2
1.2 Benefits of Component-Based Applications 4
1.3 Component-Based Ruby 13
1.4 The Application Continuum 14
1.5 Related Works 15
Â
Chapter 2: Creating a Component-Based Application 17
2.1 The Entire App Inside a Component 18
2.2 ActiveRecord and Handling Migrations within Components 27
2.3 Handling Dependencies within Components 34
Â
Chapter 3: Tooling for Components 49
3.1 Testing a Component 50
3.2 Testing the Main Application 65
3.3 Asset Loading for Components 74
3.4 Switching Databases 82
3.5 Deploying to Platforms-as-a-Service 86
3.6 Updating Application Dependencies 90
3.7 Proposal for a Different Application Root—Showcasing the Difference of Components’ Structure 99
Â
Chapter 4: Component Refactorings: Extracting Components Out of Components 111
4.1 Determining What to Extract: Bottom-Up 112
4.2 Refactoring: Extract Domain Gem—Predictor 120
4.3 Determining What to Extract: Top-Down 139
4.4 Refactoring: Pulling Up a UI Component—TeamsAdmin, GamesAdmin, PredictionUI, WelcomeUI 150
4.5 Refactoring: Pushing Down a Model Component—Teams, Games 168
4.6 Refactoring: Improve Naming of Component—AppComponent to WebUI 183
4.7 More Component Refactoring Patterns 189
Â
Chapter 5: From Ball of Mud to First Components 195
5.1 Small Steps 196
5.2 One Big Step 196
Â
Chapter 6: Component-Based Rails in Relation to Other Patterns 211
6.1 Hexagonal Architecture 212
6.2 Data-Context-Integration (DCI) 227
Â
Chapter 7: Components in Other Languages 237
7.1 Kotlin, Java, and Gradle 238
7.2 .NET / C 241
7.3 Conclusion 243
Â
Appendix 245
A.1 Plain versus --full versus --mountable Engines 245
A.2 How Do Engine Routes and Engine Mounting Work? 254
A.3 Additional Testing with Older Versions of Rails 261
Â
Index 265
Stephan Hagemann most recently has been supporting clients of Pivotal Software in journeys of digital transformation. In these, organizational change is as much a topic as the implementation of Agile processes and software system architecture. This work grew out of Stephan’s previous management and engineering roles within Pivotal Labs, Pivotal’s software consulting group. Prior to joining Pivotal, Stephan moved to the United States from Germany where he worked as a software engineer for xing. He has a doctorate in information systems from the University of Münster in Germany.
Need help? Get in touch