class GemMonitor::Extractor
Attributes
gem_objects[RW]
gemfile_content[RW]
gemfile_lock_content[RW]
Public Class Methods
new(args = {})
click to toggle source
# File lib/gem_monitor/extractor.rb, line 5 def initialize args = {} self.gem_objects = [] end
Public Instance Methods
extract_project_gem_objects()
click to toggle source
# File lib/gem_monitor/extractor.rb, line 17 def extract_project_gem_objects extract_and_create_gems_objects gem_objects end
Private Instance Methods
extract_and_create_gems_objects()
click to toggle source
# File lib/gem_monitor/extractor.rb, line 36 def extract_and_create_gems_objects gem_names_from_gemfile = project_gems_names raise_project_gems_error if gem_names_from_gemfile.empty? gem_names_from_gemfile.each do |project_gem_name| gem_object = GemObject.new(name: project_gem_name, project_version: extract_gem_version_for(project_gem_name)) gem_object.latest_version self.gem_objects.push gem_object end end
extract_gem_version_for(gem_name)
click to toggle source
# File lib/gem_monitor/extractor.rb, line 50 def extract_gem_version_for gem_name raw_gem_version = gemfile_lock_content.scan(/\s{2}#{gem_name} \(\S*\)/).join raw_gem_version.scan(/\(\S*\)/).join.gsub("(", "").gsub(")", "") end
project_gems_names()
click to toggle source
# File lib/gem_monitor/extractor.rb, line 32 def project_gems_names (read_gemfile.scan(/^\s*gem "(.*?)"/) + read_gemfile.scan(/^\s*gem '(.*?)'/)).flatten end
raise_project_gems_error()
click to toggle source
# File lib/gem_monitor/extractor.rb, line 46 def raise_project_gems_error raise GemMonitor::Error.new("Could not extract gem names from your Gemfile, please submit an issue on #{GemMonitor.issues_url} along with your gemfile for the team to address the issue.") end
read_gemfile()
click to toggle source
# File lib/gem_monitor/extractor.rb, line 24 def read_gemfile GemMonitor::Reader.new(file_path: GemMonitor.configuration.gemfile_path).read end
read_gemfile_lock()
click to toggle source
# File lib/gem_monitor/extractor.rb, line 28 def read_gemfile_lock GemMonitor::Reader.new(file_path: GemMonitor.configuration.gemfile_lock_path).read end