Thredded Rails Forum Engine: Installation and Integration
The best Rails forums engine ever.
At a glance
- What is it?
- Thredded embeds a database-backed forum, private messaging, moderation, and notifications into a Ruby on Rails application. It suits teams with a compatible user model, while MRI-only runtime support and manual integration work narrow adoption.
- Who is it for?
- Thredded is a sensible choice for a Rails application that already has a compatible user model and accepts responsibility for permissions, assets, layout integration, and database search configuration. It is a poor fit for a non-Rails product, a JRuby deployment, or a team expecting a turnkey forum from the recommended `thredded_create_app` generator.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 138 days ago.
- What is it written in?
- Mainly Ruby, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 6, 2026, and from our analysis. They are not legal advice.
Star history
- thredded/thredded1,598 ★ · +1
| Repository | 2026-10-17 | 2026-11-06 |
|---|---|---|
| thredded/thredded | 1.6k | 1.6k |
1 Stars in the last 20 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
Why Thredded belongs inside an existing Rails application
Thredded solves a specific problem: adding community discussion features to a Rails product without turning the forum into a separate application. It is a Rails engine, so the host application supplies its routes, user identity, asset pipeline, database, and ActiveJob backend. The README lists messageboards, topics, Markdown or BBCode formatting, unread-post tracking, subscriptions, `@`-mentions, private group messaging, full-text search, pinned and locked topics, online-user lists, permissions, moderation, and a Sass-based default theme.
That feature set makes it relevant to products that need an attached support community, developer discussion area, user group, or internal message board. The engine can use SQLite, MySQL 5.6.4+, or PostgreSQL. Its infrastructure requirements are limited to the database and, when the parent application configures one, an ActiveJob backend such as Redis. This is a lighter integration model than operating a full forum application, but it also means the host team owns authentication mapping, navigation, layouts, and application-specific permission behavior.
Thredded includes email notifications and per-messageboard notification settings. However, the README says an ActiveJob backend dependency depends on configuration in the parent application. Notification delivery is therefore part of application integration rather than a service supplied entirely by the gem.
How Thredded maps forum identity to application users
The installation generator creates a Thredded initializer in which the application identifies its base user model and the columns Thredded should use. This is the main coupling point between the engine and the host application. Forum users do not come from an independent account system. Thredded relies on the parent application's existing `User` model and configured columns.
Posting, reading, private messaging, moderation, and administrative access are controlled through permission methods. The documented categories cover reading messageboards, posting to messageboards, messaging other users, moderating messageboards, and admin permissions. This separation lets an application expose different capabilities according to its own user roles. It also makes the host application responsible for aligning those methods with its authentication and authorization model.
Mentions add a database lookup constraint. The README recommends an index on the user-name column because Thredded uses it to find `@`-mentions and provide name-prefix autocompletion in the private-topic form. Its example uses `DbTextSearch::CaseInsensitive.add_index` with a unique option. That index supports two concrete forum functions rather than serving as a generic optimization.
Thredded's search is database-backed. The README does not require a separate search service, but it does not document database-specific search tuning or index recommendations beyond the user-name case. Full-text search should therefore be checked against the chosen database during evaluation.
Installing Thredded 1.2 in an existing Rails application
The supported installation path in the README begins with an existing Rails application. First, add the current release series to the application's `Gemfile`. The `~> 1.2` constraint permits compatible 1.2 releases while remaining within that minor-version series.
gem 'thredded', '~> 1.2'Next, generate the initializer. Rails creates the initializer that needs the host application's user model and column configuration.
rails generate thredded:installAfter correcting the initializer, copy the engine migrations into the parent application and migrate the database. The README also includes preparation of the test database in this command.
rake thredded:install:migrations db:migrate db:test:prepareMount the engine under a route selected by the host application. The documented example places it at `/forum`.
mount Thredded::Engine => '/forum'The application must also expose the engine's assets and views within its own layout. The README contains separate directions for Sprockets and Webpack. A successful migration alone does not produce a usable page if the layout cannot locate the required assets.
The app-generator route is not current. The README marks `thredded_create_app` as out of date and states that it will not work with the latest Thredded. Its old installation commands remain in collapsed, outdated instructions, so an existing Rails application is the documented path to follow.
Rendering Thredded views through the Rails asset pipeline
Thredded is not designed as a visually isolated destination. Its views must find the parent application's layout and asset paths. The README documents a standalone layout and an application-layout approach, followed by explicit path configuration and instructions for styles and JavaScript with either Sprockets or Webpack.
The stylesheet is connected to a lightweight default theme that can be configured through Sass. The engine can also support standalone or application-layout rendering, and the README documents custom views and view hooks. These extension points can accommodate product styling without replacing the entire engine. Customization still belongs to the host team. The README does not promise that every upstream Rails asset configuration is inherited automatically.
A first real use begins after migrations, engine mounting, and asset integration are complete. Open `/forum`, confirm that messageboard and topic views render inside the application's layout, and then provide the messageboard records required by the application. The README identifies messageboards as a core feature, but its installation excerpt does not give a complete console command or seed-data example for creating the first messageboard.
JavaScript behavior belongs in the same browser check. Some forum interactions depend on included JavaScript, while the layout determines whether users receive the host application's navigation and account controls. A blank page or unstyled thread after migration often points toward route, layout-path, stylesheet, or JavaScript integration rather than the migration itself. This is a diagnostic observation, not a guarantee about a particular failure.
Notifications, subscriptions, and private messaging constraints
Thredded models participation beyond ordinary page views. It tracks read and unread posts, lets users subscribe to topics, sends email notifications, recognizes `@`-mentions, and provides per-messageboard notification preferences. Private group messaging uses the host application's user integration rather than a separate identity system.
The infrastructure constraint is explicit. Apart from the database, Thredded has no required infrastructure of its own. If the parent application configures an ActiveJob backend dependency such as Redis, notification work may depend on it. The README does not specify which notification actions always run asynchronously, which execute inline, or how retries and failures are handled. It would therefore be unsupported to claim that every notification is queued or that an unavailable backend has no effect.
Auto-follow is a separate configuration topic. The README includes an “Enabling auto-follow” section, but the complete instructions are not visible in the displayed installation content. Subscription state and delivery configuration should still be treated as distinct concerns. A user can be subscribed while email delivery also depends on the host application's job and mail setup.
Private messaging depends on permissions for messaging other users. The application must expose the appropriate methods and account for authorization failures. The documented error-handling section covers “Permission denied” and “Not found,” indicating that access control is part of request handling rather than merely hidden navigation links.
Runtime support, moderation, and upgrade costs
Thredded currently supports MRI Ruby 3.1+ only. The README says JRuby and Rubinius support would be desirable but are not available. This is a deployment boundary for an application whose production runtime is already fixed.
Database choice is broader: SQLite, PostgreSQL, and MySQL 5.6.4+ are listed. The repository also contains development configuration for PostgreSQL and related database dependencies, but that development setup does not guarantee identical operational behavior in every host application. Teams should verify search, concurrency, and migrations against their selected production database.
Moderation includes basic controls such as locked and pinned topics and a dedicated permission category for messageboard moderators. The README also has a section for disabling moderation. Its configuration details and security consequences are not visible in the displayed README content. Moderation is a documented feature, but the README does not establish a complete administrative compliance system. It does not document retention, audit exports, abuse reporting, rate limiting, or account recovery workflows.
The repository is not archived, and its last push was on 2026-06-22. The most recent listed release is v1.2.1 from 2025-05-30. These facts show recent repository activity and a current 1.2 release line. Upgrade work still includes reviewing initializer changes, copying the appropriate upgrade migrations, and reconciling customized views or hooks. The README's upgrade example is truncated after a version-specific migration command, so it cannot establish the correct procedure for every transition.
Thredded versus Discourse's application model
The README names Discourse as the relevant alternative for teams seeking a different forum architecture. The documented difference is structural. Thredded is an engine mounted into a parent Rails application, while Discourse is a full Rails application. Thredded can integrate with an existing user model, routes, asset pipeline, and application layout. Discourse instead requires adopting and operating its own complete application.
This choice affects ownership. A Rails product that needs its forum to share host-application accounts and interface may prefer the engine model. A team seeking an independently operated community platform can use Discourse without making that platform part of the product codebase. Choosing Thredded means accepting responsibility for host-application permissions, notification delivery, asset configuration, database search behavior, and custom presentation.
The README does not provide a feature-by-feature comparison with Discourse. It would therefore be unsupported to claim that either project offers more features or performs better. The defensible distinction is deployment ownership: Thredded becomes part of an existing Rails application, whereas Discourse is the complete forum application.
Editorial conclusion
Thredded is a sensible choice for a Rails application that already has a compatible user model and accepts responsibility for permissions, assets, layout integration, and database search configuration. It is a poor fit for a non-Rails product, a JRuby deployment, or a team expecting a turnkey forum from the recommended `thredded_create_app` generator. Before adoption, verify MRI Ruby 3.1+, the selected database, the application user model and columns, the mount path, notification delivery, and whether the generated layout and theme fit the existing design.
Frequently asked questions
What database and Ruby versions does Thredded support?
Thredded supports SQLite, MySQL 5.6.4+, and PostgreSQL. It currently supports MRI Ruby 3.1+, not JRuby or Rubinius.
How do I install Thredded in an existing Rails application?
Add `gem 'thredded', '~> 1.2'`, run the install generator, configure the generated initializer for the application's user model, copy and run the migrations, and mount `Thredded::Engine` in the routes file.
Does the thredded_create_app generator work with the latest Thredded?
No. The README marks `thredded_create_app` as out of date and states that it will not work with the latest Thredded.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/thredded-thredded)Star history chart for your README
[](https://hysenlabs.com/projects/thredded-thredded)Was this useful?