Ruby Intermediate → Advanced ~12 weeks

Ruby: From Intermediate to Advanced

Ruby's object model is the thing worth genuinely understanding at this level, because everything that looks like magic resolves to it. Once method lookup, singleton classes and the ancestor chain are clear, metaprogramming stops being a party trick and becomes a tool with obvious costs - and the framework code you have been treating as a black box becomes readable.

Generate my free course

Free to start · no credit card · the outline below is an example, yours is generated around your goals

What this path covers

  • The object model
  • Metaprogramming
  • Method lookup and singleton classes
  • Concurrency and the GVL
  • Memory and profiling
  • API and gem design

Sample curriculum

An example outline for going from intermediate to advanced in Ruby. Your generated course adapts this to your experience, target level and available study time.

  1. The Object Model in Full

    Everything is an object, classes are objects too, singleton classes, the ancestor chain, and method lookup traced step by step until it is predictable.

  2. Metaprogramming With Restraint

    define_method, method_missing paired with respond_to_missing?, instance_variable_get, and an honest account of the debugging cost each one imposes on the next reader.

  3. Concurrency and the GVL

    What the global VM lock does and does not prevent, threads for I/O-bound work, processes for CPU-bound work, Ractors and Fibers, and choosing between them by workload.

  4. Memory and Garbage Collection

    Object allocation, string mutability and frozen literals, generational GC, finding leaks in long-running processes, and reducing allocation in a hot path.

  5. Profiling Real Applications

    stackprof and memory_profiler, benchmarking without fooling yourself, finding the slow query behind the slow request, and measuring before optimising.

  6. Designing Libraries

    APIs that read well at the call site, semantic versioning and deprecation, thorough documentation, and packaging a gem other people can depend on.

Ruby intermediate-to-advanced questions

When is metaprogramming the wrong choice?

When a plain method would do, and whenever it makes a method impossible to find by searching the codebase. The practical test used here is whether the next person can locate the definition - method_missing frequently fails it.

Does the GVL make Ruby threads useless?

No, only for CPU-bound work. Threads release the lock during I/O, so a thread pool genuinely helps a service that spends its time waiting on databases and HTTP calls. For CPU-bound work you need processes or Ractors.

How much of this applies to Rails work specifically?

Most of it, and directly. Rails is built on the object model and metaprogramming this covers, and its performance problems are Ruby performance problems - allocation, N+1 queries and blocking calls in request handlers.

Where to go next

Ready to start Ruby?

Ruby is designed for developer happiness, and still the fastest way to ship a web app. Tell LearnForge where you are now and where you want to get to, and it builds the course around that.

Generate my free course