@@ -253,7 +253,8 @@ class GemfileLockHandler(BaseGemProjectHandler):
253
253
def parse (cls , location ):
254
254
gemfile_lock = GemfileLockParser (location )
255
255
dependencies = []
256
- for _ , gem in gemfile_lock .all_gems .items ():
256
+ all_gems = list (gemfile_lock .all_gems .values ())
257
+ for gem in all_gems :
257
258
dependencies .append (
258
259
models .DependentPackage (
259
260
purl = PackageURL (
@@ -277,34 +278,35 @@ def parse(cls, location):
277
278
primary_language = cls .default_primary_language ,
278
279
)
279
280
280
- for _ , gem in gemfile_lock .all_gems .items ():
281
- deps = []
282
- for _dep_name , dep in gem .dependencies .items ():
283
- deps .append (
284
- models .DependentPackage (
285
- purl = PackageURL (
286
- type = 'gem' ,
287
- name = dep .name ,
288
- version = dep .version
289
- ).to_string (),
290
- extracted_requirement = ', ' .join (dep .requirements ),
291
- scope = 'dependencies' ,
292
- is_runtime = True ,
293
- is_optional = False ,
294
- is_resolved = True ,
295
- )
296
- )
297
- urls = get_urls (gem .name , gem .version )
298
-
299
- yield models .PackageData (
300
- datasource_id = cls .datasource_id ,
301
- primary_language = cls .default_primary_language ,
302
- type = cls .default_package_type ,
303
- name = gem .name ,
304
- version = gem .version ,
305
- dependencies = deps ,
306
- ** urls
307
- )
281
+ if not all_gems :
282
+ return
283
+
284
+ main_gem = all_gems [0 ]
285
+ deps = [
286
+ models .DependentPackage (
287
+ purl = PackageURL (
288
+ type = 'gem' ,
289
+ name = dep .name ,
290
+ version = dep .version
291
+ ).to_string (),
292
+ extracted_requirement = ', ' .join (dep .requirements ),
293
+ scope = 'dependencies' ,
294
+ is_runtime = True ,
295
+ is_optional = False ,
296
+ is_resolved = True ,
297
+ ) for dep in main_gem .dependencies .values ()
298
+ ]
299
+ urls = get_urls (main_gem .name , main_gem .version )
300
+
301
+ yield models .PackageData (
302
+ datasource_id = cls .datasource_id ,
303
+ primary_language = cls .default_primary_language ,
304
+ type = cls .default_package_type ,
305
+ name = main_gem .name ,
306
+ version = main_gem .version ,
307
+ dependencies = deps ,
308
+ ** urls
309
+ )
308
310
309
311
310
312
class GemfileLockInExtractedGemHandler (GemfileLockHandler ):
0 commit comments