RR 408: Zeitwerk with Xavier Noria

Episode 416 · April 16th, 2019 · 54 mins 3 secs

About this Episode



  • David Kimura
  • Eric Berry
  • Andrew Mason

Joined by special guest: Xavier Noria

Episode Summary

This episode of Ruby Rogues features Xavier Noria, who has a background in mathematics, but started software in 2000. He has been freelancing for the past 10 years, working especially in open source. He received the Ruby Hero award in 2010. His latest work is with his own creation, Zeitwerk, a more efficient code loader for Ruby. Zeitwerk will be included in Rails 6, but is an independent gym for now. Xavier talks about his inspiration for Zeitwerk and his desire to improve constant outloading in Rails.

The panelists delve into the features of Zeitwerk. Any conventional library can use Zeitwerk, so you don’t have to write requires. Zeitwerk is designed to make your development work easier because you don’t have to worry about including in or requiring files in your code snippets, it will intelligently auto load those in. Zeitwerk functions slightly different from classic mode Ruby, because in Zeitwerk, you don’t go constant name to file, instead you are given a file name first,  and then add it to a constant. Xavier delves into the limitations of classic mode and the const-missing callback, and how Zeitwerk improves upon this problem by using only absolute paths and module outloading instead of const-missing. The result is that, in general, things load faster.

They discuss indexing of absolute paths within Zeitwerk, how one of the principles of Zeitwerk is to be as lazy as possible, the memory footprint, and the configuration needed to opt into Zeitwerk.  Overall, Zeitwerk is going to work like Ruby. There are no special rules, it has the same semantics as Ruby, fewer gotcha’s if any at all, control over inflection, ways to introspect, and a way to log the activity of Zeitwerk.



David Kimura:

  • Nerf Guns

Eric Barry:

Xavier Noria: