# Which way is the best way to require another file in .rb

**URL:** <https://www.ruby-forum.com/t/which-way-is-the-best-way-to-require-another-file-in-rb/134531>\
**Category:** Ruby\
**Created:** [April 11, 2008, 7:36pm UTC](https://www.ruby-forum.com/t/which-way-is-the-best-way-to-require-another-file-in-rb/134531 "2008-04-11T19:36:32Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eddy\_Xu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/f4b2a3/32.png) [@Eddy\_Xu](https://www.ruby-forum.com/u/Eddy_Xu)\
**Post date:** [April 11, 2008, 7:36pm UTC](https://www.ruby-forum.com/t/which-way-is-the-best-way-to-require-another-file-in-rb/134531/1 "2008-04-11T19:36:32Z")

</div>

I put all source in to lib/ path, and named a lib/foo path for my foo  
project. However, is there a better approach to require the ruby  
source which in lib/foo/ from the file in the same path.

For example, lib/foo/db.rb require lib/foo/configure.rb, currently I  
write:  
require “#{File.dirname( **FILE** )}/…/configure”

But it is a ugly way to require other files. Would anyone explain a  
more “standard” approach to do it?

---

<div class="post-metadata">

**Author:** ![Eddy\_Xu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/f4b2a3/32.png) [@Eddy\_Xu](https://www.ruby-forum.com/u/Eddy_Xu)\
**Post date:** [April 11, 2008, 7:41pm UTC](https://www.ruby-forum.com/t/which-way-is-the-best-way-to-require-another-file-in-rb/134531/2 "2008-04-11T19:41:15Z")

</div>

On (2008-04-12 02:35 +0900), Eddy Xu wrote:

> require “#{File.dirname( **FILE** )}/…/configure”
> 
> But it is a ugly way to require other files. Would anyone explain a  
> more “standard” approach to do it?

Push path to $:?

---

<div class="post-metadata">

**Author:** ![Eddy\_Xu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/f4b2a3/32.png) [@Eddy\_Xu](https://www.ruby-forum.com/u/Eddy_Xu)\
**Post date:** [April 11, 2008, 7:55pm UTC](https://www.ruby-forum.com/t/which-way-is-the-best-way-to-require-another-file-in-rb/134531/3 "2008-04-11T19:55:54Z")

</div>

On Apr 11, 1:32 pm, Eddy Xu [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I put all source in to lib/ path, and named a lib/foo path for my foo  
> project. However, is there a better approach to require the ruby  
> source which in lib/foo/ from the file in the same path.
> 
> For example, lib/foo/db.rb require lib/foo/configure.rb, currently I  
> write:  
> require “#{File.dirname( **FILE** )}/…/configure”
> 
> But it is a ugly way to require other files. Would anyone explain a  
> more “standard” approach to do it?

The default load path includes ‘.’, so if the file is in the same  
directory it should be found.  
HAve a look at “Where Ruby Finds Its Modules” section of  
[http://www.ruby-doc.org/docs/ProgrammingRuby/html/rubyworld.html](http://www.ruby-doc.org/docs/ProgrammingRuby/html/rubyworld.html)  
Despite its age I don;t think the current version of ruby differes

Cheers

---

<div class="post-metadata">

**Author:** ![Eddy\_Xu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/f4b2a3/32.png) [@Eddy\_Xu](https://www.ruby-forum.com/u/Eddy_Xu)\
**Post date:** [April 11, 2008, 7:57pm UTC](https://www.ruby-forum.com/t/which-way-is-the-best-way-to-require-another-file-in-rb/134531/4 "2008-04-11T19:57:40Z")

</div>

On (2008-04-12 02:50 +0900), Eddy Xu wrote:

> push it in every file or in the root file such as bin/foo.rb? if in  
> that case, it is impossible to run single source file property,  
> right?

Sorry, I misunderstood it as ad’hoc requirement. If it’s always  
like that in your system, perhaps set environment  
variable RUBYLIB? Or even recompile ruby?

---

<div class="post-metadata">

**Author:** ![Eddy\_Xu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/f4b2a3/32.png) [@Eddy\_Xu](https://www.ruby-forum.com/u/Eddy_Xu)\
**Post date:** [April 11, 2008, 7:50pm UTC](https://www.ruby-forum.com/t/which-way-is-the-best-way-to-require-another-file-in-rb/134531/5 "2008-04-11T19:50:38Z")

</div>

push it in every file or in the root file such as bin/foo.rb? if in  
that case, it is impossible to run single source file property,  
right?

---

<div class="post-metadata">

**Author:** ![Eddy\_Xu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/f4b2a3/32.png) [@Eddy\_Xu](https://www.ruby-forum.com/u/Eddy_Xu)\
**Post date:** [April 11, 2008, 8:31pm UTC](https://www.ruby-forum.com/t/which-way-is-the-best-way-to-require-another-file-in-rb/134531/6 "2008-04-11T20:31:08Z")

</div>

Thank you all.

I write require “foo/bar” and it works fine.
