Skip to content

Instantly share code, notes, and snippets.

@granolocks
Created January 17, 2017 15:18
Show Gist options
  • Select an option

  • Save granolocks/c1953581cfc1bfdcab5a0d458710029c to your computer and use it in GitHub Desktop.

Select an option

Save granolocks/c1953581cfc1bfdcab5a0d458710029c to your computer and use it in GitHub Desktop.
print locally installed rubygems
require 'rubygems'
data = Gem::Specification.map do |gemspec|
{
name: gemspec.name,
version: "'#{gemspec.version.to_s}'",
license: gemspec.license,
homepage: gemspec.homepage,
source: "Gem::Specification.each"
}
end
csv = data.first.keys.join(",")+"\n"+data.map{|d| d.values.join(",")}.join("\n")+"\n"
File.write('enum_gems.csv', csv)
@kilteer

kilteer commented Jan 17, 2017

Copy link
Copy Markdown

Here is the updated version after my tweaks:

require 'rubygems'
require 'socket'

data = Gem::Specification.map do |gemspec|
  {
    name: gemspec.name,
    version: "'#{gemspec.version.to_s}'",
    license: gemspec.license,
    homepage: gemspec.homepage,
    source: "Gem::Specification.each"
  }
end

csv = data.first.keys.join(",")+"\n"+data.map{|d| d.values.join(",")}.join("\n")+"\n"

File.open('enum_gems.csv', 'a') do |f| f.puts(Socket.gethostname, csv)
end

The source line does not work though.

Here are the commands that I ran to execute it:
On the server (to loop through containers):

for i in docker ps|awk '{print $NF}'|egrep -v "NAMES|registry|[2-5]"; do docker exec -it $i /bin/bash; done

Then paste this for each container:

cd /assets;ruby ./rubygems-local-to-csv.rb;exit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment