The final episode of this series reviews the modern ecosystem: Rails 8.x, Sinatra, Hanami, and the Rake, Puma, and Foreman tooling, the alternative implementations JRuby and TruffleRuby, a comparison of Ruby with other languages, plus a recap and a production-grade application checklist.

Congratulations — you've reached the final episode of the Learn Ruby series. From the prerequisites in episode 0 to the Ruby 4.0 features in episode 21, you've covered nearly the entire roadmap: syntax, OOP, concurrency, web, security, performance, types, testing, and metaprogramming.
Episode 22 summarizes it all. We review the Ruby web ecosystem as a whole, the alternative implementations JRuby and TruffleRuby, a comparison of Ruby with other languages, then a full recap and a production checklist. This is your chance to see the big picture before putting it all into practice.
Rails 8.x remains the leading full-stack choice: solid-cache and solid-queue replace the need for Redis in many cases, Kamal simplifies deployment, and Propshaft serves as the modern asset pipeline. Sinatra still excels for small services. Hanami is an MVC framework that emphasizes structure and clean architecture:
gem install hanami
hanami new aplikasi --database=sqlite
cd aplikasi
bundle exec hanami serverhanami new aplikasi creates a new Hanami project, and bundle exec hanami server runs it. Hanami offers a more modular and lightweight alternative to Rails for teams that want more control over their architecture.
Tooling completes the ecosystem. Rake is the universal task runner — list tasks with rake -T. Puma is the default thread-based web server. Foreman runs several processes at once from a Procfile:
gem install foreman
cat > Procfile <<EOF
web: bundle exec puma -p 3000
worker: bundle exec sidekiq
EOF
foreman startforeman start reads the Procfile and runs the web and worker processes together. bundle exec puma -p 3000 runs Puma on port 3000. The combination of Rake for tasks, Puma for the server, and Foreman for local orchestration is the standard Ruby development workflow.
JRuby runs Ruby on top of the JVM. It gives you access to the entire Java ecosystem and real threading, without the GVL. Use it when your project needs Java libraries or JVM JIT performance:
gem install jruby
jruby app.rbjruby app.rb runs a script with the JRuby runtime. Advantages: seamless Java integration, a mature JVM garbage collector, and true parallelism. Drawbacks: slower startup and some C extensions may not be compatible.
TruffleRuby runs on top of GraalVM and pursues extreme performance through the Graal JIT. It suits heavily CPU-bound workloads:
gem install truffleruby
truffleruby app.rbtruffleruby app.rb runs a script with TruffleRuby. For the best compatibility, keep targeting CRuby — it's the reference version most widely used in production. Consider alternatives only when there's a specific need: the JVM, true parallelism, or extreme performance.
Every language has its place. Python is strong in data science and Django for development speed; Node.js excels at I/O-intensive work and shares a frontend ecosystem; PHP remains dominant in cheap hosting and WordPress. Ruby shines through productivity, expressive DSLs, and a highly cohesive Rails ecosystem.
Choose based on context, not popularity. For REST APIs and web apps you want to build quickly with a small team, Rails is a rational choice. For lightweight microservices, Sinatra or Hanami give you control. Ruby's trade-off is execution performance and the many typing options, but YJIT and Ruby 4.0 keep closing that performance gap.
From episode 0, you set up rbenv and IRB; through episodes 1-8 you mastered syntax, control flow, methods, OOP, error handling, and strings; episodes 9-12 handled files, collections, concurrency, and Bundler; episodes 13-16 built and secured web apps; episodes 17-21 optimized, added types, wrote tests, and moved to Ruby 4.0. No step was wasted — it all connects.
Before deploying a Ruby app, make sure this checklist is complete:
rbenv versions
bundle exec rspec
bundle audit check
brakeman --exit-on-warn
RUBY_YJIT_ENABLE=1 bin/rails serverbundle exec rspec and bundle audit check validate tests and dependencies. brakeman --exit-on-warn ensures there are no new security warnings. RUBY_YJIT_ENABLE=1 enables YJIT in production. Complete it with secrets in the environment, monitoring, database backups, and a rollback plan.
The Ruby community is very welcoming. Learn more from ruby-lang.org, docs.ruby-lang.org for the API, rubygems.org and bundler.io for dependencies, and the github.com/ruby/ruby repo for NEWS.md. Join a local community or a conference to stay current with where the language is heading.
Success
You've completed 23 full episodes, from prerequisites to Ruby 4.0 and production readiness. What sets you apart now isn't how much material you've read, but the practice you build on top of it.
Key takeaways:
The Learn Ruby series is complete. This isn't the end, but a starting point: take one small idea from each episode — say, enabling YJIT or writing your first test with Minitest — and apply it in your projects today. Build something, iterate, and share the results with the community. Happy coding, and see you in the next series.