1. Introducing the Rails Framework
2. Getting Started
3. Getting Something Running
4. Introduction to the Ruby Language
5. Working with a Database: Active Record
6. Advanced Active Record: Enhancing Your Models
7. Action Pack: Working with the View and the Controller
8. Advanced Action Pack
9. JavaScript and CSS
10. Sending and Receiving Email
11. Testing Your Application
12. Internationalization
13. Deploying Your Rails Applications
A. Databases 101
B. The Rails Community
C. 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 Started
This 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 Rails
Reflect that Rails 6 now uses webpack instead of the asset pipeline
Chapter 4: Introduction to the Ruby Language
This 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 Record
This chapter needs little, if any revision.
Chapter 6: Advanced Active Record: Enhancing Your Models
This 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: ActiveModel
We 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: ActionText
In 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 Pack
This section only needs minor updates to verify code samples are still correct, and to update screenshots.
Chapter 8.5: ActiveStorage
ActiveStorage 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 CSS
This 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: ActiveJob
In 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 Application
This 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 suite
“Functional Testing Your Controllers” needs to be revised to reflect new technology
“System Testing” could be added to introduce readers to the concept of browser-based testing
Small sections for testing ActiveJob and ActionMailer, and ActionCable could be added
Chapter 12: Internationalization
This 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: ActionCable
We 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.
This short chapter is still mostly relevant, but needs minor revisions to reflect newer technologies and software versions.
This appendix needs little (or no) revision.
This 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.
This 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.