def METHOD_NAME(self, path) -> List[AdvisoryData]:
    record = load_yaml(path)
    package_name = record.get("gem")
    if not package_name:
        return
    if "cve" in record:
        cve_id = "CVE-{}".format(record["cve"])
    else:
        return
    publish_time = parse(record["date"]).replace(tzinfo=UTC)
    safe_version_ranges = record.get("patched_versions", [])
    # this case happens when the advisory contain only 'patched_versions' field
    # and it has value None(i.e it is empty :( ).
    if not safe_version_ranges:
        safe_version_ranges = []
    safe_version_ranges += record.get("unaffected_versions", [])
    safe_version_ranges = [i for i in safe_version_ranges if i]
    if not getattr(self, "pkg_manager_api", None):
        self.pkg_manager_api = RubyVersionAPI()
    all_vers = self.pkg_manager_api.get(package_name, until=publish_time).valid_versions
    safe_versions, affected_versions = self.categorize_versions(all_vers, safe_version_ranges)
    impacted_purls = [
        PackageURL(
            name=package_name,
            type="gem",
            version=version,
        )
        for version in affected_versions
    ]
    resolved_purls = [
        PackageURL(
            name=package_name,
            type="gem",
            version=version,
        )
        for version in safe_versions
    ]
    references = []
    if record.get("url"):
        references.append(Reference(url=record.get("url")))
    return AdvisoryData(
        summary=record.get("description", ""),
        affected_packages=nearest_patched_package(impacted_purls, resolved_purls),
        references=references,
        vulnerability_id=cve_id,
    )