Advisories for ruby are stored under gem instead of rubygem
Problem description
When the exporter runs in the schedule we see that it always fails to export rubygems. Looks like it was never able to export any advisories for ruby. For example looking on the job on prod:
{"level":"info","app":"exporter","registry":"maven","time":"2023-06-12T07:02:33Z","message":"exporting records for registry updated since 2023-06-09 07:02:21 +0000 UTC"}
{"level":"info","app":"exporter","total records":0,"time":"2023-06-12T07:02:33Z","message":"finished exporting records"}
{"level":"info","app":"exporter","registry":"npm","time":"2023-06-12T07:02:34Z","message":"exporting records for registry updated since 2023-06-08 07:02:14 +0000 UTC"}
{"level":"info","app":"exporter","total records":0,"time":"2023-06-12T07:02:34Z","message":"finished exporting records"}
{"level":"info","app":"exporter","registry":"packagist","time":"2023-06-12T07:02:35Z","message":"exporting records for registry updated since 2023-06-08 07:02:16 +0000 UTC"}
{"level":"info","app":"exporter","total records":0,"time":"2023-06-12T07:02:35Z","message":"finished exporting records"}
{"level":"info","app":"exporter","registry":"pypi","time":"2023-06-12T07:02:37Z","message":"exporting records for registry updated since 2023-06-08 07:02:17 +0000 UTC"}
{"level":"info","app":"exporter","total records":0,"time":"2023-06-12T07:02:37Z","message":"finished exporting records"}
2023/06/12 07:02:38 cannot determine time of last export: no files present in v2/rubygem/. Use --export-all flag for initial export or --since flag for custom time
{"level":"info","app":"exporter","registry":"conan","time":"2023-06-12T07:02:39Z","message":"exporting records for registry updated since 2023-06-09 07:02:28 +0000 UTC"}
{"level":"info","app":"exporter","total records":0,"time":"2023-06-12T07:02:39Z","message":"finished exporting records"}
{"level":"info","app":"exporter","registry":"go","time":"2023-06-12T07:02:40Z","message":"exporting records for registry updated since 2023-06-08 07:02:22 +0000 UTC"}
{"level":"info","app":"exporter","total records":0,"time":"2023-06-12T07:02:40Z","message":"finished exporting records"}
{"level":"info","app":"exporter","registry":"nuget","time":"2023-06-12T07:02:41Z","message":"exporting records for registry updated since 2023-06-08 07:02:23 +0000 UTC"}
{"level":"info","app":"exporter","total records":0,"time":"2023-06-12T07:02:41Z","message":"finished exporting records"}
The problem is the following. Unlike with license exporting, where licenses and packages for ruby are stored in rubygem_component and rubygem_license, the advisories for ruby use gem, instead of rubygem as a package slug. This comes from the way we store ruby advisories in the Gitlab Advisory DB. All ruby advisories are stored in a folder named gem.
When fetching GLAD advisories from the database, we use the registry as if this was a package type of GLAD, in the package slug. See #415078 (comment 1435738082)
Edited by Fabien Catteau