NameError: uninitialized constant on Heroku NameError: uninitialized constant on Heroku heroku heroku

NameError: uninitialized constant on Heroku


Rails doesn't autoload in production for thread safety, instead eager loading application constants. You can fix your issue by using the eager_load_paths method instead.

config.eager_load_paths << Rails.root.join('lib')

If you still want to autoload in development you can make it conditional

load_path_strategy = Rails.env.production? ? :eager_load_paths : :autoload_pathsconfig.public_send(load_path_strategy) << Rails.root.join('lib')

If you really need autoloading of this directory in production you can set enable_dependency_loading to true.

config.enable_dependency_loading = trueconfig.autoload_paths << Rails.root.join('lib')

See this blog post for more explanation.


I have been puzzled why all of my objects were uninitialized constant in console on heroku in production. In my local production, they were fine.

Turns out that the problem was that I was running: "heroku run console" not "heroku run rails console".

Worth noting that when you access console from the heroku website, the same problem occurs there too. Wasted a lot of time on this.