Foreword
About the Authors
Acknowledgments
Introduction
- About This Book
- Voices from other experts
- Goals
- Prerequisites
- Book Structure
- Licenses, Attributions and Trademark Notice
Rails Configuration and Environments
- Generating a new Rails Application
- Bundler
- RSpec and Haml
- Running a Rails application
- Default Initializers
- Other Common Settings
- Zeitwerk
- Development Mode
- Test Mode
- Production Mode
- Configuring Application Secrets
- Configuring a Database
- Logging
- Default Gems
- Rack
- Conclusion
Routing
- The Two Purposes of Routing
- The
routes.rbFile - Named Routes
- Scoping Routing Rules
- Listing Routes
- Conclusion
REST, Resources, and Rails
- REST in a Rather Small Nutshell
- Resources and Representations
- REST in Rails
- Routing and CRUD
- The Standard RESTful Controller Actions
- Singular Resource Routes
- Nested Resources
- Routing Concerns
- RESTful Route Customizations
- Controller-Only Resources
- Different Representations of Resources
- The RESTful Rails Action Set
- Conclusion
Working with Controllers
- Action Dispatch: Where It All Begins
- Parameters
- Render onto View…
- Additional Layout Options
- Redirecting
- Controller/View Communication
- Action Callbacks
- Streaming
- The
respond_toMethod - Conclusion
Cookies, Session Management and the Flash
- Cookies
- Session
- The Flash
- What to Store in a Cookie
- What to Store in the Session
- Conclusion
Action View & Haml
- Haml
- Layouts and Templates
- Partials
- Conclusion
Active Record Migrations
- Creating Migrations
- Defining Columns
- Data Migration
- Database Schema and Sequencing
- Database Seeding
- Database-Related Tasks
- Conclusion
Working with Active Record
- The Basics
- Macro-Style Methods
- Defining Attributes
- CRUD: Creating, Reading, Updating, Deleting
- Database Locking
- Ignoring Columns
- Connections to Multiple Databases
- Using the Database Connection Directly
- Convention over Configuration
- Conclusion
Active Record Associations
- The Association Hierarchy
- One-to-Many Relationships
- Belongs to Associations
- Has Many Associations
- Many-to-Many Relationships
- One-to-One Relationships
- Working with Unsaved Objects and Associations
- Association Extensions
- The
CollectionProxyClass - Conclusion
Working with Queries
- Query Methods
- Custom SQL Queries
- Scopes
- Query Log Tags
- Conclusion
Validations
- Finding Errors
- Included Validations
- Common Validation Options
- Conditional Validation
- Short-form Validation
- Custom Validation Techniques
- Skipping Validations
- Working with the Errors object
- Conclusion
Advanced Active Record
- Polymorphic
has_manyRelationships - Modules for Reusing Common Behavior
- Delegated Types
- Non-Persisted Models
- Callbacks
- Attributes API
- Serialized Attributes
- Enums
- Generating Secure Tokens
- Calculation Methods
- Batch Operations
- Single-Table Inheritance (STI)
- Abstract Base Model Classes
- Foreign-key Constraints
- Value Objects
- Modifying Active Record Classes at Runtime
- PostgreSQL
- Other Connection Methods
- Conclusion
Forms
- The basics of
form_with FormOptionsHelper- The Date and Time Selection Helpers
- Conclusion
Internationalization
- Localized Views
- I18n Setup
- Setting and Passing the Locale
- Setting Locale from Client Supplied Information
- Internationalizing Your Application
- Organization of Locale Files
- Looking Up Translations
- How to Store Your Custom Translations
- Exception Handling
- Conclusion
All About Helpers
AssetTagHelperAssetUrlHelperAtomFeedHelperCacheHelperCaptureHelperControllerHelperCspHelperCsrfHelperDateHelperDebugHelperFormHelper,FormOptionsHelperandFormTagHelperJavaScriptHelperNumberHelperOutputSafetyHelperRenderingHelperSanitizeHelperTagHelperTextHelperTranslationHelperUrlHelper- Writing Your Own View Helpers
- Wrapping and Generalizing Partials
- Conclusion
Authentication and Authorization
- Warden
- Devise
has_secure_password- Pundit
- Conclusion
Security
- Password Management
- Log Masking
- TLS (Transport Layer Security)
- Model Mass-assignment Attributes Protection
- SQL Injection
- Cross-Site Scripting (XSS)
- CSRF (Cross-Site Request Forgery)
- Content Security Policy
- Permissions Policy
- Session Fixation Attacks
- Conclusion
Caching and Performance
- View Caching
- Data Caching
- Control of Web Caching
- ETags
- Conclusion
RSpec
- Introduction
- Behavior-Driven Development
- Basic Syntax and API
- Custom Expectation Matchers
- Helper Methods
- Shared Behaviors
- Shared Context
- Test Doubles
- Running Specs
- factory_bot
- Testing Tool Belt
- Writing Specs for your Rails App
- Conclusion
Background Processing
- Active Job
- Queueing Backends
- Conclusion
Active Storage
- Setup
- Expense Report
- Representations and Variants
- Removing Files
- Production
- Conclusion
Action Mailer and Action Mailbox
- Mailer Models
- Previews
- Testing Email Content
- Configuration
- Receiving Emails
- Conclusion
Asset Pipeline
- Propshaft
- importmap-rails
- dartsass-rails
- tailwindcss-rails
- A workflow without Node, npm or yarn
- CSS & JS Bundling
- The Rails Core Team Options
- faucet-pipeline
- Assets in Production
- Conclusion
Component-Based Views
- Installation and Configuration
- Bootstrap
- Styling the Flash
- Component Helper
- Closing the Alert
- Slots
- Rendering Collections
- Previews
- Working with Components
- Adding Items to our Invoice
- Conclusion
JavaScript
- Turbo Drive
- Turbo Frames
- Turbo Streams
- Broadcasting TurboStreams
- Custom Elements
- Alternatives
- Conclusion
