# How to test if a module/gem is installed

**URL:** <https://www.ruby-forum.com/t/how-to-test-if-a-module-gem-is-installed/73138>\
**Category:** Ruby\
**Created:** [October 21, 2006, 11:24pm UTC](https://www.ruby-forum.com/t/how-to-test-if-a-module-gem-is-installed/73138 "2006-10-21T23:24:23Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [October 21, 2006, 11:24pm UTC](https://www.ruby-forum.com/t/how-to-test-if-a-module-gem-is-installed/73138/1 "2006-10-21T23:24:23Z")

</div>

Is there a way to test if a particular module/extension/gem is  
installed on the system ruby is running on?

Chris

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [October 21, 2006, 11:56pm UTC](https://www.ruby-forum.com/t/how-to-test-if-a-module-gem-is-installed/73138/2 "2006-10-21T23:56:48Z")

</div>

I wrote this extension for that. Not sure how robust it is though.

module Gem

```
def self.active?(gemname)
  @loaded_specs ||= Hash.new
  @loaded_specs.key? gemname
end

```

end

T.

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [October 22, 2006, 1:19am UTC](https://www.ruby-forum.com/t/how-to-test-if-a-module-gem-is-installed/73138/3 "2006-10-22T01:19:14Z")

</div>

On 21 Oct 2006, at 22:23, snacktime wrote:

> Is there a way to test if a particular module/extension/gem is  
> installed on the system ruby is running on?

If you know the library name for a require statement, use require and  
trap the LoadError? Returns true if the require succeeds.

Paul

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [October 22, 2006, 3:57pm UTC](https://www.ruby-forum.com/t/how-to-test-if-a-module-gem-is-installed/73138/4 "2006-10-22T15:57:37Z")

</div>

you can find all the installed gems with a version of this;

def find\_my\_gem(name)  
spec\_dir = File.join(Gem.dir, “specifications”)  
gems = Gem::SourceIndex.from\_installed\_gems(spec\_dir)  
gems.each {|path, gem| return true if name == gem.name}  
return false  
end

this is a bit of a hack together, but gives you the basic idea.

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [October 22, 2006, 3:59pm UTC](https://www.ruby-forum.com/t/how-to-test-if-a-module-gem-is-installed/73138/5 "2006-10-22T15:59:38Z")

</div>

probably need brackets around trun in the return(true)

---

<div class="post-metadata">

**Author:** ![snacktime](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@snacktime](https://www.ruby-forum.com/u/snacktime)\
**Post date:** [October 22, 2006, 10:19pm UTC](https://www.ruby-forum.com/t/how-to-test-if-a-module-gem-is-installed/73138/6 "2006-10-22T22:19:10Z")

</div>

Thanks for all the tips guys, was a great help.
