# Autorequire

**URL:** <https://www.ruby-forum.com/t/autorequire/80422>\
**Category:** Ruby\
**Created:** [March 13, 2006, 5:26pm UTC](https://www.ruby-forum.com/t/autorequire/80422 "2006-03-13T17:26:47Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [March 13, 2006, 5:26pm UTC](https://www.ruby-forum.com/t/autorequire/80422/1 "2006-03-13T17:26:47Z")

</div>

I know Rails uses some const\_missing magic to automatically require  
modules and classes based on their names (ie RealEstate::Location.new  
–\> autorequires ‘real\_estate/location’).

Any advice on how to use this for general ruby programming?

Any reason not to?

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [March 14, 2006, 3:17pm UTC](https://www.ruby-forum.com/t/autorequire/80422/2 "2006-03-14T15:17:01Z")

</div>

> I know Rails uses some const\_missing magic to automatically require  
> modules and classes based on their names (ie RealEstate::Location.new  
> –\> autorequires ‘real\_estate/location’).
> 
> Any advice on how to use this for general ruby programming?

I think you want Kernel::autoload( module\_name, module\_path ), and also  
Module::autoload. On the first use of module\_name, it’ll be loaded from  
the path ready for use. It’s useful for only loading something in at the  
point where it is needed, and avoiding loading it at all if it’s never  
needed.
