Although it may not seem intuitive, Rails is very picky when it comes to how you name your files, specifically when adding new classes within your app folder.
Let’s say you have a class that looks like this:
class MySuperCatHelper def meow puts "Meow!!" end end
You’ve saved this class in the app/helpers directory in a file called my_supercat_helper.rb. Naturally, you want this class to be available to your MySuperCat controller where you wish to add the following code:
cat = MySuperCatHelper.new cat.meow
But for some reason, you’re getting an error about an uninitialized constant when using the above code in your MySuperCat controller.
Why is that?
The issue is subtle, and due to the opinionated nature of Rails. In order to be directly accessable without a special require statement, your class must live in a file that is named such that each new capital letter in the class, translates to an underscore in an all-lowercase filename.
So rather than naming the file with the MySuperCatHelper my_supercat_helper.rb, you must name it my_super_cat_helper.rb.
Notice the difference?
So be careful when naming your Rails files. Naming them properly will enable you to easily access your custom classes throughout your application, without having to clutter your code with require statements.