# Doing require on some relateive path

**URL:** <https://www.ruby-forum.com/t/doing-require-on-some-relateive-path/123214>\
**Category:** Ruby\
**Created:** [December 14, 2007, 11:46pm UTC](https://www.ruby-forum.com/t/doing-require-on-some-relateive-path/123214 "2007-12-14T23:46:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [December 14, 2007, 11:46pm UTC](https://www.ruby-forum.com/t/doing-require-on-some-relateive-path/123214/1 "2007-12-14T23:46:49Z")

</div>

hello  
I have the following 2 files

Someopath/Dir1/File1.rb  
Someopath/Dir2/File2.rb

How can i do a require ‘relativepath/Dir2/File2.rb’ from File1.rb

appreciate any help.

---

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [December 15, 2007, 12:17am UTC](https://www.ruby-forum.com/t/doing-require-on-some-relateive-path/123214/2 "2007-12-15T00:17:13Z")

</div>

Hi Jukone,

The idiom I have seen used and use myself is…  
withing File1.rb

require File.dirname( **FILE** ) + ‘/…/…/Dir1/File1.rb’

Hope that helps.

Johnny P

---

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [December 15, 2007, 2:24pm UTC](https://www.ruby-forum.com/t/doing-require-on-some-relateive-path/123214/3 "2007-12-15T14:24:29Z")

</div>

Some recommend being a bit more implicit with the path structure. So  
more along the lines of,

require File.join(File.dirname( **FILE** ), ‘…’, ‘…’, ‘Dir1’,  
‘File1’))

File.join will apply the proper file separator for any given platform  
running your code. Btw, there is no need to put the ‘.rb’ extension -  
it is implied.

I have been meaning to finish my ‘relative require’ gem,  
[http://elreq.rubyforge.org](http://elreq.rubyforge.org),  
that allows you to just do the following,

require ‘…/…/Dir1/File1’

Which I find much nicer, cleaner and easier. The gem is finished, I  
just need to publish it. I’ll do that this weekend.

Kevin

---

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [December 15, 2007, 8:20pm UTC](https://www.ruby-forum.com/t/doing-require-on-some-relateive-path/123214/4 "2007-12-15T20:20:53Z")

</div>

On Dec 14, 4:41 pm, Junkone [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> hello  
> I have the following 2 files
> 
> Someopath/Dir1/File1.rb  
> Someopath/Dir2/File2.rb
> 
> How can i do a require ‘relativepath/Dir2/File2.rb’ from File1.rb
> 
> appreciate any help.

$:.unshift(File.basename($0))  
require “…/Dir2/File2.rb”  
require “…/Dir3/File3.rb”  
require “…/Dir4/File4.rb”  
…

Regards,  
Jordan

---

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [December 15, 2007, 8:55pm UTC](https://www.ruby-forum.com/t/doing-require-on-some-relateive-path/123214/5 "2007-12-15T20:55:28Z")

</div>

On Dec 15, 1:19 pm, MonkeeSage [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > appreciate any help.
> 
> $:.unshift(File.basename($0))  
> require “…/Dir2/File2.rb”  
> require “…/Dir3/File3.rb”  
> require “…/Dir4/File4.rb”  
> …
> 
> Regards,  
> Jordan

Heh…I’m not batting so well here. That should also have been  
File.dirname, not basename! And probably the path should be expanded.  
One more try here…

$:.unshift(File.expand\_path(File.dirname($0)))  
require “…/…/Dir2/File2.rb”  
require “…/…/Dir3/File3.rb”  
require “…/…/Dir4/File4.rb”  
…

Regards,  
Jordan

---

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [December 15, 2007, 8:51pm UTC](https://www.ruby-forum.com/t/doing-require-on-some-relateive-path/123214/6 "2007-12-15T20:51:22Z")

</div>

On Dec 15, 1:19 pm, MonkeeSage [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > appreciate any help.
> 
> $:.unshift(File.basename($0))  
> require “…/Dir2/File2.rb”  
> require “…/Dir3/File3.rb”  
> require “…/Dir4/File4.rb”  
> …
> 
> Regards,  
> Jordan

Oops. Those should have been “…/…/Dir2/File2.rb” &c.
