class Blondie::Checker
Attributes
urls[R]
Public Class Methods
new(urls)
click to toggle source
# File lib/blondie/checker.rb, line 11 def initialize(urls) @urls = urls @extensions = [] @gems_with_extensions = [] end
Public Instance Methods
extensions()
click to toggle source
# File lib/blondie/checker.rb, line 22 def extensions find_extensions if @extensions.empty? @extensions end
gems_with_extensions()
click to toggle source
# File lib/blondie/checker.rb, line 17 def gems_with_extensions find_extensions if @gems_with_extensions.empty? @gems_with_extensions end
Private Instance Methods
check_metadata(metadata, gem_name)
click to toggle source
# File lib/blondie/checker.rb, line 43 def check_metadata(metadata, gem_name) c_extensions = Zlib::GzipReader.open(metadata) do |gz| YAML.load(gz.read) end.extensions if !c_extensions.empty? @extensions += c_extensions @gems_with_extensions << gem_name end end
create_tempfile(url, directory, filename)
click to toggle source
# File lib/blondie/checker.rb, line 54 def create_tempfile(url, directory, filename) File.open("#{directory}/#{filename}", "w") do |f| f.write(URI.open(url).read) end end
find_extensions()
click to toggle source
# File lib/blondie/checker.rb, line 29 def find_extensions Dir.mktmpdir do |directory| urls.each do |gem_name, url| filename = url.split("/").last create_tempfile(url, directory, filename) Minitar.unpack("#{directory}/#{filename}", "#{directory}/gem_tar") metadata = "#{directory}/gem_tar/metadata.gz" check_metadata(metadata, gem_name) end end end