@@ -15,41 +15,26 @@ def problems
1515 end
1616
1717 def determine_problems
18- problems = { }
19-
20- gems . each do |name , version |
18+ gems . flat_map do |name , version |
2119 next if ignore_gem? ( name )
2220 next if exclude_because_of_only_list? ( name )
2321
24- key = "#{ name } -#{ version } "
22+ key = "#{ name } -#{ version } -cache-bust-1 "
2523
2624 gem_problems = cache ( key ) do
2725 find_gem_problems ( name , version )
2826 end
2927
30- gem_problems = objectify ( gem_problems )
31-
32- problems [ key ] = gem_problems if gem_problems . any?
28+ objectify ( name , version , gem_problems )
3329 end
34-
35- puts problems
36-
37- problems
3830 end
3931
40- def objectify ( gem_problems )
41- gem_problems . flat_map do |filename , file_problems |
42- file_problems . map do |problem |
43- Problem . new (
44- gem_name : name ,
45- gem_version : version ,
46- type : problem [ :type ] ,
47- filename : filename ,
48- line_number : problem [ :line_number ] ,
49- code : problem [ :name ] . to_s ,
50- out_of_date : outdated_gems . include? ( name )
51- )
52- end
32+ def objectify ( name , version , gem_problems )
33+ gem_problems . map do |problem |
34+ problem . gem_name = name
35+ problem . gem_version = version
36+ problem . out_of_date = outdated_gems . include? ( name )
37+ problem
5338 end
5439 end
5540
@@ -74,19 +59,23 @@ def ignore_list
7459 @ignore_list ||= ProblematicVariableFinder . read_file ( File . expand_path ( 'DEFAULT_IGNORED_GEMS' , __dir__ ) ) . split ( "\n " ) . map ( &:strip )
7560 end
7661
77- def outdated_gems
62+ def outdated_gems
63+ byebug
7864 @outdated_gems ||= outdated . map { |o | o . gsub ( /\s +\* \s +/ , '' ) . split ( " " ) . first }
7965 end
8066
8167 def outdated
82- @outdated ||= cache ( 'BUNDLE_OUT_OF_DATE_INFO' ) do
83- `bundle outdated` . split ( "\n " ) . grep ( / \* / ) . reject do |s |
84- s [ 'development' ] ||
85- s [ 'test' ]
68+ @outdated ||= cache ( "BUNDLE_OUT_OF_DATE_INFO_#{ gemfile_lock_sha } " ) do
69+ `bundle outdated --group default --group production` . split ( "\n " ) . map do |s |
70+ s . split ( " " ) . map ( &:strip ) . first
8671 end
8772 end
8873 end
8974
75+ def gemfile_lock_sha
76+ Digest ::SHA1 . hexdigest ( ProblematicVariableFinder . read_file ( 'Gemfile.lock' ) )
77+ end
78+
9079 def find_gem_problems ( name , version )
9180 directory = "#{ gem_path } /#{ name } -#{ version } /"
9281 folder = gem_path + '/' + [ name , version ] . join ( '-' ) + '/'
0 commit comments