How do I find out which gem has a specific dependency?

Ruby on-RailsRubyGemBundler

Ruby on-Rails Problem Overview


I commented out a gem, but 'bundle install' still won't run. How do I find out which gem has a dependency on sys-proctable?

$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Could not find sys-proctable-0.9.2 in any of the sources

$ grep proctable Gemfile
  #gem 'sys-proctable', '0.9.2', :path => "vendor/gems"

$ bundle list
Resolving dependencies...
Could not find gem 'rspec-rails (= 2.11.0) ruby' in the gems available on this machine.

$ bundle viz
Resolving dependencies...
Could not find gem 'rspec-rails (= 2.11.0) ruby' in the gems available on this machine.

$ bundle -v
Bundler version 1.3.0

$ ruby -v
ruby 1.9.3p385 (2013-02-06 revision 39114) [i386-cygwin]

Gemfile: http://pastebin.com/9WWMfKtv

I've already tried these troubleshooting steps: https://github.com/carlhuda/bundler/blob/1-2-stable/ISSUES.md

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

In the bash shell you can do:

gem dependency name_of_the_gem --reverse-dependencies

For instance:

$ gem dependency activesupport --reverse-dependencies                        
Gem activesupport-2.3.14
Used by
actionpack-2.3.14 (activesupport (= 2.3.14))
activerecord-2.3.14 (activesupport (= 2.3.14))
activeresource-2.3.14 (activesupport (= 2.3.14))

Solution 2 - Ruby on-Rails

I know this answer includes a link, but this is not a link specific answer

You can always check the reverse dependencies of a gem on rubygems.org. There's a link on the right side panel on the website.

enter image description here

Or you can visit the site

> https://rubygems.org/gems/{gem_name}/reverse_dependencies

So, in your case

https://rubygems.org/gems/sys-proctable/reverse_dependencies

Solution 3 - Ruby on-Rails

> How do I find out which gem has a dependency on sys-proctable?

Try the bundler-why plugin (inspired by yarn why)

bundler plugin install bundler-why
bundle why tzinfo
# ransack -> activesupport -> tzinfo
# rspec-rails -> activesupport -> tzinfo
# business_time -> tzinfo

gem dependency --reverse-dependencies will traverse a single edge of the paths. In comparison, bundle why will traverse all edges.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChloeView Question on Stackoverflow
Solution 1 - Ruby on-RailsfmendezView Answer on Stackoverflow
Solution 2 - Ruby on-RailsDeepak MahakaleView Answer on Stackoverflow
Solution 3 - Ruby on-RailsJared BeckView Answer on Stackoverflow