Table of Contents

Scope

This gem is aimed to list recursively the runtime dependencies footprint of the specified gem.

Alternatives

Some alternatives exists:

gem dep

The standard gem dep command just unearth one level of dependencies.

bundle viz

The bundle viz command relies on the Gemfile and the graphviz library to generate a visual representation of the gem inter-dependencies.
While it is great to visualize inter-dependencies, i have hard times figuring out gem's runtime footprint.

Usage

The library relies on the Gem::Commands::DependencyCommand class (the one invoked by the gem dep command line), invoking it recursively to deeply fetch dependencies.

Warning

Consider only the gems installed on your system are scanned for their own dependencies, no remote fetching is performed.

Unique dependencies

The command outcome includes all of the unique (by name) nested runtime dependencies:

$ lapidarius --gem=grape

grape (0.17.0)              20
------------------------------
activesupport (>= 0)
builder (>= 0)
hashie (>= 2.1.0)
multi_json (>= 1.3.2)
multi_xml (>= 0.5.2)
mustermann19 (~> 0.4.3)
rack (>= 1.3.0)
rack-accept (>= 0)
virtus (>= 1.0.0)
concurrent-ruby (>= 1.0.2, ~> 1.0)
i18n (~> 0.7)
minitest (~> 5.1)
tzinfo (~> 1.1)
thread_safe (~> 0.1)
enumerable-lazy (>= 0)
axiom-types (~> 0.1)
coercible (~> 1.0)
descendants_tracker (>= 0.0.3, ~> 0.0)
equalizer (>= 0.0.9, ~> 0.0)
ice_nine (~> 0.11.0)

Recursive print

To print dependencies hierarchy recursively, provide the --recursive flag. Duplicates are not counted:

$ lapidarius --gem=sinatra --recursive

sinatra (1.4.7)              3
------------------------------
rack (~> 1.5)
rack-protection (~> 1.4)
  rack (>= 0)
tilt (< 3, >= 1.3)