Advanced Projects
Prerequisites: Level 3 — Advanced
Build these using metaprogramming, concurrency, databases, Rack, and the testing, security, and deployment practices from Level 3.
1. JSON REST API
Build a task-list API on Rack (or Sinatra) backed by SQLite through the
sqlite3 gem, using parameterized queries only. Add request logging and
error-handling middleware, validate input, return proper status codes
(201, 404, 422), test it with rack-test, and ship it as a Docker
image.
2. Concurrent Link Checker
Read URLs from a file and check them with a fixed pool of worker threads
pulling from a Queue, each request using open and read timeouts.
Collect results with a Mutex-guarded hash and print a summary of
broken links. Compare the run time against a single-threaded version.
3. Configuration DSL Gem
Write a gem that lets users configure an app with a block-based DSL
(MyApp.configure { |c| c.timeout = 5 }), defining settings with
define_method, validating types, and raising helpful errors for
unknown keys. Publish-ready: README, CHANGELOG, a CI workflow, and a
RuboCop-clean codebase.