# How to get a file contained in a gem "lib" directory?

**URL:** <https://www.ruby-forum.com/t/how-to-get-a-file-contained-in-a-gem-lib-directory/180529>\
**Category:** Ruby\
**Created:** [December 21, 2009, 12:45pm UTC](https://www.ruby-forum.com/t/how-to-get-a-file-contained-in-a-gem-lib-directory/180529 "2009-12-21T12:45:07Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [December 21, 2009, 12:45pm UTC](https://www.ruby-forum.com/t/how-to-get-a-file-contained-in-a-gem-lib-directory/180529/1 "2009-12-21T12:45:07Z")

</div>

Hi, I’ve build a gem “mylib” which contains a file called “myfile.xml”  
under  
“lib/mylib” dir. Let’s imagine that depending on the environment it is  
stored  
(after installed) in:

/usr/local/lib/ruby1.9/gems/1.9/gems/mylib-1.0.1/lib/mylib/myfile.xml

But of course there could be different versions of the gem:

/usr/local/lib/ruby1.9/gems/1.9/gems/mylib-1.0.0/lib/mylib/myfile.xml  
/usr/local/lib/ruby1.9/gems/1.9/gems/mylib-1.0.1/lib/mylib/myfile.xml

Then I write a program which does:

require “mylib”

so the latest version (1.0.1) is loaded.

How would I get “myfile.xml” for the loaded “mylib” gem version? I’m  
looking  
for a Gem class method like “Gem.bin\_path(gemname)” but I cannot find  
it.

Thanks a lot.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [December 21, 2009, 12:54pm UTC](https://www.ruby-forum.com/t/how-to-get-a-file-contained-in-a-gem-lib-directory/180529/2 "2009-12-21T12:54:29Z")

</div>

El Lunes, 21 de Diciembre de 2009, IÃ±aki Baz C. escribiÃ³:

> Then I write a program which does:
> 
> require “mylib”
> 
> so the latest version (1.0.1) is loaded.
> 
> How would I get “myfile.xml” for the loaded “mylib” gem version? I’m  
> looking for a Gem class method like “Gem.bin\_path(gemname)” but I cannot  
> find it.

Found it:  
Gem.required\_location(gemname,"")

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [December 25, 2009, 8:00am UTC](https://www.ruby-forum.com/t/how-to-get-a-file-contained-in-a-gem-lib-directory/180529/3 "2009-12-25T08:00:06Z")

</div>

IÃ±aki Baz C. wrote:

> Hi, I’ve build a gem “mylib” which contains a file called “myfile.xml”  
> under  
> “lib/mylib” dir. Let’s imagine that depending on the environment it is  
> stored  
> (after installed) in:
> 
> /usr/local/lib/ruby1.9/gems/1.9/gems/mylib-1.0.1/lib/mylib/myfile.xml

[…]

> How would I get “myfile.xml” for the loaded “mylib” gem version?

You can put a method to return it in your mylib.rb:

def self.get\_xml\_pathname  
File.join(File.dirname( **FILE** ), ‘mylib.xml’)  
end
