@@ -55,8 +55,7 @@ def initialize(
5555
5656 super ( )
5757
58- @loader = T . let ( nil , T . nilable ( Runtime ::Loader ) )
59- @bundle = T . let ( nil , T . nilable ( Gemfile ) )
58+ @bundle = T . let ( Gemfile . new ( exclude ) , Gemfile )
6059 @existing_rbis = T . let ( nil , T . nilable ( T ::Hash [ String , String ] ) )
6160 @expected_rbis = T . let ( nil , T . nilable ( T ::Hash [ String , String ] ) )
6261 @include_doc = T . let ( include_doc , T ::Boolean )
@@ -66,7 +65,12 @@ def initialize(
6665
6766 sig { override . void }
6867 def execute
69- require_gem_file
68+ Loaders ::Gem . load_application (
69+ bundle : @bundle ,
70+ prerequire : @prerequire ,
71+ postrequire : @postrequire ,
72+ default_command : default_command ( :require ) ,
73+ )
7074
7175 gem_queue = gems_to_generate ( @gem_names ) . reject { |gem | @exclude . include? ( gem . name ) }
7276 anything_done = [
@@ -87,7 +91,7 @@ def execute
8791 gem_dir : @outpath . to_s ,
8892 dsl_dir : @dsl_dir ,
8993 auto_strictness : @auto_strictness ,
90- gems : bundle . dependencies
94+ gems : @ bundle. dependencies
9195 )
9296
9397 say ( "All operations performed in working directory." , [ :green , :bold ] )
@@ -117,7 +121,7 @@ def sync(should_verify: false, exclude: [])
117121 gem_dir : @outpath . to_s ,
118122 dsl_dir : @dsl_dir ,
119123 auto_strictness : @auto_strictness ,
120- gems : bundle . dependencies
124+ gems : @ bundle. dependencies
121125 )
122126
123127 say ( "All operations performed in working directory." , [ :green , :bold ] )
@@ -131,42 +135,12 @@ def sync(should_verify: false, exclude: [])
131135
132136 private
133137
134- sig { returns ( Runtime ::Loader ) }
135- def loader
136- @loader ||= Runtime ::Loader . new
137- end
138-
139- sig { returns ( Gemfile ) }
140- def bundle
141- @bundle ||= Gemfile . new ( @exclude )
142- end
143-
144- sig { void }
145- def require_gem_file
146- say ( "Requiring all gems to prepare for compiling... " )
147- begin
148- loader . load_bundle ( bundle , @prerequire , @postrequire )
149- rescue LoadError => e
150- explain_failed_require ( @postrequire , e )
151- exit ( 1 )
152- end
153-
154- Runtime ::Trackers ::Autoload . eager_load_all!
155-
156- say ( " Done" , :green )
157- unless bundle . missing_specs . empty?
158- say ( " completed with missing specs: " )
159- say ( bundle . missing_specs . join ( ", " ) , :yellow )
160- end
161- puts
162- end
163-
164138 sig { params ( gem_names : T ::Array [ String ] ) . returns ( T ::Array [ Gemfile ::GemSpec ] ) }
165139 def gems_to_generate ( gem_names )
166- return bundle . dependencies if gem_names . empty?
140+ return @ bundle. dependencies if gem_names . empty?
167141
168142 gem_names . map do |gem_name |
169- gem = bundle . gem ( gem_name )
143+ gem = @ bundle. gem ( gem_name )
170144 if gem . nil?
171145 say ( "Error: Cannot find gem '#{ gem_name } '" , :red )
172146 exit ( 1 )
@@ -263,7 +237,12 @@ def perform_additions
263237 if gems . empty?
264238 say ( "Nothing to do." )
265239 else
266- require_gem_file
240+ Loaders ::Gem . load_application (
241+ bundle : @bundle ,
242+ prerequire : @prerequire ,
243+ postrequire : @postrequire ,
244+ default_command : default_command ( :require ) ,
245+ )
267246
268247 Executor . new ( gems , number_of_workers : @number_of_workers ) . run_in_parallel do |gem_name |
269248 filename = expected_rbi ( gem_name )
@@ -273,7 +252,7 @@ def perform_additions
273252 move ( old_filename , filename ) unless old_filename == filename
274253 end
275254
276- gem = T . must ( bundle . gem ( gem_name ) )
255+ gem = T . must ( @ bundle. gem ( gem_name ) )
277256 compile_gem_rbi ( gem )
278257 puts
279258 end
@@ -287,17 +266,6 @@ def perform_additions
287266 anything_done
288267 end
289268
290- sig { params ( file : String , error : LoadError ) . void }
291- def explain_failed_require ( file , error )
292- say_error ( "\n \n LoadError: #{ error } " , :bold , :red )
293- say_error ( "\n Tapioca could not load all the gems required by your application." , :yellow )
294- say_error ( "If you populated " , :yellow )
295- say_error ( "#{ file } " , :bold , :blue )
296- say_error ( "with " , :yellow )
297- say_error ( "`#{ default_command ( :require ) } `" , :bold , :blue )
298- say_error ( "you should probably review it and remove the faulty line." , :yellow )
299- end
300-
301269 sig { returns ( T ::Array [ String ] ) }
302270 def removed_rbis
303271 ( existing_rbis . keys - expected_rbis . keys ) . sort
@@ -359,7 +327,7 @@ def existing_rbis
359327
360328 sig { returns ( T ::Hash [ String , String ] ) }
361329 def expected_rbis
362- @expected_rbis ||= bundle . dependencies
330+ @expected_rbis ||= @ bundle. dependencies
363331 . reject { |gem | @exclude . include? ( gem . name ) }
364332 . to_h { |gem | [ gem . name , gem . version . to_s ] }
365333 end
0 commit comments