Ruby 2.5 has removed top level constant lookup

Amit Choudhary

By Amit Choudhary

on October 18, 2017

This blog is part of our  Ruby 2.5 series.

Ruby 2.4

1irb> class Project
2irb> end
3=> nil
4
5irb> class Category
6irb> end
7=> nil
8
9irb> Project::Category
10(irb):5: warning: toplevel constant Category referenced by Project::Category
11 => Category

Ruby 2.4 returns the top level constant with a warning if it is unable to find a constant in the specified scope.

This does not work well in cases where we need constants to be defined with same name at top level and also in the same scope.

Ruby 2.5.0-preview1

1irb> class Project
2irb> end
3=> nil
4
5irb> class Category
6irb> end
7=> nil
8
9irb> Project::Category
10NameError: uninitialized constant Project::Category
11Did you mean?  Category
12	from (irb):5

Ruby 2.5 throws an error if it is unable to find a constant in the specified scope.

Here is the relevant commit and discussion.

Stay up to date with our blogs. Sign up for our newsletter.

We write about Ruby on Rails, ReactJS, React Native, remote work,open source, engineering & design.