Skip to content

Latest commit

 

History

History
63 lines (44 loc) · 2.52 KB

extending.md

File metadata and controls

63 lines (44 loc) · 2.52 KB

Extending & Customization

This chapter collects all the official Folio generators and advanced hooks so you can customise the engine safely and keep your codebase maintainable.


Generators Overview

The table below lists the generator namespaces found in lib/generators/folio/ and what they create.

Generator Command example Purpose
install rails generate folio:install Adds Folio to a Rails project, migrations & initializer
atom rails generate folio:atom Text Creates a new CMS block (Atom) with model & component
component rails generate folio:component Hero Creates a standalone ViewComponent
console:scaffold rails generate folio:console:scaffold Article Admin console CRUD scaffold
page_singleton rails generate folio:page_singleton ContactPage Singleton page model & admin config
prepared_atom rails generate folio:prepared_atom all Atom pre-configured
search rails generate folio:search Adds search controller and components
traco rails generate folio:traco Enables Traco for Folio models such as Pages
ui rails generate folio:ui Alert Lightweight UI component scaffold
cell rails generate folio:cell LegacyWidget Legacy Trailblazer Cell (avoid for new code)
blog rails generate folio:blog Adds complete blog functionality (articles + authors + topics) including models, controllers and components
assets rails generate folio:assets Adds default SASS, JS & images
pg_search_index_migration rails generate folio:pg_search_index_migration Adds indexes for pg_search

Run rails generate without arguments to see all generators and options.


Overriding Engine Code

Folio follows the standard Rails engine override approach:

  1. Create a file in app/overrides/ mirroring the path you want to override.
  2. Define your subclass or module patch.
  3. Rails autoloader will pick your version first.

Example overriding Folio::User validations:

# app/overrides/folio/user.rb
Folio::User.class_eval do
  validates :nickname, uniqueness: true, allow_blank: true
end

Custom Initializers

Place configuration tweaks in config/initializers/folio.rb (generated by folio:install). Keep everything in one file to ease upgrades.


Navigation


Refer to each generator's USAGE file for detailed options.