We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Jamis Buck - Repurposing the Rails CLI - Rails World 2024
Learn how to extend and customize the Rails CLI using Thor, templates, and wrapper scripts to better support alternative databases like MongoDB and other use cases.
-
The Rails CLI is built on Thor, a tool for building command-line applications that provides a framework for self-documenting utilities
-
Rails is opinionated and says “no” to certain features, particularly focusing on SQL databases, which creates challenges for alternative databases like MongoDB
-
The Rails CLI can be extended through:
- Application templates
- Monkey patching (though this requires careful consideration)
- Creating wrapper scripts
- Adding new command line options
-
Templates are an underutilized feature of Rails that can help automate setup and configuration of alternatives to default Rails components
-
MongoDB users can create a smoother Rails experience by:
- Skipping ActiveRecord during app creation
- Using templates to automate Mongoid setup
- Extending the Rails CLI with MongoDB-specific commands
-
When extending the Rails CLI:
- Preserve existing functionality where possible
- Maintain familiar command patterns and interfaces
- Test against multiple Rails versions
- Consider future compatibility
-
The binrails executable is key to how the Rails CLI works - it searches up directory trees to find and execute the appropriate rails command
-
New CLI commands can be added by:
- Inheriting from Thor
- Creating public methods for each command
- Using the Rails CLI API and DSL
-
It’s possible to override default Rails behavior by preempting namespace lookups and injecting custom implementations
-
Careful testing and future-proofing is important when extending core Rails functionality, especially testing against development versions