
Ruby on Rails
rubyonrails.org- Category
- Developer Tools
- Rank
- No. 285Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- rails
- GitHub
- 58.8k stars
- Latest release
- v8.1.3.1
- Date
About
Full-stack Ruby web framework. Convention-over-configuration framework that pioneered the modern web stack. Hotwire and Turbo make it competitive with SPAs.
What it does
Rails ships a whole web stack as one meta gem that depends on twelve sibling gems, every one pinned to a single shared version string. Requests enter through the routing and controller layer, models map Ruby classes onto database tables by naming convention, and templates render the response. The command line tool first checks whether you are already inside an application and, if so, hands execution to that application's own copy of the framework. Past the three core layers it also carries mail sending and receiving, background jobs, WebSockets, file attachments and rich text as separate but coordinated gems.
Why it's ranked here
Lockstep versioning is the strongest argument here. One version string drives every sibling gem, so upgrading is a single decision instead of twelve compatibility bets, and the monorepo layout keeps a cross cutting fix inside one pull request. Against that, installing the full stack pulls in twelve gems plus a code loader, a task runner, a command parser and a REPL, and the declared floor is Ruby 3.3.1 or newer. Four database adapters each get a dedicated test task, so the database abstraction is exercised rather than assumed.
What's good
Components are built to survive outside the framework. The ORM, the model interfaces, the request layer and the view layer are each documented as usable standalone, and each carries its own gem specification, changelog and tests. The ORM documentation is candid about its own seams: it says you can drop to SQL for odd cases and that it will not replace your schema definitions. Contribution rules are stated plainly. Cosmetic patches are rejected, feature ideas go to the forum before an issue is opened, and changes to core Ruby extensions are pushed upstream to Ruby instead.
Tradeoffs
Convention over configuration cuts both ways. The ORM infers table and foreign key names from class names, so the mapping stays invisible until it guesses wrong. The development dependency list is long: three database drivers, several asset pipelines, cloud storage clients, image processing, four job backends. Testing is opinionated, using Minitest rather than RSpec, and the suite runs across multiple processes, which makes chasing one failure harder. Nothing here covers front end state management or a component model. The JavaScript that ships is a thin client for WebSockets, uploads and rich text.
How to use it well
Pick this when you are building a database backed product and want one team to own the whole request path, from schema to HTML, without assembling a stack from parts. It pays off most for small teams shipping data heavy applications that also need real time updates, mail and background work in the same codebase. Individual pieces are worth borrowing on their own: the ORM and the utility extensions run outside the framework. It gives you no front end framework, no mobile client, no API gateway, and it will not manage your infrastructure.
Technical notes+
The root rails.gemspec is a shell: it declares no code files beyond README.md and MIT-LICENSE and simply depends on activesupport, actionpack, actionview, activemodel, activerecord, actionmailer, activejob, actioncable, activestorage, actionmailbox, actiontext and railties, each pinned to the string read from RAILS_VERSION, plus bundler. railties/railties.gemspec is the package that actually ships the rails executable and adds rackup, rake, thor, zeitwerk, irb and tsort. railties/lib/rails/cli.rb requires the app loader and execs into a local application before anything else runs, then dispatches to gem help, plugin or application commands. railties/lib/rails/rackup/server.rb is a compatibility shim preferring the newer rackup server and falling back to the older rack one. AGENTS.md documents the component layout and the parallel test runner, and Gemfile pins the development matrix including sqlite3, pg, mysql2 and trilogy.
Observed
- License
- MIT, per MIT-LICENSE and every gem specification read
- Language
- Ruby, with small bundled JavaScript clients for the browser side
- Install surface
- RubyGems: one meta gem that pulls in the sibling framework gems
- Interfaces
- A command line executable shipped by railties, plus library APIs per component
- Repository shape
- Monorepo, each component with its own gem specification, changelog and tests
- Database adapters
- SQLite3, PostgreSQL, MySQL2 and Trilogy have dedicated test tasks
- Test framework
- Minitest run across parallel processes, no RSpec in the tree
- Security reporting
- Vulnerabilities routed to a published security policy, not GitHub issues
Read from README.md, rails.gemspec, Gemfile, RAILS_VERSION, MIT-LICENSE, AGENTS.md, CONTRIBUTING.md, railties/lib/rails/cli.rb, railties/RDOC_MAIN.md, railties/railties.gemspec, railties/lib/rails/rackup/server.rb, activerecord/README.rdoc, actioncable/README.md.
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.