tag:help.rubygems.org,2010-01-19:/discussions/questions/9154-get-all-dependencies-of-a-specific-version-of-a-gemRubyGems.org: Discussion 2015-07-06T14:25:28Ztag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T08:36:14Z2015-07-06T08:36:14ZGet all dependencies of a specific version of a Gem<div><p>Hi Gauthier,</p>
<p>Can I ask how frequently you need to do this? Maybe a better
suited option would be to use data dumps, which you can find here:
<a href="https://rubygems.org/pages/data">https://rubygems.org/pages/data</a></p>
<p>These are weekly, of course, but if it's not enough there are
other ways we can explore.</p></div>André Medeirostag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T08:57:09Z2015-07-06T08:57:10ZGet all dependencies of a specific version of a Gem<div><p>Hi,</p>
<p>To explain a little what is to be done, I'll parse Gemfiles and
retrieve all version of each gems and from this, create a
dependency tree for all versions of, for example, Rails.</p>
<p>We have a core that makes requests on the ruby crawler (their is
multiple languages and package managers managed) to get information
about a gem. After that, the crawler does a series of request for
each of the gem' dependencies (the first to recover all versions of
the dependance and then, for each version, get information and
dependencies, ...).</p>
<p>We use the JSON format now (I read the file, and I return a new
JSON file with the desired information). Keeping this format would
be easier for us.</p></div>Gauthier P.tag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T09:00:37Z2015-07-06T09:00:37ZGet all dependencies of a specific version of a Gem<div><p>Could <a href="http://production.cf.rubygems.org/specs.4.8.gz">http://production.cf.rubygems.org/specs.4.8.gz</a>
give you what you need as a baseline for all versions of a gem?</p></div>André Medeirostag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T09:52:15Z2015-07-06T09:52:16ZGet all dependencies of a specific version of a Gem<div><p>What's exactly this file ? (I can't open it).</p>
<p>To illustrate our application and way of working, I just pushed
a version of our crawler.<br>
This is the json for all versions of a gem : <a href="http://app-5b1cd150-249e-487e-880b-6582cbfa8bea.cleverapps.io/projects//rails">
http://app-5b1cd150-249e-487e-880b-6582cbfa8bea.cleverapps.io/proje...</a><br>
For that, all is okay.</p>
<p>For a specific version, this is the result : <a href="http://app-5b1cd150-249e-487e-880b-6582cbfa8bea.cleverapps.io/projects//rails/version">
http://app-5b1cd150-249e-487e-880b-6582cbfa8bea.cleverapps.io/proje...</a><br>
I want to replace "version" by the number, but actually, it's not
possible because rubygems only provide info for the last version
(currently, the request is : "<a href="https://rubygems.org/api/v1/gems/#{params[:gem]}.json&quot">https://rubygems.org/api/v1/gems/#{params[:gem]}.json&quot</a>;.</p>
<p>I saw that on the website it's possible to have the same result
but for previous versions (like <a href="https://rubygems.org/gems/rails/versions/4.1.0">https://rubygems.org/gems/rails/versions/4.1.0</a>).
I think that it would not be too hard to add to the API the version
management. Do you plan to do it ? Or maybe can I help to do it ?
I'm a beginner in ruby but ...</p></div>Gauthier P.tag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T10:32:11Z2015-07-06T10:32:11ZGet all dependencies of a specific version of a Gem<div><p>OK, this is super simple.</p>
<pre>
<code>~/Source/sandbox
❯ curl -O http://production.cf.rubygems.org/specs.4.8.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2392k 100 2392k 0 0 1912k 0 0:00:01 0:00:01 --:--:-- 1912k
~/Source/sandbox
❯ gunzip specs.4.8.gz
~/Source/sandbox
❯ irb
irb(main):001:0> specs = Marshal.load(File.read('specs.4.8')); nil
=> nil
irb(main):002:0> rails = specs.select { |s| s.first == 'rails' }
=> [["rails", #<Gem::Version "0.8.0">, "ruby"], ["rails", #<Gem::Version "0.8.5">, "ruby"], ["rails", #<Gem::Version "0.9.0">, "ruby"], ["rails", #<Gem::Version "0.9.1">, "ruby"], ["rails", #<Gem::Version "0.9.2">, "ruby"], ["rails", #<Gem::Version "0.9.3">, "ruby"], ["rails", #<Gem::Version "0.9.4">, "ruby"], ["rails", #<Gem::Version "0.9.4.1">, "ruby"], ["rails", #<Gem::Version "0.9.5">, "ruby"], ["rails", #<Gem::Version "0.10.0">, "ruby"], ["rails", #<Gem::Version "0.10.1">, "ruby"], ["rails", #<Gem::Version "0.11.0">, "ruby"], ["rails", #<Gem::Version "0.11.1">, "ruby"], ["rails", #<Gem::Version "0.12.0">, "ruby"], ["rails", #<Gem::Version "0.12.1">, "ruby"], ["rails", #<Gem::Version "0.13.0">, "ruby"], ["rails", #<Gem::Version "0.13.1">, "ruby"], ["rails", #<Gem::Version "0.14.1">, "ruby"], ["rails", #<Gem::Version "0.14.2">, "ruby"], ["rails", #<Gem::Version "0.14.3">, "ruby"], ["rails", #<Gem::Version "0.14.4">, "ruby"], ["rails", #<Gem::Version "1.0.0">, "ruby"], ["rails", #<Gem::Version "1.1.0">, "ruby"], ["rails", #<Gem::Version "1.1.1">, "ruby"], ["rails", #<Gem::Version "1.1.2">, "ruby"], ["rails", #<Gem::Version "1.1.3">, "ruby"], ["rails", #<Gem::Version "1.1.4">, "ruby"], ["rails", #<Gem::Version "1.1.5">, "ruby"], ["rails", #<Gem::Version "1.1.6">, "ruby"], ["rails", #<Gem::Version "1.2.0">, "ruby"], ["rails", #<Gem::Version "1.2.1">, "ruby"], ["rails", #<Gem::Version "1.2.2">, "ruby"], ["rails", #<Gem::Version "1.2.3">, "ruby"], ["rails", #<Gem::Version "1.2.4">, "ruby"], ["rails", #<Gem::Version "1.2.5">, "ruby"], ["rails", #<Gem::Version "1.2.6">, "ruby"], ["rails", #<Gem::Version "2.0.0">, "ruby"], ["rails", #<Gem::Version "2.0.1">, "ruby"], ["rails", #<Gem::Version "2.0.2">, "ruby"], ["rails", #<Gem::Version "2.0.4">, "ruby"], ["rails", #<Gem::Version "2.0.5">, "ruby"], ["rails", #<Gem::Version "2.1.0">, "ruby"], ["rails", #<Gem::Version "2.1.1">, "ruby"], ["rails", #<Gem::Version "2.1.2">, "ruby"], ["rails", #<Gem::Version "2.2.2">, "ruby"], ["rails", #<Gem::Version "2.2.3">, "ruby"], ["rails", #<Gem::Version "2.3.2">, "ruby"], ["rails", #<Gem::Version "2.3.3">, "ruby"], ["rails", #<Gem::Version "2.3.4">, "ruby"], ["rails", #<Gem::Version "2.3.5">, "ruby"], ["rails", #<Gem::Version "2.3.6">, "ruby"], ["rails", #<Gem::Version "2.3.7">, "ruby"], ["rails", #<Gem::Version "2.3.8">, "ruby"], ["rails", #<Gem::Version "2.3.9">, "ruby"], ["rails", #<Gem::Version "2.3.10">, "ruby"], ["rails", #<Gem::Version "2.3.11">, "ruby"], ["rails", #<Gem::Version "2.3.12">, "ruby"], ["rails", #<Gem::Version "2.3.14">, "ruby"], ["rails", #<Gem::Version "2.3.15">, "ruby"], ["rails", #<Gem::Version "2.3.16">, "ruby"], ["rails", #<Gem::Version "2.3.17">, "ruby"], ["rails", #<Gem::Version "2.3.18">, "ruby"], ["rails", #<Gem::Version "3.0.0">, "ruby"], ["rails", #<Gem::Version "3.0.1">, "ruby"], ["rails", #<Gem::Version "3.0.2">, "ruby"], ["rails", #<Gem::Version "3.0.3">, "ruby"], ["rails", #<Gem::Version "3.0.4">, "ruby"], ["rails", #<Gem::Version "3.0.5">, "ruby"], ["rails", #<Gem::Version "3.0.6">, "ruby"], ["rails", #<Gem::Version "3.0.7">, "ruby"], ["rails", #<Gem::Version "3.0.8">, "ruby"], ["rails", #<Gem::Version "3.0.9">, "ruby"], ["rails", #<Gem::Version "3.0.10">, "ruby"], ["rails", #<Gem::Version "3.0.11">, "ruby"], ["rails", #<Gem::Version "3.0.12">, "ruby"], ["rails", #<Gem::Version "3.0.13">, "ruby"], ["rails", #<Gem::Version "3.0.14">, "ruby"], ["rails", #<Gem::Version "3.0.15">, "ruby"], ["rails", #<Gem::Version "3.0.16">, "ruby"], ["rails", #<Gem::Version "3.0.17">, "ruby"], ["rails", #<Gem::Version "3.0.18">, "ruby"], ["rails", #<Gem::Version "3.0.19">, "ruby"], ["rails", #<Gem::Version "3.0.20">, "ruby"], ["rails", #<Gem::Version "3.1.0">, "ruby"], ["rails", #<Gem::Version "3.1.1">, "ruby"], ["rails", #<Gem::Version "3.1.2">, "ruby"], ["rails", #<Gem::Version "3.1.3">, "ruby"], ["rails", #<Gem::Version "3.1.4">, "ruby"], ["rails", #<Gem::Version "3.1.5">, "ruby"], ["rails", #<Gem::Version "3.1.6">, "ruby"], ["rails", #<Gem::Version "3.1.7">, "ruby"], ["rails", #<Gem::Version "3.1.8">, "ruby"], ["rails", #<Gem::Version "3.1.9">, "ruby"], ["rails", #<Gem::Version "3.1.10">, "ruby"], ["rails", #<Gem::Version "3.1.11">, "ruby"], ["rails", #<Gem::Version "3.1.12">, "ruby"], ["rails", #<Gem::Version "3.2.0">, "ruby"], ["rails", #<Gem::Version "3.2.1">, "ruby"], ["rails", #<Gem::Version "3.2.2">, "ruby"], ["rails", #<Gem::Version "3.2.3">, "ruby"], ["rails", #<Gem::Version "3.2.4">, "ruby"], ["rails", #<Gem::Version "3.2.5">, "ruby"], ["rails", #<Gem::Version "3.2.6">, "ruby"], ["rails", #<Gem::Version "3.2.7">, "ruby"], ["rails", #<Gem::Version "3.2.8">, "ruby"], ["rails", #<Gem::Version "3.2.9">, "ruby"], ["rails", #<Gem::Version "3.2.10">, "ruby"], ["rails", #<Gem::Version "3.2.11">, "ruby"], ["rails", #<Gem::Version "3.2.12">, "ruby"], ["rails", #<Gem::Version "3.2.13">, "ruby"], ["rails", #<Gem::Version "3.2.14">, "ruby"], ["rails", #<Gem::Version "3.2.15">, "ruby"], ["rails", #<Gem::Version "3.2.16">, "ruby"], ["rails", #<Gem::Version "3.2.17">, "ruby"], ["rails", #<Gem::Version "3.2.18">, "ruby"], ["rails", #<Gem::Version "3.2.19">, "ruby"], ["rails", #<Gem::Version "3.2.20">, "ruby"], ["rails", #<Gem::Version "3.2.21">, "ruby"], ["rails", #<Gem::Version "3.2.22">, "ruby"], ["rails", #<Gem::Version "4.0.0">, "ruby"], ["rails", #<Gem::Version "4.0.1">, "ruby"], ["rails", #<Gem::Version "4.0.2">, "ruby"], ["rails", #<Gem::Version "4.0.3">, "ruby"], ["rails", #<Gem::Version "4.0.4">, "ruby"], ["rails", #<Gem::Version "4.0.5">, "ruby"], ["rails", #<Gem::Version "4.0.6">, "ruby"], ["rails", #<Gem::Version "4.0.7">, "ruby"], ["rails", #<Gem::Version "4.0.8">, "ruby"], ["rails", #<Gem::Version "4.0.9">, "ruby"], ["rails", #<Gem::Version "4.0.10">, "ruby"], ["rails", #<Gem::Version "4.0.11">, "ruby"], ["rails", #<Gem::Version "4.0.11.1">, "ruby"], ["rails", #<Gem::Version "4.0.12">, "ruby"], ["rails", #<Gem::Version "4.0.13">, "ruby"], ["rails", #<Gem::Version "4.1.0">, "ruby"], ["rails", #<Gem::Version "4.1.1">, "ruby"], ["rails", #<Gem::Version "4.1.2">, "ruby"], ["rails", #<Gem::Version "4.1.3">, "ruby"], ["rails", #<Gem::Version "4.1.4">, "ruby"], ["rails", #<Gem::Version "4.1.5">, "ruby"], ["rails", #<Gem::Version "4.1.6">, "ruby"], ["rails", #<Gem::Version "4.1.7">, "ruby"], ["rails", #<Gem::Version "4.1.7.1">, "ruby"], ["rails", #<Gem::Version "4.1.8">, "ruby"], ["rails", #<Gem::Version "4.1.9">, "ruby"], ["rails", #<Gem::Version "4.1.10">, "ruby"], ["rails", #<Gem::Version "4.1.11">, "ruby"], ["rails", #<Gem::Version "4.1.12">, "ruby"], ["rails", #<Gem::Version "4.2.0">, "ruby"], ["rails", #<Gem::Version "4.2.1">, "ruby"], ["rails", #<Gem::Version "4.2.2">, "ruby"], ["rails", #<Gem::Version "4.2.3">, "ruby"]]</code>
</pre>
<p>I think this gives you what you need, right?</p></div>André Medeirostag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T11:28:40Z2015-07-06T11:28:41ZGet all dependencies of a specific version of a Gem<div><p>Maybe i just bad understand, but what you gave me list only
major version of the specified gem (here, rails). The first url I
gave in the previous message already do that (you can change the
name of the gem in the URL, it'll list all version of the gem).
Now, I need the dependencies of a specific version. For example,
for Rails 4.2.3, the dependencies are :</p>
<p>actionmailer = 4.2.3<br>
actionpack = 4.2.3<br>
actionview = 4.2.3<br>
activejob = 4.2.3<br>
activemodel = 4.2.3<br>
activerecord = 4.2.3<br>
activesupport = 4.2.3<br>
bundler < 2.0, >= 1.3.0<br>
railties = 4.2.3<br>
sprockets-rails >= 0</p>
<p>I can get all dependencies with the api/v1/gems/rails.json url,
but it only for the last version. I can't do
api/v1/gems/rails-4.0.0.json for example, and it's what i need :
the dependencies of a specific version of the gem.</p></div>Gauthier P.tag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T14:12:36Z2015-07-06T14:12:36ZGet all dependencies of a specific version of a Gem<div><p>Ah now I see.</p>
<p>This is what you want: <a href="https://api.rubygems.org/api/v1/dependencies.json?gems=rails">https://api.rubygems.org/api/v1/dependencies.json?gems=rails</a></p></div>André Medeirostag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T14:20:38Z2015-07-06T14:20:39ZGet all dependencies of a specific version of a Gem<div><p>Yeah, I just found that and added it to the application. Well,
it take a lot of data for nothing (because it get all dependencies
for all version in one request) but it's okay.</p>
<p>Thank you for your help !</p></div>Gauthier P.tag:help.rubygems.org,2010-01-19:Comment/373058852015-07-06T14:25:27Z2015-07-06T14:25:27ZGet all dependencies of a specific version of a Gem<div><p>You're welcome. Good luck!</p></div>André Medeiros