A brief foreword: the project above is an example project where you can post complaints about people/things in your life and BCC emails to which you can anonymously send the complaints. Its main purpose is to showcase the potential extensibility of Ruby microframeworks, but feel free to use it at your leisure.
I'd like to start off by mentioning that I don't hate Rails. Rails made Ruby famous, and I would have never touched Ruby without its existence. I respect the framework's influence on modern application development, and ActiveRecord is essentially the best ORM ever made. However, Ruby alone is such a dynamic and expressive language that it should not be confined to one form of web application development.
Rails is a solidly 'okay' way to build applications. Every method under the sun exists to turn strings into classes, pluralize your text, default controller actions to matching views, etc. It's the Big Mac of web application development. The same magic that provides mild enjoyment comes at a cost of dependency bloat, performance drag, YAGNI, and ultimately a smaller community of Ruby developers (with fewer maintained gems) because all production apps and Ruby jobs are married to Rails.
Ruby has Sinatra, but it seems that any experienced Rubyist is discouraged from using Sinatra in favor of Rails. We see companies like Pinterest using Flask, how come we aren't seeing more barebones Ruby in production? Benchmarks show that Sinatra is generally 3-5x faster, so I believe it's a matter of complacency on the part of the community, along with a distorted perception in an echo chamber that prevents potential rogue Rubyists from changing their framework diet.
The project above is an example of how to extend Sinatra to a full MVC pattern with workers and a modern JS frontend. It was not taxing to recreate the basic structure of a Rails application, but there are merely 10 dependencies.
Sinatra is not nearly the only alternative (looking at you, Roda), but I like the DSL chosen to wrap Rack and make the process of sessions and security measures readable without adding fluff.
I'd love to see more Sinatra, or other Ruby microframeworks, being showcased in the wild as a viable option for production applications. Especially with the emergence of faster web servers like Agoo, we could be shipping performant, scalable Ruby applications outside of the Rails ecosystem. TMTOWTDI, or at least there should be.
You're one click away
Level up every day