Posted almost 5 years ago. Visible to the public. Repeats.

Don't require files in random order

A common pattern in Ruby is to to require all files in a specific diretory, using something like

Copy
Dir.glob(Rails.root.join('lib/ext/**/*.rb')).each do |filename| require filename end

However, this causes files to be required in an order determined by the file system. Since load order can be important, this may lead to different behavior on different machines which are hard to debug.

Simply add a .sort:

Copy
Dir.glob(Rails.root.join('lib/ext/**/*.rb')).sort.each do |filename| require filename end

Ruby 3

Ruby 3 Dir class sorts per default. You can opt out like this: Dir.glob(some_globbed_path, sort: false)

Growing Rails Applications in Practice
Check out our new e-book:
Learn to structure large Ruby on Rails codebases with the tools you already know and love.

Owner of this card:

Avatar
Tobias Kraze
Last edit:
5 months ago
by NiklasH
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Tobias Kraze to makandra dev
This website uses short-lived cookies to improve usability.
Accept or learn more