1. Introducing the Rails Framework2. Getting Started3. Getting Something Running4. Introduction to the Ruby Language5. Working with a Database: Active Record6. Advanced Active Record: Enhancing Your Models7. Action Pack: Working with the View and the Controller8. Advanced Action Pack9. JavaScript and CSS10. Sending and Receiving Email11. Testing Your Application12. Internationalization13. Deploying Your Rails ApplicationsA. Databases 101B. The Rails CommunityC. Git
NOTES below: for Planned Revisions for Beginning Rails 6 Chapter 1: Introducing the Rails Framework The majority of chapter 1 is still relevant, needing only minor, superficial changes. This may also be a good place to address the is rails dead? question. In short, no -- Rails is not dead, it's mature. Chapter 2: Getting StartedThis chapter needs to be updated to include more recent installation instructions and screenshots for more recent versions of technologies involved. The general idea is the same, though.Chapter 3: Getting Something Running This chapter needs minor updates to:Reflect the new directory structure created by RailsReflect that Rails 6 now uses webpack instead of the asset pipelineChapter 4: Introduction to the Ruby LanguageThis chapter needs little, if any revision, as the basics of Ruby which it covers haven't changed much.Chapter 5: Working with a Database: Active RecordThis chapter needs little, if any revision.Chapter 6: Advanced Active Record: Enhancing Your ModelsThis chapter seems like it would need only minor revisions. It is a dense chapter, though, with lots of code samples that need to be verified.Chapter 6.5: ActiveModelWe could add this chapter, showing readers how they can create objects very similar to ActiveRecord models described in the previous chapter, but which aren't directly backed by the database. We would explain why this can be useful, and include an example of usage that fits in with the sample application being developed throughout the app.Chapter 7: Action Pack: Working with the View and the Controller Like the previous chapter, this chapter is still mostly relevant, but has a lot of code samples and screenshots which need verification and updating.Also, the following sections have some changes in Rails 6 that should be updated:Using Form Helpers (`form_with` was added, and is the preferred way going forward.)Rendering a Collection of Partials ( Rails 6 has a newer, more performant way of rendering a collection of partials which should be described)Also, a section on Caching could be added, though it's not new, and may not be appropriate for a Beginning book.Chapter 7.5: ActionTextIn this chapter, we would introduce ActionText, which gives the developer a simple path for adding a WYSIWYG editor to their application. This would be a short chapter, and we would show how to add a WYSIWYG editor to the sample application.Chapter 8: Advanced Action PackThis section only needs minor updates to verify code samples are still correct, and to update screenshots. Chapter 8.5: ActiveStorageActiveStorage facilitates the attaching of files to records. (e.g., product images, downloadable pdfs, etc.) We would explain why this is useful, how to configure it, and then provide code samples for how to enhance the sample application with images for each article, or something like that.)Chapter 9: JavaScript and CSSThis chapter needs significant revision. The structure of the chapter is good, but the underlying technologies have changed significantly, and all code samples need to be replaced. Thankfully this is a relatively short chapter.
Chapter 10: Sending and Receiving E-Mail The existing content is mostly still relevant. Hower, the following changes should be made:We could add a section on Previewing Emails (https://edgeguides.rubyonrails.org/action_mailer_basics.html#previewing-emails), a new feature which aids development of emails sent by a Rails app.We could add a small section on Action Mailer Callbacks The section on Receiving E-Mail should be updated to reflect the new ActionMailbox feature
Chapter 10.5: ActiveJobIn this chapter, we would explain the concept of background jobs, explain why they're useful, and then provide a working sample which ties into the sample application. (Namely, as a way of sending the email developed in the previous chapter.)Chapter 11: Testing Your ApplicationThis chapter will need some more significant updates, as Rails 6 has changed some concepts and introduced new ones:Parallel testing is new, and should be introduced -- it can dramatically increase the speed of running the test suiteFunctional Testing Your Controllers needs to be revised to reflect new technologySystem Testing could be added to introduce readers to the concept of browser-based testingSmall sections for testing ActiveJob and ActionMailer, and ActionCable could be addedChapter 12: InternationalizationThis chapter is still mostly relevant, and would only need small revisions. Additionally, we could introduce the concept of lazy lookup, allowing developers to rely on convention to make their usage of internationalization keys throughout their code more concise.
Chapter 12.5: ActionCableWe could add a chapter to introduce this concept to the reader, explaining how it could be used to add real-time functionality to their application. (The easiest to understand example is a chat system, where you want to see messages from another user as soon as they are submitted without having to refresh the page.)We could add sample code to add something like a chat system to the application, though it seems like a stretch. I may try to think of a more relevant feature to add to the sample application.Chapter 13: Deploying Your Rails Applications This short chapter is still mostly relevant, but needs minor revisions to reflect newer technologies and software versions.Appendix A: Databases This appendix needs little (or no) revision.Appendix B: The Rails CommunityThis appendix is mostly fine as-is; I would just want to make sure links are still valid, and that we're not overlooking any new sources.Appendix C: GitThis appendix is still mostly relevant. I would just want to update links and references to version numbers, and make sure that example output and function listings are up-to-date.