We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Spider rubios is broken
During the global build at 2021-05-26-14-42-23, spider **rubios** failed with **0 features** and **0 errors**.

Here's [the log](https://data.alltheplaces.xyz/runs/2021-05-26-14-42-23/logs/rubios.log) and [the output](https://data.alltheplaces.xyz/runs/2021-05-26-14-42-23/output/rubios.geojson) ([on a map](https://data.alltheplaces.xyz/map.html?show=https://data.alltheplaces.xyz/runs/2021-05-26-14-42-23/output/rubios.geojson))

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `locations/spiders/rubios.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 import scrapy
3 import re
4 
5 from locations.items import GeojsonPointItem
6 
7 
8 class RubiosSpider(scrapy.Spider):
9     name = "rubios"
10     item_attributes = { 'brand': "Rubio's" }
11     allowed_domains = ['rubios.com']
12     start_urls = (
13         'https://www.rubios.com/sitemap.xml',
14     )
15 
16     def parse(self, response):
17         response.selector.remove_namespaces()
18         city_urls = response.xpath('//url/loc/text()').extract()
19         regex = re.compile(r'http\S+rubios.com/store-locations/\S+/\S+/\S+')
20         for path in city_urls:
21             if re.search(regex, path):
22                 yield scrapy.Request(
23                     path.strip(),
24                     callback=self.parse_store,
25                 )
26 
27     def parse_store(self, response):
28 
29         properties = {
30             'name': response.xpath('//span[@itemprop="name"]/text()').extract_first(),
31             'ref': response.xpath('//span[@itemprop="name"]/text()').extract_first(),
32             'addr_full': response.xpath('//span[@itemprop="streetAddress"]/text()').extract_first(),
33             'city': response.xpath('//span[@itemprop="addressLocality"]/text()').extract_first(),
34             'state': response.xpath('//span[@itemprop="addressRegion"]/text()').extract_first(),
35             'postcode': response.xpath('//span[@itemprop="postalCode"]/text()').extract_first(),
36             'phone': response.xpath('//span[@itemprop="telephone"]/a/text()').extract_first(),
37             'website': response.url,
38             'opening_hours': "".join(response.xpath('//div/div/div/span/span/span/text()').extract()).strip(),
39             'lon': float(response.xpath('//head/script[9]').extract_first().split('"coordinates":[')[1].split(']')[0].split(',')[0]),
40             'lat': float(response.xpath('//head/script[9]').extract_first().split('"coordinates":[')[1].split(']')[0].split(',')[1]),
41         }
42 
43         yield GeojsonPointItem(**properties)
44
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/locations/spiders/rubios.py b/locations/spiders/rubios.py
--- a/locations/spiders/rubios.py
+++ b/locations/spiders/rubios.py
@@ -16,7 +16,7 @@
     def parse(self, response):
         response.selector.remove_namespaces()
         city_urls = response.xpath('//url/loc/text()').extract()
-        regex = re.compile(r'http\S+rubios.com/store-locations/\S+/\S+/\S+')
+        regex = re.compile(r'http\S+rubios.com/restaurant-locations/\S+/\S+/\S+')
         for path in city_urls:
             if re.search(regex, path):
                 yield scrapy.Request(
@@ -27,17 +27,18 @@
     def parse_store(self, response):
 
         properties = {
-            'name': response.xpath('//span[@itemprop="name"]/text()').extract_first(),
-            'ref': response.xpath('//span[@itemprop="name"]/text()').extract_first(),
-            'addr_full': response.xpath('//span[@itemprop="streetAddress"]/text()').extract_first(),
-            'city': response.xpath('//span[@itemprop="addressLocality"]/text()').extract_first(),
-            'state': response.xpath('//span[@itemprop="addressRegion"]/text()').extract_first(),
-            'postcode': response.xpath('//span[@itemprop="postalCode"]/text()').extract_first(),
-            'phone': response.xpath('//span[@itemprop="telephone"]/a/text()').extract_first(),
+            'name': response.xpath('//meta[@property="og:title"]/@content').extract_first(),
+            'ref': response.url,
+            'addr_full': response.xpath('//meta[@property="og:street_address"]/@content').extract_first(),
+            'city': response.xpath('//meta[@property="og:locality"]/@content').extract_first(),
+            'state': response.xpath('//meta[@property="og:region"]/@content').extract_first(),
+            'postcode': response.xpath('//meta[@property="og:postal_code"]/@content').extract_first(),
+            'country': response.xpath('//meta[@property="og:country_name"]/@content').extract_first(),
+            'phone': response.xpath('//@href[contains(.,"tel:")]').extract_first().replace('tel:', ''),
             'website': response.url,
-            'opening_hours': "".join(response.xpath('//div/div/div/span/span/span/text()').extract()).strip(),
-            'lon': float(response.xpath('//head/script[9]').extract_first().split('"coordinates":[')[1].split(']')[0].split(',')[0]),
-            'lat': float(response.xpath('//head/script[9]').extract_first().split('"coordinates":[')[1].split(']')[0].split(',')[1]),
+            'opening_hours': ''.join(response.css('.oh-wrapper ::text').extract()),
+            'lon': response.xpath('//meta[@property="og:longitude"]/@content').extract_first(),
+            'lat': response.xpath('//meta[@property="og:latitude"]/@content').extract_first(),
         }
 
         yield GeojsonPointItem(**properties)

{"golden_diff": "diff --git a/locations/spiders/rubios.py b/locations/spiders/rubios.py\n--- a/locations/spiders/rubios.py\n+++ b/locations/spiders/rubios.py\n@@ -16,7 +16,7 @@\n     def parse(self, response):\n         response.selector.remove_namespaces()\n         city_urls = response.xpath('//url/loc/text()').extract()\n-        regex = re.compile(r'http\\S+rubios.com/store-locations/\\S+/\\S+/\\S+')\n+        regex = re.compile(r'http\\S+rubios.com/restaurant-locations/\\S+/\\S+/\\S+')\n         for path in city_urls:\n             if re.search(regex, path):\n                 yield scrapy.Request(\n@@ -27,17 +27,18 @@\n     def parse_store(self, response):\n \n         properties = {\n-            'name': response.xpath('//span[@itemprop=\"name\"]/text()').extract_first(),\n-            'ref': response.xpath('//span[@itemprop=\"name\"]/text()').extract_first(),\n-            'addr_full': response.xpath('//span[@itemprop=\"streetAddress\"]/text()').extract_first(),\n-            'city': response.xpath('//span[@itemprop=\"addressLocality\"]/text()').extract_first(),\n-            'state': response.xpath('//span[@itemprop=\"addressRegion\"]/text()').extract_first(),\n-            'postcode': response.xpath('//span[@itemprop=\"postalCode\"]/text()').extract_first(),\n-            'phone': response.xpath('//span[@itemprop=\"telephone\"]/a/text()').extract_first(),\n+            'name': response.xpath('//meta[@property=\"og:title\"]/@content').extract_first(),\n+            'ref': response.url,\n+            'addr_full': response.xpath('//meta[@property=\"og:street_address\"]/@content').extract_first(),\n+            'city': response.xpath('//meta[@property=\"og:locality\"]/@content').extract_first(),\n+            'state': response.xpath('//meta[@property=\"og:region\"]/@content').extract_first(),\n+            'postcode': response.xpath('//meta[@property=\"og:postal_code\"]/@content').extract_first(),\n+            'country': response.xpath('//meta[@property=\"og:country_name\"]/@content').extract_first(),\n+            'phone': response.xpath('//@href[contains(.,\"tel:\")]').extract_first().replace('tel:', ''),\n             'website': response.url,\n-            'opening_hours': \"\".join(response.xpath('//div/div/div/span/span/span/text()').extract()).strip(),\n-            'lon': float(response.xpath('//head/script[9]').extract_first().split('\"coordinates\":[')[1].split(']')[0].split(',')[0]),\n-            'lat': float(response.xpath('//head/script[9]').extract_first().split('\"coordinates\":[')[1].split(']')[0].split(',')[1]),\n+            'opening_hours': ''.join(response.css('.oh-wrapper ::text').extract()),\n+            'lon': response.xpath('//meta[@property=\"og:longitude\"]/@content').extract_first(),\n+            'lat': response.xpath('//meta[@property=\"og:latitude\"]/@content').extract_first(),\n         }\n \n         yield GeojsonPointItem(**properties)\n", "issue": "Spider rubios is broken\nDuring the global build at 2021-05-26-14-42-23, spider **rubios** failed with **0 features** and **0 errors**.\n\nHere's [the log](https://data.alltheplaces.xyz/runs/2021-05-26-14-42-23/logs/rubios.log) and [the output](https://data.alltheplaces.xyz/runs/2021-05-26-14-42-23/output/rubios.geojson) ([on a map](https://data.alltheplaces.xyz/map.html?show=https://data.alltheplaces.xyz/runs/2021-05-26-14-42-23/output/rubios.geojson))\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\nimport scrapy\nimport re\n\nfrom locations.items import GeojsonPointItem\n\n\nclass RubiosSpider(scrapy.Spider):\n    name = \"rubios\"\n    item_attributes = { 'brand': \"Rubio's\" }\n    allowed_domains = ['rubios.com']\n    start_urls = (\n        'https://www.rubios.com/sitemap.xml',\n    )\n\n    def parse(self, response):\n        response.selector.remove_namespaces()\n        city_urls = response.xpath('//url/loc/text()').extract()\n        regex = re.compile(r'http\\S+rubios.com/store-locations/\\S+/\\S+/\\S+')\n        for path in city_urls:\n            if re.search(regex, path):\n                yield scrapy.Request(\n                    path.strip(),\n                    callback=self.parse_store,\n                )\n\n    def parse_store(self, response):\n\n        properties = {\n            'name': response.xpath('//span[@itemprop=\"name\"]/text()').extract_first(),\n            'ref': response.xpath('//span[@itemprop=\"name\"]/text()').extract_first(),\n            'addr_full': response.xpath('//span[@itemprop=\"streetAddress\"]/text()').extract_first(),\n            'city': response.xpath('//span[@itemprop=\"addressLocality\"]/text()').extract_first(),\n            'state': response.xpath('//span[@itemprop=\"addressRegion\"]/text()').extract_first(),\n            'postcode': response.xpath('//span[@itemprop=\"postalCode\"]/text()').extract_first(),\n            'phone': response.xpath('//span[@itemprop=\"telephone\"]/a/text()').extract_first(),\n            'website': response.url,\n            'opening_hours': \"\".join(response.xpath('//div/div/div/span/span/span/text()').extract()).strip(),\n            'lon': float(response.xpath('//head/script[9]').extract_first().split('\"coordinates\":[')[1].split(']')[0].split(',')[0]),\n            'lat': float(response.xpath('//head/script[9]').extract_first().split('\"coordinates\":[')[1].split(']')[0].split(',')[1]),\n        }\n\n        yield GeojsonPointItem(**properties)\n", "path": "locations/spiders/rubios.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\nimport scrapy\nimport re\n\nfrom locations.items import GeojsonPointItem\n\n\nclass RubiosSpider(scrapy.Spider):\n    name = \"rubios\"\n    item_attributes = { 'brand': \"Rubio's\" }\n    allowed_domains = ['rubios.com']\n    start_urls = (\n        'https://www.rubios.com/sitemap.xml',\n    )\n\n    def parse(self, response):\n        response.selector.remove_namespaces()\n        city_urls = response.xpath('//url/loc/text()').extract()\n        regex = re.compile(r'http\\S+rubios.com/restaurant-locations/\\S+/\\S+/\\S+')\n        for path in city_urls:\n            if re.search(regex, path):\n                yield scrapy.Request(\n                    path.strip(),\n                    callback=self.parse_store,\n                )\n\n    def parse_store(self, response):\n\n        properties = {\n            'name': response.xpath('//meta[@property=\"og:title\"]/@content').extract_first(),\n            'ref': response.url,\n            'addr_full': response.xpath('//meta[@property=\"og:street_address\"]/@content').extract_first(),\n            'city': response.xpath('//meta[@property=\"og:locality\"]/@content').extract_first(),\n            'state': response.xpath('//meta[@property=\"og:region\"]/@content').extract_first(),\n            'postcode': response.xpath('//meta[@property=\"og:postal_code\"]/@content').extract_first(),\n            'country': response.xpath('//meta[@property=\"og:country_name\"]/@content').extract_first(),\n            'phone': response.xpath('//@href[contains(.,\"tel:\")]').extract_first().replace('tel:', ''),\n            'website': response.url,\n            'opening_hours': ''.join(response.css('.oh-wrapper ::text').extract()),\n            'lon': response.xpath('//meta[@property=\"og:longitude\"]/@content').extract_first(),\n            'lat': response.xpath('//meta[@property=\"og:latitude\"]/@content').extract_first(),\n        }\n\n        yield GeojsonPointItem(**properties)\n", "path": "locations/spiders/rubios.py"}]}