Data is everywhere and it is generated constantly
The number of datasources is amazingly huge
Datasets are huge and can be used in many ways
We may do amazing things using data made available by third-party:
We will have a nice and brief overview about how to consume data from REST APIs, mainly focusing on JSON.
Application Programming Interface defines the methods for one software program to interact with the other.
In the case of this lecture, we are dealing with a REST API, which sends data over a network: one type of Web service.
When we want to receive data from an Web service, we need to make a request
to this service. When the server receives this request, it sends a response
.
Knowing that, we will not have to learn about making requests in Python
We do it by importing the module requests
import requests
There are different types of requests.
In our case we will use a GET
, which is used to retrieve data. This is the type of request we use to collect data.
A response from the API contains 2 things (among others):
To make a request, we use:
response = requests.get('http://www.nau.edu/')
type(response)
requests.models.Response
The request.get(URL)
returns an object Response, which provides, among other things, the response code.
response.status_code
200
THe most common codes are:
More details about status codes list can be found here
First, read the documentation! Everytime you use an API, please read the documentation to understand how to use, the structure, etc.
We will use the Open Notify API, which gives access to data about the international space station.
These APIs usually provide multiple endpoints, which are the ways we can interact with that service.
Let's try a request and see how it goes:
response = requests.get("http://api.open-notify.org/astros.json")
print(response.status_code)
200
Now we can see the data...
type(response.content)
bytes
response.text
'{"message": "success", "people": [{"name": "Sergey Ryzhikov", "craft": "ISS"}, {"name": "Kate Rubins", "craft": "ISS"}, {"name": "Sergey Kud-Sverchkov", "craft": "ISS"}], "number": 3}'
response.json()
{'message': 'success', 'people': [{'name': 'Sergey Ryzhikov', 'craft': 'ISS'}, {'name': 'Kate Rubins', 'craft': 'ISS'}, {'name': 'Sergey Kud-Sverchkov', 'craft': 'ISS'}], 'number': 3}
JSON stands for JavaScript Object Notation. It is a way to encode data structures that ensures that they are easily readable.
JSON output look like Python something with dictionaries, lists, strings and integers. And it is...
But, how to use it? Well, we used it in the last command.
import json
json has two main functions:
json.dumps()
— Takes in a Python object and converts (dumps) to a string.json.loads()
— Takes a JSON string and converts (loads) to a Python object.The dumps()
is particularly useful as we can use it to format the json, making it easier to understand the output
json_response = response.json()
formatted_json = json.dumps(json_response, sort_keys=True, indent=3
)
print(formatted_json)
{ "message": "success", "number": 3, "people": [ { "craft": "ISS", "name": "Sergey Ryzhikov" }, { "craft": "ISS", "name": "Kate Rubins" }, { "craft": "ISS", "name": "Sergey Kud-Sverchkov" } ] }
In some cases, it is possible to pass parameters to filter the output of the API.
The http://api.open-notify.org/iss-pass.json endpoint tells the next times that the international space station will pass over a given location on the earth.
It requires parameters
response = requests.get("http://api.open-notify.org/iss-pass.json")
print("RESPONSE CODE:" + str(response.status_code))
print(response.json())
RESPONSE CODE:400 {'message': 'failure', 'reason': 'Latitude must be specified'}
Let's read the docs:
response = requests.get("http://api.open-notify.org/iss-pass.json?lat=35.1983&lon=111.6513")
print("RESPONSE CODE:" + str(response.status_code))
print(response.json())
#35.1983, 111.6513
RESPONSE CODE:200 {'message': 'success', 'request': {'altitude': 100, 'datetime': 1603836506, 'latitude': 35.1983, 'longitude': 111.6513, 'passes': 5}, 'response': [{'duration': 390, 'risetime': 1603841584}, {'duration': 520, 'risetime': 1603847415}, {'duration': 648, 'risetime': 1603853197}, {'duration': 542, 'risetime': 1603859036}, {'duration': 479, 'risetime': 1603907545}]}
formatted_json = json.dumps(response.json(), sort_keys=False, indent=2)
#print(formatted_json)
print(response.json()["response"][0]["risetime"])
1603841584
Reading the docs (and looking at our JSON), we can see what we need to do
times = []
for item in response.json()['response']:
times.append(item['risetime'])
print(times)
[1603841584, 1603847415, 1603853197, 1603859036, 1603907545]
from datetime import datetime
datetime.fromtimestamp(times[0]).strftime("%Y-%m-%d %I:%M:%S")
'2020-10-27 04:33:04'
response = requests.get("https://api.github.com/repos/rails/rails/pulls")
pulls = response.json()
print(json.dumps(pulls, indent=2))
[ { "url": "https://api.github.com/repos/rails/rails/pulls/40467", "id": 511057455, "node_id": "MDExOlB1bGxSZXF1ZXN0NTExMDU3NDU1", "html_url": "https://github.com/rails/rails/pull/40467", "diff_url": "https://github.com/rails/rails/pull/40467.diff", "patch_url": "https://github.com/rails/rails/pull/40467.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40467", "number": 40467, "state": "open", "locked": false, "title": "Test find_signed/! on Relation", "user": { "login": "bogdanvlviv", "id": 6443532, "node_id": "MDQ6VXNlcjY0NDM1MzI=", "avatar_url": "https://avatars0.githubusercontent.com/u/6443532?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bogdanvlviv", "html_url": "https://github.com/bogdanvlviv", "followers_url": "https://api.github.com/users/bogdanvlviv/followers", "following_url": "https://api.github.com/users/bogdanvlviv/following{/other_user}", "gists_url": "https://api.github.com/users/bogdanvlviv/gists{/gist_id}", "starred_url": "https://api.github.com/users/bogdanvlviv/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bogdanvlviv/subscriptions", "organizations_url": "https://api.github.com/users/bogdanvlviv/orgs", "repos_url": "https://api.github.com/users/bogdanvlviv/repos", "events_url": "https://api.github.com/users/bogdanvlviv/events{/privacy}", "received_events_url": "https://api.github.com/users/bogdanvlviv/received_events", "type": "User", "site_admin": false }, "body": "Want to make sure that those methods work on relation and return\r\nexpected result when retation has or doesn't have any records.\r\n\r\nThose methods are delegated by\r\nhttps://github.com/rails/rails/blob/7cb451346618811796efce1f8a2bf576b8e4999c/activerecord/lib/active_record/relation/delegation.rb#L21,\r\nhttps://github.com/rails/rails/blob/7cb451346618811796efce1f8a2bf576b8e4999c/activerecord/lib/active_record/relation/delegation.rb#L95-L114,\r\nhttps://github.com/rails/rails/blob/7cb451346618811796efce1f8a2bf576b8e4999c/activerecord/lib/active_record/relation/delegation.rb#L56-L78\r\nas I understand.\r\n\r\nRelated to https://github.com/rails/rails/pull/39313", "created_at": "2020-10-27T20:53:14Z", "updated_at": "2020-10-27T20:59:55Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "08bb56fc427ee95ac80a0a18c1722f1f8f488b7e", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40467/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40467/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40467/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/aac3d28b4e98c661b0098acf9c4ad028ecd69da3", "head": { "label": "bogdanvlviv:test_find_signed_on_relation", "ref": "test_find_signed_on_relation", "sha": "aac3d28b4e98c661b0098acf9c4ad028ecd69da3", "user": { "login": "bogdanvlviv", "id": 6443532, "node_id": "MDQ6VXNlcjY0NDM1MzI=", "avatar_url": "https://avatars0.githubusercontent.com/u/6443532?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bogdanvlviv", "html_url": "https://github.com/bogdanvlviv", "followers_url": "https://api.github.com/users/bogdanvlviv/followers", "following_url": "https://api.github.com/users/bogdanvlviv/following{/other_user}", "gists_url": "https://api.github.com/users/bogdanvlviv/gists{/gist_id}", "starred_url": "https://api.github.com/users/bogdanvlviv/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bogdanvlviv/subscriptions", "organizations_url": "https://api.github.com/users/bogdanvlviv/orgs", "repos_url": "https://api.github.com/users/bogdanvlviv/repos", "events_url": "https://api.github.com/users/bogdanvlviv/events{/privacy}", "received_events_url": "https://api.github.com/users/bogdanvlviv/received_events", "type": "User", "site_admin": false }, "repo": { "id": 54744114, "node_id": "MDEwOlJlcG9zaXRvcnk1NDc0NDExNA==", "name": "rails", "full_name": "bogdanvlviv/rails", "private": false, "owner": { "login": "bogdanvlviv", "id": 6443532, "node_id": "MDQ6VXNlcjY0NDM1MzI=", "avatar_url": "https://avatars0.githubusercontent.com/u/6443532?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bogdanvlviv", "html_url": "https://github.com/bogdanvlviv", "followers_url": "https://api.github.com/users/bogdanvlviv/followers", "following_url": "https://api.github.com/users/bogdanvlviv/following{/other_user}", "gists_url": "https://api.github.com/users/bogdanvlviv/gists{/gist_id}", "starred_url": "https://api.github.com/users/bogdanvlviv/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bogdanvlviv/subscriptions", "organizations_url": "https://api.github.com/users/bogdanvlviv/orgs", "repos_url": "https://api.github.com/users/bogdanvlviv/repos", "events_url": "https://api.github.com/users/bogdanvlviv/events{/privacy}", "received_events_url": "https://api.github.com/users/bogdanvlviv/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/bogdanvlviv/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/bogdanvlviv/rails", "forks_url": "https://api.github.com/repos/bogdanvlviv/rails/forks", "keys_url": "https://api.github.com/repos/bogdanvlviv/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/bogdanvlviv/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/bogdanvlviv/rails/teams", "hooks_url": "https://api.github.com/repos/bogdanvlviv/rails/hooks", "issue_events_url": "https://api.github.com/repos/bogdanvlviv/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/bogdanvlviv/rails/events", "assignees_url": "https://api.github.com/repos/bogdanvlviv/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/bogdanvlviv/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/bogdanvlviv/rails/tags", "blobs_url": "https://api.github.com/repos/bogdanvlviv/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/bogdanvlviv/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/bogdanvlviv/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/bogdanvlviv/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/bogdanvlviv/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/bogdanvlviv/rails/languages", "stargazers_url": "https://api.github.com/repos/bogdanvlviv/rails/stargazers", "contributors_url": "https://api.github.com/repos/bogdanvlviv/rails/contributors", "subscribers_url": "https://api.github.com/repos/bogdanvlviv/rails/subscribers", "subscription_url": "https://api.github.com/repos/bogdanvlviv/rails/subscription", "commits_url": "https://api.github.com/repos/bogdanvlviv/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/bogdanvlviv/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/bogdanvlviv/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/bogdanvlviv/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/bogdanvlviv/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/bogdanvlviv/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/bogdanvlviv/rails/merges", "archive_url": "https://api.github.com/repos/bogdanvlviv/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/bogdanvlviv/rails/downloads", "issues_url": "https://api.github.com/repos/bogdanvlviv/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/bogdanvlviv/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/bogdanvlviv/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/bogdanvlviv/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/bogdanvlviv/rails/labels{/name}", "releases_url": "https://api.github.com/repos/bogdanvlviv/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/bogdanvlviv/rails/deployments", "created_at": "2016-03-25T19:54:02Z", "updated_at": "2020-09-21T10:08:47Z", "pushed_at": "2020-10-27T20:59:45Z", "git_url": "git://github.com/bogdanvlviv/rails.git", "ssh_url": "git@github.com:bogdanvlviv/rails.git", "clone_url": "https://github.com/bogdanvlviv/rails.git", "svn_url": "https://github.com/bogdanvlviv/rails", "homepage": "http://rubyonrails.org", "size": 227913, "stargazers_count": 1, "watchers_count": 1, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 1, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 1, "open_issues": 0, "watchers": 1, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "7cb451346618811796efce1f8a2bf576b8e4999c", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40467" }, "html": { "href": "https://github.com/rails/rails/pull/40467" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40467" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40467/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40467/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40467/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/aac3d28b4e98c661b0098acf9c4ad028ecd69da3" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40466", "id": 510976163, "node_id": "MDExOlB1bGxSZXF1ZXN0NTEwOTc2MTYz", "html_url": "https://github.com/rails/rails/pull/40466", "diff_url": "https://github.com/rails/rails/pull/40466.diff", "patch_url": "https://github.com/rails/rails/pull/40466.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40466", "number": 40466, "state": "open", "locked": false, "title": "Skip building join queries for min/max over same table", "user": { "login": "razum2um", "id": 122018, "node_id": "MDQ6VXNlcjEyMjAxOA==", "avatar_url": "https://avatars2.githubusercontent.com/u/122018?v=4", "gravatar_id": "", "url": "https://api.github.com/users/razum2um", "html_url": "https://github.com/razum2um", "followers_url": "https://api.github.com/users/razum2um/followers", "following_url": "https://api.github.com/users/razum2um/following{/other_user}", "gists_url": "https://api.github.com/users/razum2um/gists{/gist_id}", "starred_url": "https://api.github.com/users/razum2um/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/razum2um/subscriptions", "organizations_url": "https://api.github.com/users/razum2um/orgs", "repos_url": "https://api.github.com/users/razum2um/repos", "events_url": "https://api.github.com/users/razum2um/events{/privacy}", "received_events_url": "https://api.github.com/users/razum2um/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nWhile calling `.minimum` or `.maximum` on a relation, `LEFT JOIN`s cannot change the result.\r\n\r\n### Other Information\r\n\r\nUsually `MIN` / `MAX` over a single table (given this column is indexed) is a very quick index-only scan.\r\nSame aggregation inside a query with `LEFT JOIN` changes plan dramatically bad, but result is guaranteed the same. \r\n\r\n<details>\r\n<summary>e.g. PostgreSQL's analyzer cannot unfortunately deduct useless join</summary>\r\n\r\n```\r\nCREATE TABLE x (x integer);\r\nINSERT INTO x SELECT generate_series(100,150);\r\nCREATE INDEX x_idx on x(x);\r\nCREATE TABLE y (y integer);\r\nINSERT INTO y SELECT generate_series(10,1500);\r\nCREATE INDEX y_idx on y(y);\r\n```\r\n\r\nnow `EXPLAIN ANALYZE SELECT min(x) from x;`:\r\n```\r\n QUERY PLAN\r\n------------------------------------------------------------------------------------------------------------------------------\r\n Result (cost=0.39..0.40 rows=1 width=4) (actual time=0.044..0.047 rows=1 loops=1)\r\n InitPlan 1 (returns $0)\r\n -> Limit (cost=0.14..0.39 rows=1 width=4) (actual time=0.037..0.039 rows=1 loops=1)\r\n -> Index Only Scan using x_idx on x (cost=0.14..13.03 rows=51 width=4) (actual time=0.014..0.015 rows=1 loops=1)\r\n Index Cond: (x IS NOT NULL)\r\n Heap Fetches: 1\r\n Planning Time: 0.156 ms\r\n Execution Time: 0.085 ms\r\n```\r\n\r\nand `EXPLAIN ANALYZE SELECT min(x) from x left join y on y.y = x.x;`:\r\n\r\n```\r\n QUERY PLAN\r\n---------------------------------------------------------------------------------------------------------------\r\n Aggregate (cost=34.40..34.41 rows=1 width=4) (actual time=0.297..0.298 rows=1 loops=1)\r\n -> Hash Right Join (cost=2.15..33.45 rows=380 width=4) (actual time=0.068..0.292 rows=51 loops=1)\r\n Hash Cond: (y.y = x.x)\r\n -> Seq Scan on y (cost=0.00..21.91 rows=1491 width=4) (actual time=0.005..0.121 rows=1491 loops=1)\r\n -> Hash (cost=1.51..1.51 rows=51 width=4) (actual time=0.038..0.038 rows=51 loops=1)\r\n Buckets: 1024 Batches: 1 Memory Usage: 10kB\r\n -> Seq Scan on x (cost=0.00..1.51 rows=51 width=4) (actual time=0.009..0.012 rows=51 loops=1)\r\n Planning Time: 0.114 ms\r\n Execution Time: 0.328 ms\r\n```\r\n\r\nnote execution times\r\n</details>", "created_at": "2020-10-27T18:43:45Z", "updated_at": "2020-10-27T19:20:46Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "f4db1496aff366405778b2a059166b3e529a114c", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40466/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40466/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40466/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/2509ebcd99aeec0b3c3f35f82a872c2575564dd0", "head": { "label": "razum2um:master", "ref": "master", "sha": "2509ebcd99aeec0b3c3f35f82a872c2575564dd0", "user": { "login": "razum2um", "id": 122018, "node_id": "MDQ6VXNlcjEyMjAxOA==", "avatar_url": "https://avatars2.githubusercontent.com/u/122018?v=4", "gravatar_id": "", "url": "https://api.github.com/users/razum2um", "html_url": "https://github.com/razum2um", "followers_url": "https://api.github.com/users/razum2um/followers", "following_url": "https://api.github.com/users/razum2um/following{/other_user}", "gists_url": "https://api.github.com/users/razum2um/gists{/gist_id}", "starred_url": "https://api.github.com/users/razum2um/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/razum2um/subscriptions", "organizations_url": "https://api.github.com/users/razum2um/orgs", "repos_url": "https://api.github.com/users/razum2um/repos", "events_url": "https://api.github.com/users/razum2um/events{/privacy}", "received_events_url": "https://api.github.com/users/razum2um/received_events", "type": "User", "site_admin": false }, "repo": { "id": 9408919, "node_id": "MDEwOlJlcG9zaXRvcnk5NDA4OTE5", "name": "rails", "full_name": "razum2um/rails", "private": false, "owner": { "login": "razum2um", "id": 122018, "node_id": "MDQ6VXNlcjEyMjAxOA==", "avatar_url": "https://avatars2.githubusercontent.com/u/122018?v=4", "gravatar_id": "", "url": "https://api.github.com/users/razum2um", "html_url": "https://github.com/razum2um", "followers_url": "https://api.github.com/users/razum2um/followers", "following_url": "https://api.github.com/users/razum2um/following{/other_user}", "gists_url": "https://api.github.com/users/razum2um/gists{/gist_id}", "starred_url": "https://api.github.com/users/razum2um/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/razum2um/subscriptions", "organizations_url": "https://api.github.com/users/razum2um/orgs", "repos_url": "https://api.github.com/users/razum2um/repos", "events_url": "https://api.github.com/users/razum2um/events{/privacy}", "received_events_url": "https://api.github.com/users/razum2um/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/razum2um/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/razum2um/rails", "forks_url": "https://api.github.com/repos/razum2um/rails/forks", "keys_url": "https://api.github.com/repos/razum2um/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/razum2um/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/razum2um/rails/teams", "hooks_url": "https://api.github.com/repos/razum2um/rails/hooks", "issue_events_url": "https://api.github.com/repos/razum2um/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/razum2um/rails/events", "assignees_url": "https://api.github.com/repos/razum2um/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/razum2um/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/razum2um/rails/tags", "blobs_url": "https://api.github.com/repos/razum2um/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/razum2um/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/razum2um/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/razum2um/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/razum2um/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/razum2um/rails/languages", "stargazers_url": "https://api.github.com/repos/razum2um/rails/stargazers", "contributors_url": "https://api.github.com/repos/razum2um/rails/contributors", "subscribers_url": "https://api.github.com/repos/razum2um/rails/subscribers", "subscription_url": "https://api.github.com/repos/razum2um/rails/subscription", "commits_url": "https://api.github.com/repos/razum2um/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/razum2um/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/razum2um/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/razum2um/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/razum2um/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/razum2um/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/razum2um/rails/merges", "archive_url": "https://api.github.com/repos/razum2um/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/razum2um/rails/downloads", "issues_url": "https://api.github.com/repos/razum2um/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/razum2um/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/razum2um/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/razum2um/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/razum2um/rails/labels{/name}", "releases_url": "https://api.github.com/repos/razum2um/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/razum2um/rails/deployments", "created_at": "2013-04-13T05:00:45Z", "updated_at": "2020-10-27T18:47:11Z", "pushed_at": "2020-10-27T18:47:03Z", "git_url": "git://github.com/razum2um/rails.git", "ssh_url": "git@github.com:razum2um/rails.git", "clone_url": "https://github.com/razum2um/rails.git", "svn_url": "https://github.com/razum2um/rails", "homepage": "http://rubyonrails.org", "size": 181716, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "7cb451346618811796efce1f8a2bf576b8e4999c", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40466" }, "html": { "href": "https://github.com/rails/rails/pull/40466" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40466" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40466/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40466/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40466/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/2509ebcd99aeec0b3c3f35f82a872c2575564dd0" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40464", "id": 510894424, "node_id": "MDExOlB1bGxSZXF1ZXN0NTEwODk0NDI0", "html_url": "https://github.com/rails/rails/pull/40464", "diff_url": "https://github.com/rails/rails/pull/40464.diff", "patch_url": "https://github.com/rails/rails/pull/40464.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40464", "number": 40464, "state": "open", "locked": false, "title": "Allow for proxy-revalidate in cache-control header", "user": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\nI have an Nginx reverse proxy on the same machine as my origin server. I want the proxy to cache dynamic content from the origin, but when a client revalidates a resource, I want the proxy to revalidate the public content with the origin too, and not the private authenticated responses. I found currently Nginx never revalidates with the origin server. It just gets a new copy of the resource whenever it thinks it needs one.\r\n\r\nWhat appears to be the most immediate way of doing so is to modify the configuration in config/application.rb like so:\r\n\r\n```ruby\r\nconfig.action_dispatch.default_headers.merge!('Cache-Control' => 'proxy-revalidate')\r\n```\r\nThe proxy-revalidate in the cached response should be enough for nginx to trigger a revalidate when receiving a request. Proxy-revalidate header can be used on a response to an authenticated request to permit the user's cache to store and later return the response without needing to revalidate it, since it has already been authenticated once by that user, while still requiring proxies that service many users to revalidate each time in order to make sure that each user has been authenticated. Note that such authenticated responses also need the public cache control directive in order to allow them to be cached at all.\r\n\r\n<!-- Provide a general description of the code changes in your pull\r\nrequest... were there any bugs you had fixed? If so, mention them. If\r\nthese bugs have open GitHub issues, be sure to tag them here as well,\r\nto keep the conversation linked together. -->\r\n\r\n<!-- If there's anything else that's important and relevant to your pull\r\nrequest, mention that information here. This could include\r\nbenchmarks, or other information.\r\n\r\nIf you are updating any of the CHANGELOG files or are asked to update the\r\nCHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the file.\r\n\r\nFinally, if your pull request affects documentation or any non-code\r\nchanges, guidelines for those changes are [available\r\nhere](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#contributing-to-the-rails-documentation)\r\n\r\nThanks for contributing to Rails! -->\r\n", "created_at": "2020-10-27T16:40:27Z", "updated_at": "2020-10-27T17:51:33Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "bcdc6a37f4b29dc04da704828183fab3b65c7be7", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107189, "node_id": "MDU6TGFiZWwxMDcxODk=", "url": "https://api.github.com/repos/rails/rails/labels/actionpack", "name": "actionpack", "color": "FFF700", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40464/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40464/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40464/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/cbfd739a4f46d93e3943e13eee96f00438583e25", "head": { "label": "tahsin352:th_cachecontrol_proxyrevalidate", "ref": "th_cachecontrol_proxyrevalidate", "sha": "cbfd739a4f46d93e3943e13eee96f00438583e25", "user": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "repo": { "id": 302846205, "node_id": "MDEwOlJlcG9zaXRvcnkzMDI4NDYyMDU=", "name": "rails", "full_name": "tahsin352/rails", "private": false, "owner": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/tahsin352/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/tahsin352/rails", "forks_url": "https://api.github.com/repos/tahsin352/rails/forks", "keys_url": "https://api.github.com/repos/tahsin352/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/tahsin352/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/tahsin352/rails/teams", "hooks_url": "https://api.github.com/repos/tahsin352/rails/hooks", "issue_events_url": "https://api.github.com/repos/tahsin352/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/tahsin352/rails/events", "assignees_url": "https://api.github.com/repos/tahsin352/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/tahsin352/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/tahsin352/rails/tags", "blobs_url": "https://api.github.com/repos/tahsin352/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/tahsin352/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/tahsin352/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/tahsin352/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/tahsin352/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/tahsin352/rails/languages", "stargazers_url": "https://api.github.com/repos/tahsin352/rails/stargazers", "contributors_url": "https://api.github.com/repos/tahsin352/rails/contributors", "subscribers_url": "https://api.github.com/repos/tahsin352/rails/subscribers", "subscription_url": "https://api.github.com/repos/tahsin352/rails/subscription", "commits_url": "https://api.github.com/repos/tahsin352/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/tahsin352/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/tahsin352/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/tahsin352/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/tahsin352/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/tahsin352/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/tahsin352/rails/merges", "archive_url": "https://api.github.com/repos/tahsin352/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/tahsin352/rails/downloads", "issues_url": "https://api.github.com/repos/tahsin352/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/tahsin352/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/tahsin352/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/tahsin352/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/tahsin352/rails/labels{/name}", "releases_url": "https://api.github.com/repos/tahsin352/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/tahsin352/rails/deployments", "created_at": "2020-10-10T07:49:14Z", "updated_at": "2020-10-10T07:49:21Z", "pushed_at": "2020-10-27T17:51:22Z", "git_url": "git://github.com/tahsin352/rails.git", "ssh_url": "git@github.com:tahsin352/rails.git", "clone_url": "https://github.com/tahsin352/rails.git", "svn_url": "https://github.com/tahsin352/rails", "homepage": "https://rubyonrails.org", "size": 228838, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "10649e6e480d437f4393ff224e593bc27ca9589b", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40464" }, "html": { "href": "https://github.com/rails/rails/pull/40464" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40464" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40464/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40464/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40464/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/cbfd739a4f46d93e3943e13eee96f00438583e25" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40461", "id": 510669206, "node_id": "MDExOlB1bGxSZXF1ZXN0NTEwNjY5MjA2", "html_url": "https://github.com/rails/rails/pull/40461", "diff_url": "https://github.com/rails/rails/pull/40461.diff", "patch_url": "https://github.com/rails/rails/pull/40461.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40461", "number": 40461, "state": "open", "locked": false, "title": "Test after_commit not called after raise in callback", "user": { "login": "lzap", "id": 49752, "node_id": "MDQ6VXNlcjQ5NzUy", "avatar_url": "https://avatars0.githubusercontent.com/u/49752?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lzap", "html_url": "https://github.com/lzap", "followers_url": "https://api.github.com/users/lzap/followers", "following_url": "https://api.github.com/users/lzap/following{/other_user}", "gists_url": "https://api.github.com/users/lzap/gists{/gist_id}", "starred_url": "https://api.github.com/users/lzap/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/lzap/subscriptions", "organizations_url": "https://api.github.com/users/lzap/orgs", "repos_url": "https://api.github.com/users/lzap/repos", "events_url": "https://api.github.com/users/lzap/events{/privacy}", "received_events_url": "https://api.github.com/users/lzap/received_events", "type": "User", "site_admin": false }, "body": "I wanted to find out if ActiveRecord calls transaction callback after exception in a callback. There was a patch that corrected this behavior for exceptions in transaction callbacks (https://github.com/rails/rails/commit/5eaec23b89a83763b59bd017d872d35feea70af1) but we were suffering from the similar problem but in regular callbacks.\n\nThis patch only adds two test cases for this, since I wrote the code I am offering this if that's any useful.\n\n\nFeel free to close the PR if you don't find these two tests useful", "created_at": "2020-10-27T11:10:30Z", "updated_at": "2020-10-27T11:10:34Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "f05332ac1f2e63aca0052f6a37fcbc7a66af186a", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40461/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40461/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40461/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/47d692e5295d09b06111cdb35c3c4abb2a810a34", "head": { "label": "lzap:test-transaction-after-commit-not-called", "ref": "test-transaction-after-commit-not-called", "sha": "47d692e5295d09b06111cdb35c3c4abb2a810a34", "user": { "login": "lzap", "id": 49752, "node_id": "MDQ6VXNlcjQ5NzUy", "avatar_url": "https://avatars0.githubusercontent.com/u/49752?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lzap", "html_url": "https://github.com/lzap", "followers_url": "https://api.github.com/users/lzap/followers", "following_url": "https://api.github.com/users/lzap/following{/other_user}", "gists_url": "https://api.github.com/users/lzap/gists{/gist_id}", "starred_url": "https://api.github.com/users/lzap/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/lzap/subscriptions", "organizations_url": "https://api.github.com/users/lzap/orgs", "repos_url": "https://api.github.com/users/lzap/repos", "events_url": "https://api.github.com/users/lzap/events{/privacy}", "received_events_url": "https://api.github.com/users/lzap/received_events", "type": "User", "site_admin": false }, "repo": { "id": 64757959, "node_id": "MDEwOlJlcG9zaXRvcnk2NDc1Nzk1OQ==", "name": "rails", "full_name": "lzap/rails", "private": false, "owner": { "login": "lzap", "id": 49752, "node_id": "MDQ6VXNlcjQ5NzUy", "avatar_url": "https://avatars0.githubusercontent.com/u/49752?v=4", "gravatar_id": "", "url": "https://api.github.com/users/lzap", "html_url": "https://github.com/lzap", "followers_url": "https://api.github.com/users/lzap/followers", "following_url": "https://api.github.com/users/lzap/following{/other_user}", "gists_url": "https://api.github.com/users/lzap/gists{/gist_id}", "starred_url": "https://api.github.com/users/lzap/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/lzap/subscriptions", "organizations_url": "https://api.github.com/users/lzap/orgs", "repos_url": "https://api.github.com/users/lzap/repos", "events_url": "https://api.github.com/users/lzap/events{/privacy}", "received_events_url": "https://api.github.com/users/lzap/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/lzap/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/lzap/rails", "forks_url": "https://api.github.com/repos/lzap/rails/forks", "keys_url": "https://api.github.com/repos/lzap/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/lzap/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/lzap/rails/teams", "hooks_url": "https://api.github.com/repos/lzap/rails/hooks", "issue_events_url": "https://api.github.com/repos/lzap/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/lzap/rails/events", "assignees_url": "https://api.github.com/repos/lzap/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/lzap/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/lzap/rails/tags", "blobs_url": "https://api.github.com/repos/lzap/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/lzap/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/lzap/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/lzap/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/lzap/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/lzap/rails/languages", "stargazers_url": "https://api.github.com/repos/lzap/rails/stargazers", "contributors_url": "https://api.github.com/repos/lzap/rails/contributors", "subscribers_url": "https://api.github.com/repos/lzap/rails/subscribers", "subscription_url": "https://api.github.com/repos/lzap/rails/subscription", "commits_url": "https://api.github.com/repos/lzap/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/lzap/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/lzap/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/lzap/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/lzap/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/lzap/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/lzap/rails/merges", "archive_url": "https://api.github.com/repos/lzap/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/lzap/rails/downloads", "issues_url": "https://api.github.com/repos/lzap/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/lzap/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/lzap/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/lzap/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/lzap/rails/labels{/name}", "releases_url": "https://api.github.com/repos/lzap/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/lzap/rails/deployments", "created_at": "2016-08-02T13:12:08Z", "updated_at": "2018-09-27T14:17:05Z", "pushed_at": "2020-10-27T11:04:46Z", "git_url": "git://github.com/lzap/rails.git", "ssh_url": "git@github.com:lzap/rails.git", "clone_url": "https://github.com/lzap/rails.git", "svn_url": "https://github.com/lzap/rails", "homepage": "http://rubyonrails.org", "size": 190800, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "7c67dade05ce1e47b869c84bf8947baa9e57587b", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40461" }, "html": { "href": "https://github.com/rails/rails/pull/40461" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40461" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40461/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40461/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40461/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/47d692e5295d09b06111cdb35c3c4abb2a810a34" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40460", "id": 510446936, "node_id": "MDExOlB1bGxSZXF1ZXN0NTEwNDQ2OTM2", "html_url": "https://github.com/rails/rails/pull/40460", "diff_url": "https://github.com/rails/rails/pull/40460.diff", "patch_url": "https://github.com/rails/rails/pull/40460.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40460", "number": 40460, "state": "open", "locked": false, "title": "[WIP] resolves implementing edit for CSP spec", "user": { "login": "miguelsolano", "id": 11316277, "node_id": "MDQ6VXNlcjExMzE2Mjc3", "avatar_url": "https://avatars1.githubusercontent.com/u/11316277?v=4", "gravatar_id": "", "url": "https://api.github.com/users/miguelsolano", "html_url": "https://github.com/miguelsolano", "followers_url": "https://api.github.com/users/miguelsolano/followers", "following_url": "https://api.github.com/users/miguelsolano/following{/other_user}", "gists_url": "https://api.github.com/users/miguelsolano/gists{/gist_id}", "starred_url": "https://api.github.com/users/miguelsolano/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/miguelsolano/subscriptions", "organizations_url": "https://api.github.com/users/miguelsolano/orgs", "repos_url": "https://api.github.com/users/miguelsolano/repos", "events_url": "https://api.github.com/users/miguelsolano/events{/privacy}", "received_events_url": "https://api.github.com/users/miguelsolano/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\nAllows rails to implement the both the content-security-policy and content-security-policy-report-only headers on requests. \r\n\r\n### Other Information\r\n\r\nImplementing CSP headers as a side effect of HTTP spec convention rather than something that is configurable through configuration. This is a work and progress and will attempt to get it done this week \ud83d\udc4d \r\n", "created_at": "2020-10-27T03:50:38Z", "updated_at": "2020-10-27T03:50:41Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "2c605f16a8f12ab004ed8066604c1b9d31d3f47b", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107189, "node_id": "MDU6TGFiZWwxMDcxODk=", "url": "https://api.github.com/repos/rails/rails/labels/actionpack", "name": "actionpack", "color": "FFF700", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40460/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40460/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40460/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/24df554b86460024404d6e47c54ba7a8cf8574b7", "head": { "label": "miguelsolano:feature/multiple-csp-policies", "ref": "feature/multiple-csp-policies", "sha": "24df554b86460024404d6e47c54ba7a8cf8574b7", "user": { "login": "miguelsolano", "id": 11316277, "node_id": "MDQ6VXNlcjExMzE2Mjc3", "avatar_url": "https://avatars1.githubusercontent.com/u/11316277?v=4", "gravatar_id": "", "url": "https://api.github.com/users/miguelsolano", "html_url": "https://github.com/miguelsolano", "followers_url": "https://api.github.com/users/miguelsolano/followers", "following_url": "https://api.github.com/users/miguelsolano/following{/other_user}", "gists_url": "https://api.github.com/users/miguelsolano/gists{/gist_id}", "starred_url": "https://api.github.com/users/miguelsolano/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/miguelsolano/subscriptions", "organizations_url": "https://api.github.com/users/miguelsolano/orgs", "repos_url": "https://api.github.com/users/miguelsolano/repos", "events_url": "https://api.github.com/users/miguelsolano/events{/privacy}", "received_events_url": "https://api.github.com/users/miguelsolano/received_events", "type": "User", "site_admin": false }, "repo": { "id": 307223365, "node_id": "MDEwOlJlcG9zaXRvcnkzMDcyMjMzNjU=", "name": "rails", "full_name": "miguelsolano/rails", "private": false, "owner": { "login": "miguelsolano", "id": 11316277, "node_id": "MDQ6VXNlcjExMzE2Mjc3", "avatar_url": "https://avatars1.githubusercontent.com/u/11316277?v=4", "gravatar_id": "", "url": "https://api.github.com/users/miguelsolano", "html_url": "https://github.com/miguelsolano", "followers_url": "https://api.github.com/users/miguelsolano/followers", "following_url": "https://api.github.com/users/miguelsolano/following{/other_user}", "gists_url": "https://api.github.com/users/miguelsolano/gists{/gist_id}", "starred_url": "https://api.github.com/users/miguelsolano/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/miguelsolano/subscriptions", "organizations_url": "https://api.github.com/users/miguelsolano/orgs", "repos_url": "https://api.github.com/users/miguelsolano/repos", "events_url": "https://api.github.com/users/miguelsolano/events{/privacy}", "received_events_url": "https://api.github.com/users/miguelsolano/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/miguelsolano/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/miguelsolano/rails", "forks_url": "https://api.github.com/repos/miguelsolano/rails/forks", "keys_url": "https://api.github.com/repos/miguelsolano/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/miguelsolano/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/miguelsolano/rails/teams", "hooks_url": "https://api.github.com/repos/miguelsolano/rails/hooks", "issue_events_url": "https://api.github.com/repos/miguelsolano/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/miguelsolano/rails/events", "assignees_url": "https://api.github.com/repos/miguelsolano/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/miguelsolano/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/miguelsolano/rails/tags", "blobs_url": "https://api.github.com/repos/miguelsolano/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/miguelsolano/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/miguelsolano/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/miguelsolano/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/miguelsolano/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/miguelsolano/rails/languages", "stargazers_url": "https://api.github.com/repos/miguelsolano/rails/stargazers", "contributors_url": "https://api.github.com/repos/miguelsolano/rails/contributors", "subscribers_url": "https://api.github.com/repos/miguelsolano/rails/subscribers", "subscription_url": "https://api.github.com/repos/miguelsolano/rails/subscription", "commits_url": "https://api.github.com/repos/miguelsolano/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/miguelsolano/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/miguelsolano/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/miguelsolano/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/miguelsolano/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/miguelsolano/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/miguelsolano/rails/merges", "archive_url": "https://api.github.com/repos/miguelsolano/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/miguelsolano/rails/downloads", "issues_url": "https://api.github.com/repos/miguelsolano/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/miguelsolano/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/miguelsolano/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/miguelsolano/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/miguelsolano/rails/labels{/name}", "releases_url": "https://api.github.com/repos/miguelsolano/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/miguelsolano/rails/deployments", "created_at": "2020-10-26T00:40:34Z", "updated_at": "2020-10-27T00:33:16Z", "pushed_at": "2020-10-27T03:50:03Z", "git_url": "git://github.com/miguelsolano/rails.git", "ssh_url": "git@github.com:miguelsolano/rails.git", "clone_url": "https://github.com/miguelsolano/rails.git", "svn_url": "https://github.com/miguelsolano/rails", "homepage": "https://rubyonrails.org", "size": 228804, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "b439b78705b7998cc6b1a26e5f90ffa972f2779b", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40460" }, "html": { "href": "https://github.com/rails/rails/pull/40460" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40460" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40460/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40460/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40460/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/24df554b86460024404d6e47c54ba7a8cf8574b7" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40456", "id": 509902800, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5OTAyODAw", "html_url": "https://github.com/rails/rails/pull/40456", "diff_url": "https://github.com/rails/rails/pull/40456.diff", "patch_url": "https://github.com/rails/rails/pull/40456.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40456", "number": 40456, "state": "open", "locked": false, "title": "Add `attribute_for_database` attribute method", "user": { "login": "kamipo", "id": 12642, "node_id": "MDQ6VXNlcjEyNjQy", "avatar_url": "https://avatars0.githubusercontent.com/u/12642?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kamipo", "html_url": "https://github.com/kamipo", "followers_url": "https://api.github.com/users/kamipo/followers", "following_url": "https://api.github.com/users/kamipo/following{/other_user}", "gists_url": "https://api.github.com/users/kamipo/gists{/gist_id}", "starred_url": "https://api.github.com/users/kamipo/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kamipo/subscriptions", "organizations_url": "https://api.github.com/users/kamipo/orgs", "repos_url": "https://api.github.com/users/kamipo/repos", "events_url": "https://api.github.com/users/kamipo/events{/privacy}", "received_events_url": "https://api.github.com/users/kamipo/received_events", "type": "User", "site_admin": false }, "body": "I've been reported an issue on enum from friends, they want a way to get\r\nmapped value, but currently there is no reliable way to get that value.\r\n\r\nIf a record is loaded from database, `attribute_before_type_cast` works\r\nfor that. but the attribute is changed by user, the attribute method\r\nwon't work for that.\r\n\r\n```ruby\r\nbook = Book.new(status: \"published\")\r\n\r\n# returns \"published\", but what we really want is 2.\r\nbook.status_before_type_cast\r\n```\r\n\r\nSo I propose to add `attribute_for_database` attribute method, it\r\nconsistently returns mapped value for enum.\r\n\r\n~~Originally `attribute_before_type_cast` on enum returned mapped value,\r\nbut it was changed in Rails 5.0 (c51f9b6) to return user supplied raw\r\nvalue.~~\r\n\r\n~~I've been reported this issue from friends, they want a way to get\r\nmapped value, but currently that way remains lost.~~\r\n\r\n~~So I propose to add `attribute_for_database` attribute method, it\r\nbehaves the same way as the previous `attribute_before_type_cast` for\r\nenum.~~\r\n", "created_at": "2020-10-26T09:41:54Z", "updated_at": "2020-10-26T14:28:22Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "ecdb9a9ad491074990dcf04bf5a02e5e9d9932aa", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40456/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40456/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40456/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/1429893b24d8c8d6fed5cfca6204eed995fb70e1", "head": { "label": "kamipo:attribute_for_database", "ref": "attribute_for_database", "sha": "1429893b24d8c8d6fed5cfca6204eed995fb70e1", "user": { "login": "kamipo", "id": 12642, "node_id": "MDQ6VXNlcjEyNjQy", "avatar_url": "https://avatars0.githubusercontent.com/u/12642?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kamipo", "html_url": "https://github.com/kamipo", "followers_url": "https://api.github.com/users/kamipo/followers", "following_url": "https://api.github.com/users/kamipo/following{/other_user}", "gists_url": "https://api.github.com/users/kamipo/gists{/gist_id}", "starred_url": "https://api.github.com/users/kamipo/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kamipo/subscriptions", "organizations_url": "https://api.github.com/users/kamipo/orgs", "repos_url": "https://api.github.com/users/kamipo/repos", "events_url": "https://api.github.com/users/kamipo/events{/privacy}", "received_events_url": "https://api.github.com/users/kamipo/received_events", "type": "User", "site_admin": false }, "repo": { "id": 14544189, "node_id": "MDEwOlJlcG9zaXRvcnkxNDU0NDE4OQ==", "name": "rails", "full_name": "kamipo/rails", "private": false, "owner": { "login": "kamipo", "id": 12642, "node_id": "MDQ6VXNlcjEyNjQy", "avatar_url": "https://avatars0.githubusercontent.com/u/12642?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kamipo", "html_url": "https://github.com/kamipo", "followers_url": "https://api.github.com/users/kamipo/followers", "following_url": "https://api.github.com/users/kamipo/following{/other_user}", "gists_url": "https://api.github.com/users/kamipo/gists{/gist_id}", "starred_url": "https://api.github.com/users/kamipo/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kamipo/subscriptions", "organizations_url": "https://api.github.com/users/kamipo/orgs", "repos_url": "https://api.github.com/users/kamipo/repos", "events_url": "https://api.github.com/users/kamipo/events{/privacy}", "received_events_url": "https://api.github.com/users/kamipo/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/kamipo/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/kamipo/rails", "forks_url": "https://api.github.com/repos/kamipo/rails/forks", "keys_url": "https://api.github.com/repos/kamipo/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/kamipo/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/kamipo/rails/teams", "hooks_url": "https://api.github.com/repos/kamipo/rails/hooks", "issue_events_url": "https://api.github.com/repos/kamipo/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/kamipo/rails/events", "assignees_url": "https://api.github.com/repos/kamipo/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/kamipo/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/kamipo/rails/tags", "blobs_url": "https://api.github.com/repos/kamipo/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/kamipo/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/kamipo/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/kamipo/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/kamipo/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/kamipo/rails/languages", "stargazers_url": "https://api.github.com/repos/kamipo/rails/stargazers", "contributors_url": "https://api.github.com/repos/kamipo/rails/contributors", "subscribers_url": "https://api.github.com/repos/kamipo/rails/subscribers", "subscription_url": "https://api.github.com/repos/kamipo/rails/subscription", "commits_url": "https://api.github.com/repos/kamipo/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/kamipo/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/kamipo/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/kamipo/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/kamipo/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/kamipo/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/kamipo/rails/merges", "archive_url": "https://api.github.com/repos/kamipo/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/kamipo/rails/downloads", "issues_url": "https://api.github.com/repos/kamipo/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/kamipo/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/kamipo/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/kamipo/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/kamipo/rails/labels{/name}", "releases_url": "https://api.github.com/repos/kamipo/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/kamipo/rails/deployments", "created_at": "2013-11-20T02:14:22Z", "updated_at": "2015-02-16T07:18:13Z", "pushed_at": "2020-10-26T10:07:59Z", "git_url": "git://github.com/kamipo/rails.git", "ssh_url": "git@github.com:kamipo/rails.git", "clone_url": "https://github.com/kamipo/rails.git", "svn_url": "https://github.com/kamipo/rails", "homepage": "http://rubyonrails.org", "size": 183352, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "1f5a4d1d5e68106eaa897e49a874bef24bf4c63c", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40456" }, "html": { "href": "https://github.com/rails/rails/pull/40456" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40456" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40456/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40456/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40456/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/1429893b24d8c8d6fed5cfca6204eed995fb70e1" } }, "author_association": "MEMBER", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40449", "id": 509520061, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5NTIwMDYx", "html_url": "https://github.com/rails/rails/pull/40449", "diff_url": "https://github.com/rails/rails/pull/40449.diff", "patch_url": "https://github.com/rails/rails/pull/40449.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40449", "number": 40449, "state": "open", "locked": false, "title": "Option to mute multiple database yml error", "user": { "login": "OmriSama", "id": 10534779, "node_id": "MDQ6VXNlcjEwNTM0Nzc5", "avatar_url": "https://avatars3.githubusercontent.com/u/10534779?v=4", "gravatar_id": "", "url": "https://api.github.com/users/OmriSama", "html_url": "https://github.com/OmriSama", "followers_url": "https://api.github.com/users/OmriSama/followers", "following_url": "https://api.github.com/users/OmriSama/following{/other_user}", "gists_url": "https://api.github.com/users/OmriSama/gists{/gist_id}", "starred_url": "https://api.github.com/users/OmriSama/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/OmriSama/subscriptions", "organizations_url": "https://api.github.com/users/OmriSama/orgs", "repos_url": "https://api.github.com/users/OmriSama/repos", "events_url": "https://api.github.com/users/OmriSama/events{/privacy}", "received_events_url": "https://api.github.com/users/OmriSama/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nThis merge request allows users to suppress the warning shown by ` ActiveRecord::Tasks::DatabaseTasks.setup_initial_database_yaml`.\r\n\r\n### Other Information\r\n\r\n@eileencodes mentioned that this would be merged, if someone built it: https://github.com/rails/rails/pull/36560#issuecomment-559180204\r\n", "created_at": "2020-10-25T01:23:59Z", "updated_at": "2020-10-27T16:29:36Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "a5c6bbe36aeb0c6f1a51308f5cc6949255736249", "assignee": null, "assignees": [], "requested_reviewers": [ { "login": "eileencodes", "id": 1080678, "node_id": "MDQ6VXNlcjEwODA2Nzg=", "avatar_url": "https://avatars0.githubusercontent.com/u/1080678?v=4", "gravatar_id": "", "url": "https://api.github.com/users/eileencodes", "html_url": "https://github.com/eileencodes", "followers_url": "https://api.github.com/users/eileencodes/followers", "following_url": "https://api.github.com/users/eileencodes/following{/other_user}", "gists_url": "https://api.github.com/users/eileencodes/gists{/gist_id}", "starred_url": "https://api.github.com/users/eileencodes/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/eileencodes/subscriptions", "organizations_url": "https://api.github.com/users/eileencodes/orgs", "repos_url": "https://api.github.com/users/eileencodes/repos", "events_url": "https://api.github.com/users/eileencodes/events{/privacy}", "received_events_url": "https://api.github.com/users/eileencodes/received_events", "type": "User", "site_admin": true } ], "requested_teams": [], "labels": [ { "id": 1174770998, "node_id": "MDU6TGFiZWwxMTc0NzcwOTk4", "url": "https://api.github.com/repos/rails/rails/labels/actionmailbox", "name": "actionmailbox", "color": "f4a6cb", "default": false, "description": "" }, { "id": 1180817762, "node_id": "MDU6TGFiZWwxMTgwODE3NzYy", "url": "https://api.github.com/repos/rails/rails/labels/actiontext", "name": "actiontext", "color": "3bc667", "default": false, "description": "" }, { "id": 3666649, "node_id": "MDU6TGFiZWwzNjY2NjQ5", "url": "https://api.github.com/repos/rails/rails/labels/actionview", "name": "actionview", "color": "d7e102", "default": false, "description": null }, { "id": 123812746, "node_id": "MDU6TGFiZWwxMjM4MTI3NDY=", "url": "https://api.github.com/repos/rails/rails/labels/activejob", "name": "activejob", "color": "5319e7", "default": false, "description": null }, { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null }, { "id": 107195, "node_id": "MDU6TGFiZWwxMDcxOTU=", "url": "https://api.github.com/repos/rails/rails/labels/railties", "name": "railties", "color": "8BE06E", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40449/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40449/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40449/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/c232a8e8ff9b1fac10df73f0669462ac27f53620", "head": { "label": "OmriSama:option_to_mute_multiple_database_yml_error", "ref": "option_to_mute_multiple_database_yml_error", "sha": "c232a8e8ff9b1fac10df73f0669462ac27f53620", "user": { "login": "OmriSama", "id": 10534779, "node_id": "MDQ6VXNlcjEwNTM0Nzc5", "avatar_url": "https://avatars3.githubusercontent.com/u/10534779?v=4", "gravatar_id": "", "url": "https://api.github.com/users/OmriSama", "html_url": "https://github.com/OmriSama", "followers_url": "https://api.github.com/users/OmriSama/followers", "following_url": "https://api.github.com/users/OmriSama/following{/other_user}", "gists_url": "https://api.github.com/users/OmriSama/gists{/gist_id}", "starred_url": "https://api.github.com/users/OmriSama/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/OmriSama/subscriptions", "organizations_url": "https://api.github.com/users/OmriSama/orgs", "repos_url": "https://api.github.com/users/OmriSama/repos", "events_url": "https://api.github.com/users/OmriSama/events{/privacy}", "received_events_url": "https://api.github.com/users/OmriSama/received_events", "type": "User", "site_admin": false }, "repo": { "id": 307001726, "node_id": "MDEwOlJlcG9zaXRvcnkzMDcwMDE3MjY=", "name": "rails", "full_name": "OmriSama/rails", "private": false, "owner": { "login": "OmriSama", "id": 10534779, "node_id": "MDQ6VXNlcjEwNTM0Nzc5", "avatar_url": "https://avatars3.githubusercontent.com/u/10534779?v=4", "gravatar_id": "", "url": "https://api.github.com/users/OmriSama", "html_url": "https://github.com/OmriSama", "followers_url": "https://api.github.com/users/OmriSama/followers", "following_url": "https://api.github.com/users/OmriSama/following{/other_user}", "gists_url": "https://api.github.com/users/OmriSama/gists{/gist_id}", "starred_url": "https://api.github.com/users/OmriSama/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/OmriSama/subscriptions", "organizations_url": "https://api.github.com/users/OmriSama/orgs", "repos_url": "https://api.github.com/users/OmriSama/repos", "events_url": "https://api.github.com/users/OmriSama/events{/privacy}", "received_events_url": "https://api.github.com/users/OmriSama/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/OmriSama/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/OmriSama/rails", "forks_url": "https://api.github.com/repos/OmriSama/rails/forks", "keys_url": "https://api.github.com/repos/OmriSama/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/OmriSama/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/OmriSama/rails/teams", "hooks_url": "https://api.github.com/repos/OmriSama/rails/hooks", "issue_events_url": "https://api.github.com/repos/OmriSama/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/OmriSama/rails/events", "assignees_url": "https://api.github.com/repos/OmriSama/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/OmriSama/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/OmriSama/rails/tags", "blobs_url": "https://api.github.com/repos/OmriSama/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/OmriSama/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/OmriSama/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/OmriSama/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/OmriSama/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/OmriSama/rails/languages", "stargazers_url": "https://api.github.com/repos/OmriSama/rails/stargazers", "contributors_url": "https://api.github.com/repos/OmriSama/rails/contributors", "subscribers_url": "https://api.github.com/repos/OmriSama/rails/subscribers", "subscription_url": "https://api.github.com/repos/OmriSama/rails/subscription", "commits_url": "https://api.github.com/repos/OmriSama/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/OmriSama/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/OmriSama/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/OmriSama/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/OmriSama/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/OmriSama/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/OmriSama/rails/merges", "archive_url": "https://api.github.com/repos/OmriSama/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/OmriSama/rails/downloads", "issues_url": "https://api.github.com/repos/OmriSama/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/OmriSama/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/OmriSama/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/OmriSama/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/OmriSama/rails/labels{/name}", "releases_url": "https://api.github.com/repos/OmriSama/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/OmriSama/rails/deployments", "created_at": "2020-10-25T01:19:58Z", "updated_at": "2020-10-25T01:20:00Z", "pushed_at": "2020-10-27T16:29:11Z", "git_url": "git://github.com/OmriSama/rails.git", "ssh_url": "git@github.com:OmriSama/rails.git", "clone_url": "https://github.com/OmriSama/rails.git", "svn_url": "https://github.com/OmriSama/rails", "homepage": "https://rubyonrails.org", "size": 228822, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "c9ddceab6dce9ecbe47f21dbd8c99371462c3e0a", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40449" }, "html": { "href": "https://github.com/rails/rails/pull/40449" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40449" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40449/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40449/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40449/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/c232a8e8ff9b1fac10df73f0669462ac27f53620" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40448", "id": 509519525, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5NTE5NTI1", "html_url": "https://github.com/rails/rails/pull/40448", "diff_url": "https://github.com/rails/rails/pull/40448.diff", "patch_url": "https://github.com/rails/rails/pull/40448.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40448", "number": 40448, "state": "open", "locked": false, "title": "Fix: TimeWithzone bug", "user": { "login": "BKSpurgeon", "id": 15097447, "node_id": "MDQ6VXNlcjE1MDk3NDQ3", "avatar_url": "https://avatars2.githubusercontent.com/u/15097447?v=4", "gravatar_id": "", "url": "https://api.github.com/users/BKSpurgeon", "html_url": "https://github.com/BKSpurgeon", "followers_url": "https://api.github.com/users/BKSpurgeon/followers", "following_url": "https://api.github.com/users/BKSpurgeon/following{/other_user}", "gists_url": "https://api.github.com/users/BKSpurgeon/gists{/gist_id}", "starred_url": "https://api.github.com/users/BKSpurgeon/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/BKSpurgeon/subscriptions", "organizations_url": "https://api.github.com/users/BKSpurgeon/orgs", "repos_url": "https://api.github.com/users/BKSpurgeon/repos", "events_url": "https://api.github.com/users/BKSpurgeon/events{/privacy}", "received_events_url": "https://api.github.com/users/BKSpurgeon/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\n### What was the problem?\r\nThere was a rounding off issue here when we were comparing TimeWithZone times with DateTime raised in #40413. I have written a failing test and made it pass.\r\n\r\n### How did we fix it?\r\nThe problem was that when we using time_instance.to_f - this was not accurate enough in certain cases. I have attempted to solve it by ensuring that we use Rationals when creating Time instances time_instance.to_r . (there is a slight performance cost to this, but the benefit is accuracy). \r\n\r\n\r\nThanks for reviewing and I hope this helps.\r\n\r\nrgds,\r\nBen\r\n\r\n", "created_at": "2020-10-25T01:17:37Z", "updated_at": "2020-10-25T20:40:14Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "0a72eaa9f9fc2cf08193853b031e741724db2e01", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107194, "node_id": "MDU6TGFiZWwxMDcxOTQ=", "url": "https://api.github.com/repos/rails/rails/labels/activesupport", "name": "activesupport", "color": "FC9300", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40448/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40448/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40448/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/0719b9412db6b51f5d954fd90e71a9b50dd98a4d", "head": { "label": "BKSpurgeon:fix-timezone-rounding-bug", "ref": "fix-timezone-rounding-bug", "sha": "0719b9412db6b51f5d954fd90e71a9b50dd98a4d", "user": { "login": "BKSpurgeon", "id": 15097447, "node_id": "MDQ6VXNlcjE1MDk3NDQ3", "avatar_url": "https://avatars2.githubusercontent.com/u/15097447?v=4", "gravatar_id": "", "url": "https://api.github.com/users/BKSpurgeon", "html_url": "https://github.com/BKSpurgeon", "followers_url": "https://api.github.com/users/BKSpurgeon/followers", "following_url": "https://api.github.com/users/BKSpurgeon/following{/other_user}", "gists_url": "https://api.github.com/users/BKSpurgeon/gists{/gist_id}", "starred_url": "https://api.github.com/users/BKSpurgeon/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/BKSpurgeon/subscriptions", "organizations_url": "https://api.github.com/users/BKSpurgeon/orgs", "repos_url": "https://api.github.com/users/BKSpurgeon/repos", "events_url": "https://api.github.com/users/BKSpurgeon/events{/privacy}", "received_events_url": "https://api.github.com/users/BKSpurgeon/received_events", "type": "User", "site_admin": false }, "repo": { "id": 216344172, "node_id": "MDEwOlJlcG9zaXRvcnkyMTYzNDQxNzI=", "name": "rails", "full_name": "BKSpurgeon/rails", "private": false, "owner": { "login": "BKSpurgeon", "id": 15097447, "node_id": "MDQ6VXNlcjE1MDk3NDQ3", "avatar_url": "https://avatars2.githubusercontent.com/u/15097447?v=4", "gravatar_id": "", "url": "https://api.github.com/users/BKSpurgeon", "html_url": "https://github.com/BKSpurgeon", "followers_url": "https://api.github.com/users/BKSpurgeon/followers", "following_url": "https://api.github.com/users/BKSpurgeon/following{/other_user}", "gists_url": "https://api.github.com/users/BKSpurgeon/gists{/gist_id}", "starred_url": "https://api.github.com/users/BKSpurgeon/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/BKSpurgeon/subscriptions", "organizations_url": "https://api.github.com/users/BKSpurgeon/orgs", "repos_url": "https://api.github.com/users/BKSpurgeon/repos", "events_url": "https://api.github.com/users/BKSpurgeon/events{/privacy}", "received_events_url": "https://api.github.com/users/BKSpurgeon/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/BKSpurgeon/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/BKSpurgeon/rails", "forks_url": "https://api.github.com/repos/BKSpurgeon/rails/forks", "keys_url": "https://api.github.com/repos/BKSpurgeon/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/BKSpurgeon/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/BKSpurgeon/rails/teams", "hooks_url": "https://api.github.com/repos/BKSpurgeon/rails/hooks", "issue_events_url": "https://api.github.com/repos/BKSpurgeon/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/BKSpurgeon/rails/events", "assignees_url": "https://api.github.com/repos/BKSpurgeon/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/BKSpurgeon/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/BKSpurgeon/rails/tags", "blobs_url": "https://api.github.com/repos/BKSpurgeon/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/BKSpurgeon/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/BKSpurgeon/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/BKSpurgeon/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/BKSpurgeon/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/BKSpurgeon/rails/languages", "stargazers_url": "https://api.github.com/repos/BKSpurgeon/rails/stargazers", "contributors_url": "https://api.github.com/repos/BKSpurgeon/rails/contributors", "subscribers_url": "https://api.github.com/repos/BKSpurgeon/rails/subscribers", "subscription_url": "https://api.github.com/repos/BKSpurgeon/rails/subscription", "commits_url": "https://api.github.com/repos/BKSpurgeon/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/BKSpurgeon/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/BKSpurgeon/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/BKSpurgeon/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/BKSpurgeon/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/BKSpurgeon/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/BKSpurgeon/rails/merges", "archive_url": "https://api.github.com/repos/BKSpurgeon/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/BKSpurgeon/rails/downloads", "issues_url": "https://api.github.com/repos/BKSpurgeon/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/BKSpurgeon/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/BKSpurgeon/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/BKSpurgeon/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/BKSpurgeon/rails/labels{/name}", "releases_url": "https://api.github.com/repos/BKSpurgeon/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/BKSpurgeon/rails/deployments", "created_at": "2019-10-20T10:30:48Z", "updated_at": "2020-10-24T13:34:40Z", "pushed_at": "2020-10-25T11:27:37Z", "git_url": "git://github.com/BKSpurgeon/rails.git", "ssh_url": "git@github.com:BKSpurgeon/rails.git", "clone_url": "https://github.com/BKSpurgeon/rails.git", "svn_url": "https://github.com/BKSpurgeon/rails", "homepage": "https://rubyonrails.org", "size": 196925, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "154ee7b4b0318e08997a8f1251e3fd77cbb591f0", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40448" }, "html": { "href": "https://github.com/rails/rails/pull/40448" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40448" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40448/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40448/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40448/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/0719b9412db6b51f5d954fd90e71a9b50dd98a4d" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40445", "id": 509411318, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5NDExMzE4", "html_url": "https://github.com/rails/rails/pull/40445", "diff_url": "https://github.com/rails/rails/pull/40445.diff", "patch_url": "https://github.com/rails/rails/pull/40445.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40445", "number": 40445, "state": "open", "locked": false, "title": "ActiveRecord::Relation#destroy_all perform its work in batches", "user": { "login": "robertomiranda", "id": 505427, "node_id": "MDQ6VXNlcjUwNTQyNw==", "avatar_url": "https://avatars3.githubusercontent.com/u/505427?v=4", "gravatar_id": "", "url": "https://api.github.com/users/robertomiranda", "html_url": "https://github.com/robertomiranda", "followers_url": "https://api.github.com/users/robertomiranda/followers", "following_url": "https://api.github.com/users/robertomiranda/following{/other_user}", "gists_url": "https://api.github.com/users/robertomiranda/gists{/gist_id}", "starred_url": "https://api.github.com/users/robertomiranda/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/robertomiranda/subscriptions", "organizations_url": "https://api.github.com/users/robertomiranda/orgs", "repos_url": "https://api.github.com/users/robertomiranda/repos", "events_url": "https://api.github.com/users/robertomiranda/events{/privacy}", "received_events_url": "https://api.github.com/users/robertomiranda/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\n> Since destroy_all actually loads the entire relation and then iteratively destroys the records one by one, you can blow your memory gasket very easily. So let's do the right thing by default and do this work in batches of 100 by default and allow you to specify the batch size like so: #destroy_all(batch_size: 100).\r\n\r\n\r\ncloses https://github.com/rails/rails/issues/22510\r\n", "created_at": "2020-10-24T10:38:29Z", "updated_at": "2020-10-26T23:57:12Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "6e87201663e55f394ae24c5244734cd1c7ecf06b", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40445/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40445/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40445/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/aeed2bce2009a45fb9c39aa1069cc83631424a14", "head": { "label": "robertomiranda:destroy_all-in_batcches", "ref": "destroy_all-in_batcches", "sha": "aeed2bce2009a45fb9c39aa1069cc83631424a14", "user": { "login": "robertomiranda", "id": 505427, "node_id": "MDQ6VXNlcjUwNTQyNw==", "avatar_url": "https://avatars3.githubusercontent.com/u/505427?v=4", "gravatar_id": "", "url": "https://api.github.com/users/robertomiranda", "html_url": "https://github.com/robertomiranda", "followers_url": "https://api.github.com/users/robertomiranda/followers", "following_url": "https://api.github.com/users/robertomiranda/following{/other_user}", "gists_url": "https://api.github.com/users/robertomiranda/gists{/gist_id}", "starred_url": "https://api.github.com/users/robertomiranda/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/robertomiranda/subscriptions", "organizations_url": "https://api.github.com/users/robertomiranda/orgs", "repos_url": "https://api.github.com/users/robertomiranda/repos", "events_url": "https://api.github.com/users/robertomiranda/events{/privacy}", "received_events_url": "https://api.github.com/users/robertomiranda/received_events", "type": "User", "site_admin": false }, "repo": { "id": 3982960, "node_id": "MDEwOlJlcG9zaXRvcnkzOTgyOTYw", "name": "rails", "full_name": "robertomiranda/rails", "private": false, "owner": { "login": "robertomiranda", "id": 505427, "node_id": "MDQ6VXNlcjUwNTQyNw==", "avatar_url": "https://avatars3.githubusercontent.com/u/505427?v=4", "gravatar_id": "", "url": "https://api.github.com/users/robertomiranda", "html_url": "https://github.com/robertomiranda", "followers_url": "https://api.github.com/users/robertomiranda/followers", "following_url": "https://api.github.com/users/robertomiranda/following{/other_user}", "gists_url": "https://api.github.com/users/robertomiranda/gists{/gist_id}", "starred_url": "https://api.github.com/users/robertomiranda/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/robertomiranda/subscriptions", "organizations_url": "https://api.github.com/users/robertomiranda/orgs", "repos_url": "https://api.github.com/users/robertomiranda/repos", "events_url": "https://api.github.com/users/robertomiranda/events{/privacy}", "received_events_url": "https://api.github.com/users/robertomiranda/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/robertomiranda/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/robertomiranda/rails", "forks_url": "https://api.github.com/repos/robertomiranda/rails/forks", "keys_url": "https://api.github.com/repos/robertomiranda/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/robertomiranda/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/robertomiranda/rails/teams", "hooks_url": "https://api.github.com/repos/robertomiranda/rails/hooks", "issue_events_url": "https://api.github.com/repos/robertomiranda/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/robertomiranda/rails/events", "assignees_url": "https://api.github.com/repos/robertomiranda/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/robertomiranda/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/robertomiranda/rails/tags", "blobs_url": "https://api.github.com/repos/robertomiranda/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/robertomiranda/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/robertomiranda/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/robertomiranda/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/robertomiranda/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/robertomiranda/rails/languages", "stargazers_url": "https://api.github.com/repos/robertomiranda/rails/stargazers", "contributors_url": "https://api.github.com/repos/robertomiranda/rails/contributors", "subscribers_url": "https://api.github.com/repos/robertomiranda/rails/subscribers", "subscription_url": "https://api.github.com/repos/robertomiranda/rails/subscription", "commits_url": "https://api.github.com/repos/robertomiranda/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/robertomiranda/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/robertomiranda/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/robertomiranda/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/robertomiranda/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/robertomiranda/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/robertomiranda/rails/merges", "archive_url": "https://api.github.com/repos/robertomiranda/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/robertomiranda/rails/downloads", "issues_url": "https://api.github.com/repos/robertomiranda/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/robertomiranda/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/robertomiranda/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/robertomiranda/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/robertomiranda/rails/labels{/name}", "releases_url": "https://api.github.com/repos/robertomiranda/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/robertomiranda/rails/deployments", "created_at": "2012-04-10T14:11:07Z", "updated_at": "2019-04-11T15:52:16Z", "pushed_at": "2020-10-24T13:29:44Z", "git_url": "git://github.com/robertomiranda/rails.git", "ssh_url": "git@github.com:robertomiranda/rails.git", "clone_url": "https://github.com/robertomiranda/rails.git", "svn_url": "https://github.com/robertomiranda/rails", "homepage": "http://rubyonrails.org", "size": 187758, "stargazers_count": 2, "watchers_count": 2, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 2, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "7e2d8434ed42d6fbf7f4743d033d50ad92ebe4da", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40445" }, "html": { "href": "https://github.com/rails/rails/pull/40445" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40445" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40445/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40445/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40445/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/aeed2bce2009a45fb9c39aa1069cc83631424a14" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40444", "id": 509228452, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5MjI4NDUy", "html_url": "https://github.com/rails/rails/pull/40444", "diff_url": "https://github.com/rails/rails/pull/40444.diff", "patch_url": "https://github.com/rails/rails/pull/40444.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40444", "number": 40444, "state": "open", "locked": false, "title": "Update Associations::Association#reset comments [ci-skip]", "user": { "login": "bobmazanec", "id": 2031462, "node_id": "MDQ6VXNlcjIwMzE0NjI=", "avatar_url": "https://avatars3.githubusercontent.com/u/2031462?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bobmazanec", "html_url": "https://github.com/bobmazanec", "followers_url": "https://api.github.com/users/bobmazanec/followers", "following_url": "https://api.github.com/users/bobmazanec/following{/other_user}", "gists_url": "https://api.github.com/users/bobmazanec/gists{/gist_id}", "starred_url": "https://api.github.com/users/bobmazanec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bobmazanec/subscriptions", "organizations_url": "https://api.github.com/users/bobmazanec/orgs", "repos_url": "https://api.github.com/users/bobmazanec/repos", "events_url": "https://api.github.com/users/bobmazanec/events{/privacy}", "received_events_url": "https://api.github.com/users/bobmazanec/received_events", "type": "User", "site_admin": false }, "body": "### Summary\n\nReflect @stale_state (1e417d5) and @inversed (05b1780)\n\n### Other Information\n\nReferral from CodeTriage", "created_at": "2020-10-23T21:36:52Z", "updated_at": "2020-10-23T21:37:24Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "c3676828ee4f06390c4642bf0ce1304164a8a6db", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40444/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40444/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40444/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/3e9167c6e1ad9b36c978656581c7b0e71b12049e", "head": { "label": "bobmazanec:doc-association-reset", "ref": "doc-association-reset", "sha": "3e9167c6e1ad9b36c978656581c7b0e71b12049e", "user": { "login": "bobmazanec", "id": 2031462, "node_id": "MDQ6VXNlcjIwMzE0NjI=", "avatar_url": "https://avatars3.githubusercontent.com/u/2031462?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bobmazanec", "html_url": "https://github.com/bobmazanec", "followers_url": "https://api.github.com/users/bobmazanec/followers", "following_url": "https://api.github.com/users/bobmazanec/following{/other_user}", "gists_url": "https://api.github.com/users/bobmazanec/gists{/gist_id}", "starred_url": "https://api.github.com/users/bobmazanec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bobmazanec/subscriptions", "organizations_url": "https://api.github.com/users/bobmazanec/orgs", "repos_url": "https://api.github.com/users/bobmazanec/repos", "events_url": "https://api.github.com/users/bobmazanec/events{/privacy}", "received_events_url": "https://api.github.com/users/bobmazanec/received_events", "type": "User", "site_admin": false }, "repo": { "id": 306095250, "node_id": "MDEwOlJlcG9zaXRvcnkzMDYwOTUyNTA=", "name": "rails", "full_name": "bobmazanec/rails", "private": false, "owner": { "login": "bobmazanec", "id": 2031462, "node_id": "MDQ6VXNlcjIwMzE0NjI=", "avatar_url": "https://avatars3.githubusercontent.com/u/2031462?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bobmazanec", "html_url": "https://github.com/bobmazanec", "followers_url": "https://api.github.com/users/bobmazanec/followers", "following_url": "https://api.github.com/users/bobmazanec/following{/other_user}", "gists_url": "https://api.github.com/users/bobmazanec/gists{/gist_id}", "starred_url": "https://api.github.com/users/bobmazanec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bobmazanec/subscriptions", "organizations_url": "https://api.github.com/users/bobmazanec/orgs", "repos_url": "https://api.github.com/users/bobmazanec/repos", "events_url": "https://api.github.com/users/bobmazanec/events{/privacy}", "received_events_url": "https://api.github.com/users/bobmazanec/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/bobmazanec/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/bobmazanec/rails", "forks_url": "https://api.github.com/repos/bobmazanec/rails/forks", "keys_url": "https://api.github.com/repos/bobmazanec/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/bobmazanec/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/bobmazanec/rails/teams", "hooks_url": "https://api.github.com/repos/bobmazanec/rails/hooks", "issue_events_url": "https://api.github.com/repos/bobmazanec/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/bobmazanec/rails/events", "assignees_url": "https://api.github.com/repos/bobmazanec/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/bobmazanec/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/bobmazanec/rails/tags", "blobs_url": "https://api.github.com/repos/bobmazanec/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/bobmazanec/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/bobmazanec/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/bobmazanec/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/bobmazanec/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/bobmazanec/rails/languages", "stargazers_url": "https://api.github.com/repos/bobmazanec/rails/stargazers", "contributors_url": "https://api.github.com/repos/bobmazanec/rails/contributors", "subscribers_url": "https://api.github.com/repos/bobmazanec/rails/subscribers", "subscription_url": "https://api.github.com/repos/bobmazanec/rails/subscription", "commits_url": "https://api.github.com/repos/bobmazanec/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/bobmazanec/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/bobmazanec/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/bobmazanec/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/bobmazanec/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/bobmazanec/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/bobmazanec/rails/merges", "archive_url": "https://api.github.com/repos/bobmazanec/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/bobmazanec/rails/downloads", "issues_url": "https://api.github.com/repos/bobmazanec/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/bobmazanec/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/bobmazanec/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/bobmazanec/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/bobmazanec/rails/labels{/name}", "releases_url": "https://api.github.com/repos/bobmazanec/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/bobmazanec/rails/deployments", "created_at": "2020-10-21T17:12:33Z", "updated_at": "2020-10-26T19:31:54Z", "pushed_at": "2020-10-26T19:31:42Z", "git_url": "git://github.com/bobmazanec/rails.git", "ssh_url": "git@github.com:bobmazanec/rails.git", "clone_url": "https://github.com/bobmazanec/rails.git", "svn_url": "https://github.com/bobmazanec/rails", "homepage": "https://rubyonrails.org", "size": 228797, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "533c5c3a532a01ca5ae6ddd3f04137b13e9271ab", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40444" }, "html": { "href": "https://github.com/rails/rails/pull/40444" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40444" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40444/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40444/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40444/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/3e9167c6e1ad9b36c978656581c7b0e71b12049e" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40443", "id": 509207612, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5MjA3NjEy", "html_url": "https://github.com/rails/rails/pull/40443", "diff_url": "https://github.com/rails/rails/pull/40443.diff", "patch_url": "https://github.com/rails/rails/pull/40443.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40443", "number": 40443, "state": "open", "locked": false, "title": "Comment several Type::DateTime private methods [ci-skip]", "user": { "login": "bobmazanec", "id": 2031462, "node_id": "MDQ6VXNlcjIwMzE0NjI=", "avatar_url": "https://avatars3.githubusercontent.com/u/2031462?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bobmazanec", "html_url": "https://github.com/bobmazanec", "followers_url": "https://api.github.com/users/bobmazanec/followers", "following_url": "https://api.github.com/users/bobmazanec/following{/other_user}", "gists_url": "https://api.github.com/users/bobmazanec/gists{/gist_id}", "starred_url": "https://api.github.com/users/bobmazanec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bobmazanec/subscriptions", "organizations_url": "https://api.github.com/users/bobmazanec/orgs", "repos_url": "https://api.github.com/users/bobmazanec/repos", "events_url": "https://api.github.com/users/bobmazanec/events{/privacy}", "received_events_url": "https://api.github.com/users/bobmazanec/received_events", "type": "User", "site_admin": false }, "body": "### Summary\n\nComment/document 'private' (`:nodoc:`) Type::DateTime methods\n\n### Other Information\n\nRecommended/referred by CodeTriage", "created_at": "2020-10-23T20:42:53Z", "updated_at": "2020-10-23T20:42:56Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "db1ab4de52de7b5776e7036dbf994b751bd10d3e", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107190, "node_id": "MDU6TGFiZWwxMDcxOTA=", "url": "https://api.github.com/repos/rails/rails/labels/activemodel", "name": "activemodel", "color": "00E5FF", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40443/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40443/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40443/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/2090dd4984182ba440ba6b67012152576fc41dee", "head": { "label": "bobmazanec:document-type-date_time", "ref": "document-type-date_time", "sha": "2090dd4984182ba440ba6b67012152576fc41dee", "user": { "login": "bobmazanec", "id": 2031462, "node_id": "MDQ6VXNlcjIwMzE0NjI=", "avatar_url": "https://avatars3.githubusercontent.com/u/2031462?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bobmazanec", "html_url": "https://github.com/bobmazanec", "followers_url": "https://api.github.com/users/bobmazanec/followers", "following_url": "https://api.github.com/users/bobmazanec/following{/other_user}", "gists_url": "https://api.github.com/users/bobmazanec/gists{/gist_id}", "starred_url": "https://api.github.com/users/bobmazanec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bobmazanec/subscriptions", "organizations_url": "https://api.github.com/users/bobmazanec/orgs", "repos_url": "https://api.github.com/users/bobmazanec/repos", "events_url": "https://api.github.com/users/bobmazanec/events{/privacy}", "received_events_url": "https://api.github.com/users/bobmazanec/received_events", "type": "User", "site_admin": false }, "repo": { "id": 306095250, "node_id": "MDEwOlJlcG9zaXRvcnkzMDYwOTUyNTA=", "name": "rails", "full_name": "bobmazanec/rails", "private": false, "owner": { "login": "bobmazanec", "id": 2031462, "node_id": "MDQ6VXNlcjIwMzE0NjI=", "avatar_url": "https://avatars3.githubusercontent.com/u/2031462?v=4", "gravatar_id": "", "url": "https://api.github.com/users/bobmazanec", "html_url": "https://github.com/bobmazanec", "followers_url": "https://api.github.com/users/bobmazanec/followers", "following_url": "https://api.github.com/users/bobmazanec/following{/other_user}", "gists_url": "https://api.github.com/users/bobmazanec/gists{/gist_id}", "starred_url": "https://api.github.com/users/bobmazanec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/bobmazanec/subscriptions", "organizations_url": "https://api.github.com/users/bobmazanec/orgs", "repos_url": "https://api.github.com/users/bobmazanec/repos", "events_url": "https://api.github.com/users/bobmazanec/events{/privacy}", "received_events_url": "https://api.github.com/users/bobmazanec/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/bobmazanec/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/bobmazanec/rails", "forks_url": "https://api.github.com/repos/bobmazanec/rails/forks", "keys_url": "https://api.github.com/repos/bobmazanec/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/bobmazanec/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/bobmazanec/rails/teams", "hooks_url": "https://api.github.com/repos/bobmazanec/rails/hooks", "issue_events_url": "https://api.github.com/repos/bobmazanec/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/bobmazanec/rails/events", "assignees_url": "https://api.github.com/repos/bobmazanec/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/bobmazanec/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/bobmazanec/rails/tags", "blobs_url": "https://api.github.com/repos/bobmazanec/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/bobmazanec/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/bobmazanec/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/bobmazanec/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/bobmazanec/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/bobmazanec/rails/languages", "stargazers_url": "https://api.github.com/repos/bobmazanec/rails/stargazers", "contributors_url": "https://api.github.com/repos/bobmazanec/rails/contributors", "subscribers_url": "https://api.github.com/repos/bobmazanec/rails/subscribers", "subscription_url": "https://api.github.com/repos/bobmazanec/rails/subscription", "commits_url": "https://api.github.com/repos/bobmazanec/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/bobmazanec/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/bobmazanec/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/bobmazanec/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/bobmazanec/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/bobmazanec/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/bobmazanec/rails/merges", "archive_url": "https://api.github.com/repos/bobmazanec/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/bobmazanec/rails/downloads", "issues_url": "https://api.github.com/repos/bobmazanec/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/bobmazanec/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/bobmazanec/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/bobmazanec/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/bobmazanec/rails/labels{/name}", "releases_url": "https://api.github.com/repos/bobmazanec/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/bobmazanec/rails/deployments", "created_at": "2020-10-21T17:12:33Z", "updated_at": "2020-10-26T19:31:54Z", "pushed_at": "2020-10-26T19:31:42Z", "git_url": "git://github.com/bobmazanec/rails.git", "ssh_url": "git@github.com:bobmazanec/rails.git", "clone_url": "https://github.com/bobmazanec/rails.git", "svn_url": "https://github.com/bobmazanec/rails", "homepage": "https://rubyonrails.org", "size": 228797, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "533c5c3a532a01ca5ae6ddd3f04137b13e9271ab", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40443" }, "html": { "href": "https://github.com/rails/rails/pull/40443" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40443" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40443/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40443/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40443/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/2090dd4984182ba440ba6b67012152576fc41dee" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40442", "id": 509189082, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5MTg5MDgy", "html_url": "https://github.com/rails/rails/pull/40442", "diff_url": "https://github.com/rails/rails/pull/40442.diff", "patch_url": "https://github.com/rails/rails/pull/40442.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40442", "number": 40442, "state": "open", "locked": false, "title": "Add test_selector to tag_helper", "user": { "login": "joelhawksley", "id": 1940294, "node_id": "MDQ6VXNlcjE5NDAyOTQ=", "avatar_url": "https://avatars0.githubusercontent.com/u/1940294?v=4", "gravatar_id": "", "url": "https://api.github.com/users/joelhawksley", "html_url": "https://github.com/joelhawksley", "followers_url": "https://api.github.com/users/joelhawksley/followers", "following_url": "https://api.github.com/users/joelhawksley/following{/other_user}", "gists_url": "https://api.github.com/users/joelhawksley/gists{/gist_id}", "starred_url": "https://api.github.com/users/joelhawksley/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/joelhawksley/subscriptions", "organizations_url": "https://api.github.com/users/joelhawksley/orgs", "repos_url": "https://api.github.com/users/joelhawksley/repos", "events_url": "https://api.github.com/users/joelhawksley/events{/privacy}", "received_events_url": "https://api.github.com/users/joelhawksley/received_events", "type": "User", "site_admin": true }, "body": "## Problem\r\n\r\nAs a developer, it can be difficult to write test assertions looking for specific DOM nodes without introducing markup specifically for tests.\r\n\r\n## Solution\r\n\r\nAdd functionality to display a `data-test-selector` value in non-production environments for the purpose of precisely targeting DOM nodes in test assertions.\r\n\r\nWe've been using this solution for over four years in the GitHub monolith.\r\n\r\nFor example:\r\n\r\n```erb\r\n<%= tag.p(\"Hello, world!\", test_selector: \"greeting\") %>\r\n```\r\n\r\n```ruby\r\nassert_selector(\"[data-test-selector='greeting']\")\r\n```\r\n\r\n## Implementation\r\n\r\nI've implemented this functionality as both an option to `tag_helper` and as a standalone `test_selector` view helper. We use both approaches extensively at GitHub.\r\n\r\nThe behavior is controlled by the `render_test_selectors` configuration flag, which defaults to `false`. It's expected that developers will set the flag to `true` in development and test.\r\n\r\nCo-authored-by: Nikka Padilla <nixpad@github.com>", "created_at": "2020-10-23T19:57:38Z", "updated_at": "2020-10-24T11:10:54Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "c319de2a29e0ff76ee618191f14ac48b27695686", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 1174770998, "node_id": "MDU6TGFiZWwxMTc0NzcwOTk4", "url": "https://api.github.com/repos/rails/rails/labels/actionmailbox", "name": "actionmailbox", "color": "f4a6cb", "default": false, "description": "" }, { "id": 1180817762, "node_id": "MDU6TGFiZWwxMTgwODE3NzYy", "url": "https://api.github.com/repos/rails/rails/labels/actiontext", "name": "actiontext", "color": "3bc667", "default": false, "description": "" }, { "id": 3666649, "node_id": "MDU6TGFiZWwzNjY2NjQ5", "url": "https://api.github.com/repos/rails/rails/labels/actionview", "name": "actionview", "color": "d7e102", "default": false, "description": null }, { "id": 664533972, "node_id": "MDU6TGFiZWw2NjQ1MzM5NzI=", "url": "https://api.github.com/repos/rails/rails/labels/activestorage", "name": "activestorage", "color": "bfd4f2", "default": false, "description": null }, { "id": 150377, "node_id": "MDU6TGFiZWwxNTAzNzc=", "url": "https://api.github.com/repos/rails/rails/labels/docs", "name": "docs", "color": "02d7e1", "default": false, "description": null }, { "id": 107195, "node_id": "MDU6TGFiZWwxMDcxOTU=", "url": "https://api.github.com/repos/rails/rails/labels/railties", "name": "railties", "color": "8BE06E", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40442/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40442/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40442/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/4ce302ad1762ea076b0cc2d9ef304e3206fb7c67", "head": { "label": "joelhawksley:test-selector", "ref": "test-selector", "sha": "4ce302ad1762ea076b0cc2d9ef304e3206fb7c67", "user": { "login": "joelhawksley", "id": 1940294, "node_id": "MDQ6VXNlcjE5NDAyOTQ=", "avatar_url": "https://avatars0.githubusercontent.com/u/1940294?v=4", "gravatar_id": "", "url": "https://api.github.com/users/joelhawksley", "html_url": "https://github.com/joelhawksley", "followers_url": "https://api.github.com/users/joelhawksley/followers", "following_url": "https://api.github.com/users/joelhawksley/following{/other_user}", "gists_url": "https://api.github.com/users/joelhawksley/gists{/gist_id}", "starred_url": "https://api.github.com/users/joelhawksley/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/joelhawksley/subscriptions", "organizations_url": "https://api.github.com/users/joelhawksley/orgs", "repos_url": "https://api.github.com/users/joelhawksley/repos", "events_url": "https://api.github.com/users/joelhawksley/events{/privacy}", "received_events_url": "https://api.github.com/users/joelhawksley/received_events", "type": "User", "site_admin": true }, "repo": { "id": 188292747, "node_id": "MDEwOlJlcG9zaXRvcnkxODgyOTI3NDc=", "name": "rails", "full_name": "joelhawksley/rails", "private": false, "owner": { "login": "joelhawksley", "id": 1940294, "node_id": "MDQ6VXNlcjE5NDAyOTQ=", "avatar_url": "https://avatars0.githubusercontent.com/u/1940294?v=4", "gravatar_id": "", "url": "https://api.github.com/users/joelhawksley", "html_url": "https://github.com/joelhawksley", "followers_url": "https://api.github.com/users/joelhawksley/followers", "following_url": "https://api.github.com/users/joelhawksley/following{/other_user}", "gists_url": "https://api.github.com/users/joelhawksley/gists{/gist_id}", "starred_url": "https://api.github.com/users/joelhawksley/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/joelhawksley/subscriptions", "organizations_url": "https://api.github.com/users/joelhawksley/orgs", "repos_url": "https://api.github.com/users/joelhawksley/repos", "events_url": "https://api.github.com/users/joelhawksley/events{/privacy}", "received_events_url": "https://api.github.com/users/joelhawksley/received_events", "type": "User", "site_admin": true }, "html_url": "https://github.com/joelhawksley/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/joelhawksley/rails", "forks_url": "https://api.github.com/repos/joelhawksley/rails/forks", "keys_url": "https://api.github.com/repos/joelhawksley/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/joelhawksley/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/joelhawksley/rails/teams", "hooks_url": "https://api.github.com/repos/joelhawksley/rails/hooks", "issue_events_url": "https://api.github.com/repos/joelhawksley/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/joelhawksley/rails/events", "assignees_url": "https://api.github.com/repos/joelhawksley/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/joelhawksley/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/joelhawksley/rails/tags", "blobs_url": "https://api.github.com/repos/joelhawksley/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/joelhawksley/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/joelhawksley/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/joelhawksley/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/joelhawksley/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/joelhawksley/rails/languages", "stargazers_url": "https://api.github.com/repos/joelhawksley/rails/stargazers", "contributors_url": "https://api.github.com/repos/joelhawksley/rails/contributors", "subscribers_url": "https://api.github.com/repos/joelhawksley/rails/subscribers", "subscription_url": "https://api.github.com/repos/joelhawksley/rails/subscription", "commits_url": "https://api.github.com/repos/joelhawksley/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/joelhawksley/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/joelhawksley/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/joelhawksley/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/joelhawksley/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/joelhawksley/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/joelhawksley/rails/merges", "archive_url": "https://api.github.com/repos/joelhawksley/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/joelhawksley/rails/downloads", "issues_url": "https://api.github.com/repos/joelhawksley/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/joelhawksley/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/joelhawksley/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/joelhawksley/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/joelhawksley/rails/labels{/name}", "releases_url": "https://api.github.com/repos/joelhawksley/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/joelhawksley/rails/deployments", "created_at": "2019-05-23T19:16:51Z", "updated_at": "2019-12-03T20:41:23Z", "pushed_at": "2020-10-23T22:52:23Z", "git_url": "git://github.com/joelhawksley/rails.git", "ssh_url": "git@github.com:joelhawksley/rails.git", "clone_url": "https://github.com/joelhawksley/rails.git", "svn_url": "https://github.com/joelhawksley/rails", "homepage": "https://rubyonrails.org", "size": 195691, "stargazers_count": 1, "watchers_count": 1, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "533c5c3a532a01ca5ae6ddd3f04137b13e9271ab", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40442" }, "html": { "href": "https://github.com/rails/rails/pull/40442" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40442" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40442/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40442/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40442/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/4ce302ad1762ea076b0cc2d9ef304e3206fb7c67" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40441", "id": 509187962, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5MTg3OTYy", "html_url": "https://github.com/rails/rails/pull/40441", "diff_url": "https://github.com/rails/rails/pull/40441.diff", "patch_url": "https://github.com/rails/rails/pull/40441.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40441", "number": 40441, "state": "open", "locked": false, "title": "Update outdated has_secure_password documentation", "user": { "login": "olivierlacan", "id": 65950, "node_id": "MDQ6VXNlcjY1OTUw", "avatar_url": "https://avatars0.githubusercontent.com/u/65950?v=4", "gravatar_id": "", "url": "https://api.github.com/users/olivierlacan", "html_url": "https://github.com/olivierlacan", "followers_url": "https://api.github.com/users/olivierlacan/followers", "following_url": "https://api.github.com/users/olivierlacan/following{/other_user}", "gists_url": "https://api.github.com/users/olivierlacan/gists{/gist_id}", "starred_url": "https://api.github.com/users/olivierlacan/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/olivierlacan/subscriptions", "organizations_url": "https://api.github.com/users/olivierlacan/orgs", "repos_url": "https://api.github.com/users/olivierlacan/repos", "events_url": "https://api.github.com/users/olivierlacan/events{/privacy}", "received_events_url": "https://api.github.com/users/olivierlacan/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nIn the Securing Rails Applications guide, we still reference a feature of `has_secure_password` which doesn't exist and would confuse readers.\r\n\r\n### Details \r\n\r\nThere's no `activation_code` column used by `has_secure_password` (anymore?) and unlike what the documentation suggests \"every user\"doesn't get one. Instead you *can choose to use* `has_secure_password` on second column (`recovery_password` is [suggested in the `ActiveMode::SecurePassword` docs][1] [since 2018][2]) and disable validations so it can be null by default until a user asks for recovery password at which point your own application logic will need to generate at least the plain text version of that recovery password before SecurePassword creates a bcrypt digest.\r\n\r\nThere was also an disingenuous suggestion in the paragraph that `has_secure_password` has \"similar features\" to Devise and Auth Logic. That's just not true. It's definitely simpler and lighter weight, so I cut down the unnecessarily long activation code example, explained what basic features `has_secure_password` *does* support, and linked to the API documentation for `has_secure_password` to avoid making the guide excessively dependent on the current API of the module.\r\n\r\n[1]: https://github.com/olivierlacan/rails/blob/533c5c3a532a01ca5ae6ddd3f04137b13e9271ab/activemodel/lib/active_model/secure_password.rb#L44\r\n[2]: https://github.com/rails/rails/commit/e62e68e25bb7b1281e20e228db66f7deace4330f", "created_at": "2020-10-23T19:55:05Z", "updated_at": "2020-10-27T11:14:50Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "3427aa0b572741509242fe6d31e0d527c343e9b4", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 150377, "node_id": "MDU6TGFiZWwxNTAzNzc=", "url": "https://api.github.com/repos/rails/rails/labels/docs", "name": "docs", "color": "02d7e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40441/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40441/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40441/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/df4d09b2c01ce1add55153584b97c60b423ca5c9", "head": { "label": "olivierlacan:doc/update-has-secure-password", "ref": "doc/update-has-secure-password", "sha": "df4d09b2c01ce1add55153584b97c60b423ca5c9", "user": { "login": "olivierlacan", "id": 65950, "node_id": "MDQ6VXNlcjY1OTUw", "avatar_url": "https://avatars0.githubusercontent.com/u/65950?v=4", "gravatar_id": "", "url": "https://api.github.com/users/olivierlacan", "html_url": "https://github.com/olivierlacan", "followers_url": "https://api.github.com/users/olivierlacan/followers", "following_url": "https://api.github.com/users/olivierlacan/following{/other_user}", "gists_url": "https://api.github.com/users/olivierlacan/gists{/gist_id}", "starred_url": "https://api.github.com/users/olivierlacan/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/olivierlacan/subscriptions", "organizations_url": "https://api.github.com/users/olivierlacan/orgs", "repos_url": "https://api.github.com/users/olivierlacan/repos", "events_url": "https://api.github.com/users/olivierlacan/events{/privacy}", "received_events_url": "https://api.github.com/users/olivierlacan/received_events", "type": "User", "site_admin": false }, "repo": { "id": 45552717, "node_id": "MDEwOlJlcG9zaXRvcnk0NTU1MjcxNw==", "name": "rails", "full_name": "olivierlacan/rails", "private": false, "owner": { "login": "olivierlacan", "id": 65950, "node_id": "MDQ6VXNlcjY1OTUw", "avatar_url": "https://avatars0.githubusercontent.com/u/65950?v=4", "gravatar_id": "", "url": "https://api.github.com/users/olivierlacan", "html_url": "https://github.com/olivierlacan", "followers_url": "https://api.github.com/users/olivierlacan/followers", "following_url": "https://api.github.com/users/olivierlacan/following{/other_user}", "gists_url": "https://api.github.com/users/olivierlacan/gists{/gist_id}", "starred_url": "https://api.github.com/users/olivierlacan/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/olivierlacan/subscriptions", "organizations_url": "https://api.github.com/users/olivierlacan/orgs", "repos_url": "https://api.github.com/users/olivierlacan/repos", "events_url": "https://api.github.com/users/olivierlacan/events{/privacy}", "received_events_url": "https://api.github.com/users/olivierlacan/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/olivierlacan/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/olivierlacan/rails", "forks_url": "https://api.github.com/repos/olivierlacan/rails/forks", "keys_url": "https://api.github.com/repos/olivierlacan/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/olivierlacan/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/olivierlacan/rails/teams", "hooks_url": "https://api.github.com/repos/olivierlacan/rails/hooks", "issue_events_url": "https://api.github.com/repos/olivierlacan/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/olivierlacan/rails/events", "assignees_url": "https://api.github.com/repos/olivierlacan/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/olivierlacan/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/olivierlacan/rails/tags", "blobs_url": "https://api.github.com/repos/olivierlacan/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/olivierlacan/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/olivierlacan/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/olivierlacan/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/olivierlacan/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/olivierlacan/rails/languages", "stargazers_url": "https://api.github.com/repos/olivierlacan/rails/stargazers", "contributors_url": "https://api.github.com/repos/olivierlacan/rails/contributors", "subscribers_url": "https://api.github.com/repos/olivierlacan/rails/subscribers", "subscription_url": "https://api.github.com/repos/olivierlacan/rails/subscription", "commits_url": "https://api.github.com/repos/olivierlacan/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/olivierlacan/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/olivierlacan/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/olivierlacan/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/olivierlacan/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/olivierlacan/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/olivierlacan/rails/merges", "archive_url": "https://api.github.com/repos/olivierlacan/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/olivierlacan/rails/downloads", "issues_url": "https://api.github.com/repos/olivierlacan/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/olivierlacan/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/olivierlacan/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/olivierlacan/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/olivierlacan/rails/labels{/name}", "releases_url": "https://api.github.com/repos/olivierlacan/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/olivierlacan/rails/deployments", "created_at": "2015-11-04T16:42:05Z", "updated_at": "2020-02-22T17:28:24Z", "pushed_at": "2020-10-23T19:54:48Z", "git_url": "git://github.com/olivierlacan/rails.git", "ssh_url": "git@github.com:olivierlacan/rails.git", "clone_url": "https://github.com/olivierlacan/rails.git", "svn_url": "https://github.com/olivierlacan/rails", "homepage": "http://rubyonrails.org", "size": 194629, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "533c5c3a532a01ca5ae6ddd3f04137b13e9271ab", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40441" }, "html": { "href": "https://github.com/rails/rails/pull/40441" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40441" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40441/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40441/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40441/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/df4d09b2c01ce1add55153584b97c60b423ca5c9" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40440", "id": 509016860, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5MDE2ODYw", "html_url": "https://github.com/rails/rails/pull/40440", "diff_url": "https://github.com/rails/rails/pull/40440.diff", "patch_url": "https://github.com/rails/rails/pull/40440.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40440", "number": 40440, "state": "open", "locked": false, "title": "Supports Spooky Rails", "user": { "login": "Schwad", "id": 7865030, "node_id": "MDQ6VXNlcjc4NjUwMzA=", "avatar_url": "https://avatars0.githubusercontent.com/u/7865030?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Schwad", "html_url": "https://github.com/Schwad", "followers_url": "https://api.github.com/users/Schwad/followers", "following_url": "https://api.github.com/users/Schwad/following{/other_user}", "gists_url": "https://api.github.com/users/Schwad/gists{/gist_id}", "starred_url": "https://api.github.com/users/Schwad/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/Schwad/subscriptions", "organizations_url": "https://api.github.com/users/Schwad/orgs", "repos_url": "https://api.github.com/users/Schwad/repos", "events_url": "https://api.github.com/users/Schwad/events{/privacy}", "received_events_url": "https://api.github.com/users/Schwad/received_events", "type": "User", "site_admin": false }, "body": "On 31st October, displays a slightly spookier default landing page for localhost:3000\r\n\r\n\ud83d\udc7b\r\n\r\nSigned-off-by: Nick Schwaderer <nschwaderer@chef.io>\r\n\r\n<!-- Provide a general description of the code changes in your pull\r\nrequest... were there any bugs you had fixed? If so, mention them. If\r\nthese bugs have open GitHub issues, be sure to tag them here as well,\r\nto keep the conversation linked together. \u2014>\r\n\r\n \ud83d\udc7b\r\n\r\n### Other Information\r\n\r\n<!-- If there's anything else that's important and relevant to your pull\r\nrequest, mention that information here. This could include\r\nbenchmarks, or other information.\r\n\r\nIf you are updating any of the CHANGELOG files or are asked to update the\r\nCHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the file.\r\n\r\nFinally, if your pull request affects documentation or any non-code\r\nchanges, guidelines for those changes are [available\r\nhere](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#contributing-to-the-rails-documentation)\r\n\r\nThanks for contributing to Rails! -->\r\n", "created_at": "2020-10-23T14:48:37Z", "updated_at": "2020-10-23T17:55:39Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "e5aef96b6160339a6eadacce6aca3e32763b04b9", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107195, "node_id": "MDU6TGFiZWwxMDcxOTU=", "url": "https://api.github.com/repos/rails/rails/labels/railties", "name": "railties", "color": "8BE06E", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40440/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40440/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40440/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/6e9aecf417045bf31cbca0f0a648582a0e66091a", "head": { "label": "schwaughlin:master", "ref": "master", "sha": "6e9aecf417045bf31cbca0f0a648582a0e66091a", "user": { "login": "schwaughlin", "id": 11152747, "node_id": "MDEyOk9yZ2FuaXphdGlvbjExMTUyNzQ3", "avatar_url": "https://avatars3.githubusercontent.com/u/11152747?v=4", "gravatar_id": "", "url": "https://api.github.com/users/schwaughlin", "html_url": "https://github.com/schwaughlin", "followers_url": "https://api.github.com/users/schwaughlin/followers", "following_url": "https://api.github.com/users/schwaughlin/following{/other_user}", "gists_url": "https://api.github.com/users/schwaughlin/gists{/gist_id}", "starred_url": "https://api.github.com/users/schwaughlin/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/schwaughlin/subscriptions", "organizations_url": "https://api.github.com/users/schwaughlin/orgs", "repos_url": "https://api.github.com/users/schwaughlin/repos", "events_url": "https://api.github.com/users/schwaughlin/events{/privacy}", "received_events_url": "https://api.github.com/users/schwaughlin/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 303744826, "node_id": "MDEwOlJlcG9zaXRvcnkzMDM3NDQ4MjY=", "name": "rails", "full_name": "schwaughlin/rails", "private": false, "owner": { "login": "schwaughlin", "id": 11152747, "node_id": "MDEyOk9yZ2FuaXphdGlvbjExMTUyNzQ3", "avatar_url": "https://avatars3.githubusercontent.com/u/11152747?v=4", "gravatar_id": "", "url": "https://api.github.com/users/schwaughlin", "html_url": "https://github.com/schwaughlin", "followers_url": "https://api.github.com/users/schwaughlin/followers", "following_url": "https://api.github.com/users/schwaughlin/following{/other_user}", "gists_url": "https://api.github.com/users/schwaughlin/gists{/gist_id}", "starred_url": "https://api.github.com/users/schwaughlin/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/schwaughlin/subscriptions", "organizations_url": "https://api.github.com/users/schwaughlin/orgs", "repos_url": "https://api.github.com/users/schwaughlin/repos", "events_url": "https://api.github.com/users/schwaughlin/events{/privacy}", "received_events_url": "https://api.github.com/users/schwaughlin/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/schwaughlin/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/schwaughlin/rails", "forks_url": "https://api.github.com/repos/schwaughlin/rails/forks", "keys_url": "https://api.github.com/repos/schwaughlin/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/schwaughlin/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/schwaughlin/rails/teams", "hooks_url": "https://api.github.com/repos/schwaughlin/rails/hooks", "issue_events_url": "https://api.github.com/repos/schwaughlin/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/schwaughlin/rails/events", "assignees_url": "https://api.github.com/repos/schwaughlin/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/schwaughlin/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/schwaughlin/rails/tags", "blobs_url": "https://api.github.com/repos/schwaughlin/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/schwaughlin/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/schwaughlin/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/schwaughlin/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/schwaughlin/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/schwaughlin/rails/languages", "stargazers_url": "https://api.github.com/repos/schwaughlin/rails/stargazers", "contributors_url": "https://api.github.com/repos/schwaughlin/rails/contributors", "subscribers_url": "https://api.github.com/repos/schwaughlin/rails/subscribers", "subscription_url": "https://api.github.com/repos/schwaughlin/rails/subscription", "commits_url": "https://api.github.com/repos/schwaughlin/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/schwaughlin/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/schwaughlin/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/schwaughlin/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/schwaughlin/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/schwaughlin/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/schwaughlin/rails/merges", "archive_url": "https://api.github.com/repos/schwaughlin/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/schwaughlin/rails/downloads", "issues_url": "https://api.github.com/repos/schwaughlin/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/schwaughlin/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/schwaughlin/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/schwaughlin/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/schwaughlin/rails/labels{/name}", "releases_url": "https://api.github.com/repos/schwaughlin/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/schwaughlin/rails/deployments", "created_at": "2020-10-13T15:18:40Z", "updated_at": "2020-10-23T14:47:19Z", "pushed_at": "2020-10-23T14:47:16Z", "git_url": "git://github.com/schwaughlin/rails.git", "ssh_url": "git@github.com:schwaughlin/rails.git", "clone_url": "https://github.com/schwaughlin/rails.git", "svn_url": "https://github.com/schwaughlin/rails", "homepage": "https://rubyonrails.org", "size": 228674, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "533c5c3a532a01ca5ae6ddd3f04137b13e9271ab", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40440" }, "html": { "href": "https://github.com/rails/rails/pull/40440" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40440" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40440/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40440/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40440/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/6e9aecf417045bf31cbca0f0a648582a0e66091a" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40439", "id": 509002789, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA5MDAyNzg5", "html_url": "https://github.com/rails/rails/pull/40439", "diff_url": "https://github.com/rails/rails/pull/40439.diff", "patch_url": "https://github.com/rails/rails/pull/40439.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40439", "number": 40439, "state": "open", "locked": false, "title": "Fix regression with scope with optional path, defaults and route with dynamic segment", "user": { "login": "timsly", "id": 471335, "node_id": "MDQ6VXNlcjQ3MTMzNQ==", "avatar_url": "https://avatars1.githubusercontent.com/u/471335?v=4", "gravatar_id": "", "url": "https://api.github.com/users/timsly", "html_url": "https://github.com/timsly", "followers_url": "https://api.github.com/users/timsly/followers", "following_url": "https://api.github.com/users/timsly/following{/other_user}", "gists_url": "https://api.github.com/users/timsly/gists{/gist_id}", "starred_url": "https://api.github.com/users/timsly/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/timsly/subscriptions", "organizations_url": "https://api.github.com/users/timsly/orgs", "repos_url": "https://api.github.com/users/timsly/repos", "events_url": "https://api.github.com/users/timsly/events{/privacy}", "received_events_url": "https://api.github.com/users/timsly/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nThis PR is basically just a simpler version of https://github.com/rails/rails/pull/32382\r\nThe regression still exists in rails master so it is another attempt to fix it \r\n[The refactoring part](https://github.com/rails/rails/pull/32382/commits/dce6e63e8fc8aac8a5b58828f6a1697172cca149) has been removed because it [slowed down things a bit](https://github.com/rails/rails/pull/32382#issuecomment-380816534)\r\n\r\nThe PR addresses an issue when an optional scope param with the defaults is always included in the resulted URL even when the default value is passed.\r\nLooks like it was introduced in https://github.com/rails/rails/commit/8ca8a2d773b942c4ea76baabe2df502a339d05b1#diff-f263f30232edae53a59ca3fc0e853e2fR36\r\n\r\nSo if there is a route with an optional scope param\r\n```ruby\r\nscope \"(:market)\", market: /gb|ua/, defaults: { market: :ua } do\r\n get \"/product/:id\" => \"products#index\", as: :product\r\nend\r\n```\r\n\r\nBefore https://github.com/rails/rails/commit/8ca8a2d773b942c4ea76baabe2df502a339d05b1\r\n```\r\nproduct_path(id: 1) # /product/1\r\nproduct_path(id: 1, market: :ua) # /product/1\r\nproduct_path(id: 1, market: :gb) # /gb/product/1\r\n```\r\n\r\nAfter https://github.com/rails/rails/commit/8ca8a2d773b942c4ea76baabe2df502a339d05b1\r\n```\r\nproduct_path(id: 1) # /product/1\r\nproduct_path(id: 1, market: :ua) # /ua/product/1\r\nproduct_path(id: 1, market: :gb) # /gb/product/1\r\n```\r\n\r\nIn the example above `product_path(id: 1, market: :ua)` should generate `/product/1`, because `market: :ua` is part of the `defaults`\r\n\r\n<!-- Provide a general description of the code changes in your pull\r\nrequest... were there any bugs you had fixed? If so, mention them. If\r\nthese bugs have open GitHub issues, be sure to tag them here as well,\r\nto keep the conversation linked together. -->\r\n\r\n<!-- If there's anything else that's important and relevant to your pull\r\nrequest, mention that information here. This could include\r\nbenchmarks, or other information.\r\n\r\nIf you are updating any of the CHANGELOG files or are asked to update the\r\nCHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the file.\r\n\r\nFinally, if your pull request affects documentation or any non-code\r\nchanges, guidelines for those changes are [available\r\nhere](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#contributing-to-the-rails-documentation)\r\n\r\nThanks for contributing to Rails! -->\r\n", "created_at": "2020-10-23T14:26:35Z", "updated_at": "2020-10-23T15:16:36Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "cc0c1ea52680aee5122ba33827379268e00410bf", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107189, "node_id": "MDU6TGFiZWwxMDcxODk=", "url": "https://api.github.com/repos/rails/rails/labels/actionpack", "name": "actionpack", "color": "FFF700", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40439/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40439/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40439/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/e5ee32ace13beff2609cfbe5df2bf70b40709aee", "head": { "label": "timsly:optional-scope-param-2", "ref": "optional-scope-param-2", "sha": "e5ee32ace13beff2609cfbe5df2bf70b40709aee", "user": { "login": "timsly", "id": 471335, "node_id": "MDQ6VXNlcjQ3MTMzNQ==", "avatar_url": "https://avatars1.githubusercontent.com/u/471335?v=4", "gravatar_id": "", "url": "https://api.github.com/users/timsly", "html_url": "https://github.com/timsly", "followers_url": "https://api.github.com/users/timsly/followers", "following_url": "https://api.github.com/users/timsly/following{/other_user}", "gists_url": "https://api.github.com/users/timsly/gists{/gist_id}", "starred_url": "https://api.github.com/users/timsly/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/timsly/subscriptions", "organizations_url": "https://api.github.com/users/timsly/orgs", "repos_url": "https://api.github.com/users/timsly/repos", "events_url": "https://api.github.com/users/timsly/events{/privacy}", "received_events_url": "https://api.github.com/users/timsly/received_events", "type": "User", "site_admin": false }, "repo": { "id": 4871812, "node_id": "MDEwOlJlcG9zaXRvcnk0ODcxODEy", "name": "rails", "full_name": "timsly/rails", "private": false, "owner": { "login": "timsly", "id": 471335, "node_id": "MDQ6VXNlcjQ3MTMzNQ==", "avatar_url": "https://avatars1.githubusercontent.com/u/471335?v=4", "gravatar_id": "", "url": "https://api.github.com/users/timsly", "html_url": "https://github.com/timsly", "followers_url": "https://api.github.com/users/timsly/followers", "following_url": "https://api.github.com/users/timsly/following{/other_user}", "gists_url": "https://api.github.com/users/timsly/gists{/gist_id}", "starred_url": "https://api.github.com/users/timsly/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/timsly/subscriptions", "organizations_url": "https://api.github.com/users/timsly/orgs", "repos_url": "https://api.github.com/users/timsly/repos", "events_url": "https://api.github.com/users/timsly/events{/privacy}", "received_events_url": "https://api.github.com/users/timsly/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/timsly/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/timsly/rails", "forks_url": "https://api.github.com/repos/timsly/rails/forks", "keys_url": "https://api.github.com/repos/timsly/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/timsly/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/timsly/rails/teams", "hooks_url": "https://api.github.com/repos/timsly/rails/hooks", "issue_events_url": "https://api.github.com/repos/timsly/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/timsly/rails/events", "assignees_url": "https://api.github.com/repos/timsly/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/timsly/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/timsly/rails/tags", "blobs_url": "https://api.github.com/repos/timsly/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/timsly/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/timsly/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/timsly/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/timsly/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/timsly/rails/languages", "stargazers_url": "https://api.github.com/repos/timsly/rails/stargazers", "contributors_url": "https://api.github.com/repos/timsly/rails/contributors", "subscribers_url": "https://api.github.com/repos/timsly/rails/subscribers", "subscription_url": "https://api.github.com/repos/timsly/rails/subscription", "commits_url": "https://api.github.com/repos/timsly/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/timsly/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/timsly/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/timsly/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/timsly/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/timsly/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/timsly/rails/merges", "archive_url": "https://api.github.com/repos/timsly/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/timsly/rails/downloads", "issues_url": "https://api.github.com/repos/timsly/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/timsly/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/timsly/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/timsly/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/timsly/rails/labels{/name}", "releases_url": "https://api.github.com/repos/timsly/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/timsly/rails/deployments", "created_at": "2012-07-03T12:17:44Z", "updated_at": "2020-10-23T15:08:54Z", "pushed_at": "2020-10-23T15:55:19Z", "git_url": "git://github.com/timsly/rails.git", "ssh_url": "git@github.com:timsly/rails.git", "clone_url": "https://github.com/timsly/rails.git", "svn_url": "https://github.com/timsly/rails", "homepage": "http://rubyonrails.org", "size": 179708, "stargazers_count": 1, "watchers_count": 1, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 1, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "533c5c3a532a01ca5ae6ddd3f04137b13e9271ab", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40439" }, "html": { "href": "https://github.com/rails/rails/pull/40439" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40439" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40439/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40439/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40439/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/e5ee32ace13beff2609cfbe5df2bf70b40709aee" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40437", "id": 508791356, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA4NzkxMzU2", "html_url": "https://github.com/rails/rails/pull/40437", "diff_url": "https://github.com/rails/rails/pull/40437.diff", "patch_url": "https://github.com/rails/rails/pull/40437.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40437", "number": 40437, "state": "open", "locked": false, "title": "Make git diff aware about ruby context", "user": { "login": "the-spectator", "id": 13457494, "node_id": "MDQ6VXNlcjEzNDU3NDk0", "avatar_url": "https://avatars1.githubusercontent.com/u/13457494?v=4", "gravatar_id": "", "url": "https://api.github.com/users/the-spectator", "html_url": "https://github.com/the-spectator", "followers_url": "https://api.github.com/users/the-spectator/followers", "following_url": "https://api.github.com/users/the-spectator/following{/other_user}", "gists_url": "https://api.github.com/users/the-spectator/gists{/gist_id}", "starred_url": "https://api.github.com/users/the-spectator/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/the-spectator/subscriptions", "organizations_url": "https://api.github.com/users/the-spectator/orgs", "repos_url": "https://api.github.com/users/the-spectator/repos", "events_url": "https://api.github.com/users/the-spectator/events{/privacy}", "received_events_url": "https://api.github.com/users/the-spectator/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\n<!-- Provide a general description of the code changes in your pull\r\nrequest... were there any bugs you had fixed? If so, mention them. If\r\nthese bugs have open GitHub issues, be sure to tag them here as well,\r\nto keep the conversation linked together. -->\r\n\r\nThis PR adds ruby diff patterns .gitattributes. This change enables git to maps the Ruby file extensions to the diff pattern for Ruby to show better git diff output.\r\n\r\nReference Blog Post: https://tekin.co.uk/2020/10/better-git-diff-output-for-ruby-python-elixir-and-more\r\n\r\n### Other Information\r\n\r\n<!-- If there's anything else that's important and relevant to your pull\r\nrequest, mention that information here. This could include\r\nbenchmarks, or other information.\r\n\r\nIf you are updating any of the CHANGELOG files or are asked to update the\r\nCHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the file.\r\n\r\nFinally, if your pull request affects documentation or any non-code\r\nchanges, guidelines for those changes are [available\r\nhere](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#contributing-to-the-rails-documentation)\r\n\r\nThanks for contributing to Rails! -->\r\n", "created_at": "2020-10-23T08:00:10Z", "updated_at": "2020-10-23T10:00:31Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "b0e830825235e9fc7b4c3e043a2b95a6b9236a59", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107195, "node_id": "MDU6TGFiZWwxMDcxOTU=", "url": "https://api.github.com/repos/rails/rails/labels/railties", "name": "railties", "color": "8BE06E", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40437/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40437/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40437/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/3463624d764c20c5a5ebde0ffc89683604e90fb9", "head": { "label": "the-spectator:git_ruby_goodness", "ref": "git_ruby_goodness", "sha": "3463624d764c20c5a5ebde0ffc89683604e90fb9", "user": { "login": "the-spectator", "id": 13457494, "node_id": "MDQ6VXNlcjEzNDU3NDk0", "avatar_url": "https://avatars1.githubusercontent.com/u/13457494?v=4", "gravatar_id": "", "url": "https://api.github.com/users/the-spectator", "html_url": "https://github.com/the-spectator", "followers_url": "https://api.github.com/users/the-spectator/followers", "following_url": "https://api.github.com/users/the-spectator/following{/other_user}", "gists_url": "https://api.github.com/users/the-spectator/gists{/gist_id}", "starred_url": "https://api.github.com/users/the-spectator/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/the-spectator/subscriptions", "organizations_url": "https://api.github.com/users/the-spectator/orgs", "repos_url": "https://api.github.com/users/the-spectator/repos", "events_url": "https://api.github.com/users/the-spectator/events{/privacy}", "received_events_url": "https://api.github.com/users/the-spectator/received_events", "type": "User", "site_admin": false }, "repo": { "id": 178071516, "node_id": "MDEwOlJlcG9zaXRvcnkxNzgwNzE1MTY=", "name": "rails", "full_name": "the-spectator/rails", "private": false, "owner": { "login": "the-spectator", "id": 13457494, "node_id": "MDQ6VXNlcjEzNDU3NDk0", "avatar_url": "https://avatars1.githubusercontent.com/u/13457494?v=4", "gravatar_id": "", "url": "https://api.github.com/users/the-spectator", "html_url": "https://github.com/the-spectator", "followers_url": "https://api.github.com/users/the-spectator/followers", "following_url": "https://api.github.com/users/the-spectator/following{/other_user}", "gists_url": "https://api.github.com/users/the-spectator/gists{/gist_id}", "starred_url": "https://api.github.com/users/the-spectator/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/the-spectator/subscriptions", "organizations_url": "https://api.github.com/users/the-spectator/orgs", "repos_url": "https://api.github.com/users/the-spectator/repos", "events_url": "https://api.github.com/users/the-spectator/events{/privacy}", "received_events_url": "https://api.github.com/users/the-spectator/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/the-spectator/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/the-spectator/rails", "forks_url": "https://api.github.com/repos/the-spectator/rails/forks", "keys_url": "https://api.github.com/repos/the-spectator/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/the-spectator/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/the-spectator/rails/teams", "hooks_url": "https://api.github.com/repos/the-spectator/rails/hooks", "issue_events_url": "https://api.github.com/repos/the-spectator/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/the-spectator/rails/events", "assignees_url": "https://api.github.com/repos/the-spectator/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/the-spectator/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/the-spectator/rails/tags", "blobs_url": "https://api.github.com/repos/the-spectator/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/the-spectator/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/the-spectator/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/the-spectator/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/the-spectator/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/the-spectator/rails/languages", "stargazers_url": "https://api.github.com/repos/the-spectator/rails/stargazers", "contributors_url": "https://api.github.com/repos/the-spectator/rails/contributors", "subscribers_url": "https://api.github.com/repos/the-spectator/rails/subscribers", "subscription_url": "https://api.github.com/repos/the-spectator/rails/subscription", "commits_url": "https://api.github.com/repos/the-spectator/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/the-spectator/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/the-spectator/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/the-spectator/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/the-spectator/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/the-spectator/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/the-spectator/rails/merges", "archive_url": "https://api.github.com/repos/the-spectator/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/the-spectator/rails/downloads", "issues_url": "https://api.github.com/repos/the-spectator/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/the-spectator/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/the-spectator/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/the-spectator/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/the-spectator/rails/labels{/name}", "releases_url": "https://api.github.com/repos/the-spectator/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/the-spectator/rails/deployments", "created_at": "2019-03-27T20:42:00Z", "updated_at": "2020-10-26T15:39:50Z", "pushed_at": "2020-10-26T15:39:41Z", "git_url": "git://github.com/the-spectator/rails.git", "ssh_url": "git@github.com:the-spectator/rails.git", "clone_url": "https://github.com/the-spectator/rails.git", "svn_url": "https://github.com/the-spectator/rails", "homepage": "https://rubyonrails.org", "size": 197286, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "7eb855bfbca604036f5f7a057143d9b5b434c714", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40437" }, "html": { "href": "https://github.com/rails/rails/pull/40437" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40437" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40437/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40437/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40437/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/3463624d764c20c5a5ebde0ffc89683604e90fb9" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40434", "id": 508523361, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA4NTIzMzYx", "html_url": "https://github.com/rails/rails/pull/40434", "diff_url": "https://github.com/rails/rails/pull/40434.diff", "patch_url": "https://github.com/rails/rails/pull/40434.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40434", "number": 40434, "state": "open", "locked": false, "title": "Pass in base to Error.human_attribute_names", "user": { "login": "filipe-sabella", "id": 71273484, "node_id": "MDQ6VXNlcjcxMjczNDg0", "avatar_url": "https://avatars2.githubusercontent.com/u/71273484?v=4", "gravatar_id": "", "url": "https://api.github.com/users/filipe-sabella", "html_url": "https://github.com/filipe-sabella", "followers_url": "https://api.github.com/users/filipe-sabella/followers", "following_url": "https://api.github.com/users/filipe-sabella/following{/other_user}", "gists_url": "https://api.github.com/users/filipe-sabella/gists{/gist_id}", "starred_url": "https://api.github.com/users/filipe-sabella/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/filipe-sabella/subscriptions", "organizations_url": "https://api.github.com/users/filipe-sabella/orgs", "repos_url": "https://api.github.com/users/filipe-sabella/repos", "events_url": "https://api.github.com/users/filipe-sabella/events{/privacy}", "received_events_url": "https://api.github.com/users/filipe-sabella/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nThere are validation cases in which the human_attribute_name depends on\r\nother fields of the base class.\r\n \r\nFor instance, an Address model that depends on the selected country to\r\nlocalize the attribute name to be shown in error messages. E.g.: the\r\n`:address1` and `:address2` attributes can be displayed as very different\r\nstrings depending on whether the address is in the US or in Japan.\r\n", "created_at": "2020-10-22T19:52:57Z", "updated_at": "2020-10-22T19:53:01Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "cf8354aef953d516915521d3f86f9644bb1713de", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107190, "node_id": "MDU6TGFiZWwxMDcxOTA=", "url": "https://api.github.com/repos/rails/rails/labels/activemodel", "name": "activemodel", "color": "00E5FF", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40434/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40434/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40434/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/ac677fb1e3235920f666a3253be3eea167dc7972", "head": { "label": "filipe-sabella:pass-in-base-in-validation-messages", "ref": "pass-in-base-in-validation-messages", "sha": "ac677fb1e3235920f666a3253be3eea167dc7972", "user": { "login": "filipe-sabella", "id": 71273484, "node_id": "MDQ6VXNlcjcxMjczNDg0", "avatar_url": "https://avatars2.githubusercontent.com/u/71273484?v=4", "gravatar_id": "", "url": "https://api.github.com/users/filipe-sabella", "html_url": "https://github.com/filipe-sabella", "followers_url": "https://api.github.com/users/filipe-sabella/followers", "following_url": "https://api.github.com/users/filipe-sabella/following{/other_user}", "gists_url": "https://api.github.com/users/filipe-sabella/gists{/gist_id}", "starred_url": "https://api.github.com/users/filipe-sabella/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/filipe-sabella/subscriptions", "organizations_url": "https://api.github.com/users/filipe-sabella/orgs", "repos_url": "https://api.github.com/users/filipe-sabella/repos", "events_url": "https://api.github.com/users/filipe-sabella/events{/privacy}", "received_events_url": "https://api.github.com/users/filipe-sabella/received_events", "type": "User", "site_admin": false }, "repo": { "id": 306442960, "node_id": "MDEwOlJlcG9zaXRvcnkzMDY0NDI5NjA=", "name": "rails", "full_name": "filipe-sabella/rails", "private": false, "owner": { "login": "filipe-sabella", "id": 71273484, "node_id": "MDQ6VXNlcjcxMjczNDg0", "avatar_url": "https://avatars2.githubusercontent.com/u/71273484?v=4", "gravatar_id": "", "url": "https://api.github.com/users/filipe-sabella", "html_url": "https://github.com/filipe-sabella", "followers_url": "https://api.github.com/users/filipe-sabella/followers", "following_url": "https://api.github.com/users/filipe-sabella/following{/other_user}", "gists_url": "https://api.github.com/users/filipe-sabella/gists{/gist_id}", "starred_url": "https://api.github.com/users/filipe-sabella/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/filipe-sabella/subscriptions", "organizations_url": "https://api.github.com/users/filipe-sabella/orgs", "repos_url": "https://api.github.com/users/filipe-sabella/repos", "events_url": "https://api.github.com/users/filipe-sabella/events{/privacy}", "received_events_url": "https://api.github.com/users/filipe-sabella/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/filipe-sabella/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/filipe-sabella/rails", "forks_url": "https://api.github.com/repos/filipe-sabella/rails/forks", "keys_url": "https://api.github.com/repos/filipe-sabella/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/filipe-sabella/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/filipe-sabella/rails/teams", "hooks_url": "https://api.github.com/repos/filipe-sabella/rails/hooks", "issue_events_url": "https://api.github.com/repos/filipe-sabella/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/filipe-sabella/rails/events", "assignees_url": "https://api.github.com/repos/filipe-sabella/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/filipe-sabella/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/filipe-sabella/rails/tags", "blobs_url": "https://api.github.com/repos/filipe-sabella/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/filipe-sabella/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/filipe-sabella/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/filipe-sabella/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/filipe-sabella/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/filipe-sabella/rails/languages", "stargazers_url": "https://api.github.com/repos/filipe-sabella/rails/stargazers", "contributors_url": "https://api.github.com/repos/filipe-sabella/rails/contributors", "subscribers_url": "https://api.github.com/repos/filipe-sabella/rails/subscribers", "subscription_url": "https://api.github.com/repos/filipe-sabella/rails/subscription", "commits_url": "https://api.github.com/repos/filipe-sabella/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/filipe-sabella/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/filipe-sabella/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/filipe-sabella/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/filipe-sabella/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/filipe-sabella/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/filipe-sabella/rails/merges", "archive_url": "https://api.github.com/repos/filipe-sabella/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/filipe-sabella/rails/downloads", "issues_url": "https://api.github.com/repos/filipe-sabella/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/filipe-sabella/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/filipe-sabella/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/filipe-sabella/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/filipe-sabella/rails/labels{/name}", "releases_url": "https://api.github.com/repos/filipe-sabella/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/filipe-sabella/rails/deployments", "created_at": "2020-10-22T19:46:44Z", "updated_at": "2020-10-22T19:46:47Z", "pushed_at": "2020-10-22T19:52:35Z", "git_url": "git://github.com/filipe-sabella/rails.git", "ssh_url": "git@github.com:filipe-sabella/rails.git", "clone_url": "https://github.com/filipe-sabella/rails.git", "svn_url": "https://github.com/filipe-sabella/rails", "homepage": "https://rubyonrails.org", "size": 228766, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "7eb855bfbca604036f5f7a057143d9b5b434c714", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40434" }, "html": { "href": "https://github.com/rails/rails/pull/40434" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40434" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40434/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40434/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40434/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/ac677fb1e3235920f666a3253be3eea167dc7972" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40432", "id": 508132287, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA4MTMyMjg3", "html_url": "https://github.com/rails/rails/pull/40432", "diff_url": "https://github.com/rails/rails/pull/40432.diff", "patch_url": "https://github.com/rails/rails/pull/40432.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40432", "number": 40432, "state": "open", "locked": false, "title": "Added bug report template for ActionMailer [ci skip]", "user": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nWhile I was working, I noticed that action_mailer does not have a guide to easily provide a minimal reproduction app. This PR addresses this need. The test is inspired by [this](https://github.com/rails/rails/blob/master/actionmailer/test/mailers/base_mailer.rb#L3)\r\n\r\ncc @georgeclaghorn @eugeneius @eileencodes @kamipo \r\n\r\n<!-- If there's anything else that's important and relevant to your pull\r\nrequest, mention that information here. This could include\r\nbenchmarks, or other information.\r\n\r\nIf you are updating any of the CHANGELOG files or are asked to update the\r\nCHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the file.\r\n\r\nFinally, if your pull request affects documentation or any non-code\r\nchanges, guidelines for those changes are [available\r\nhere](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#contributing-to-the-rails-documentation)\r\n\r\nThanks for contributing to Rails! -->\r\n", "created_at": "2020-10-22T09:01:11Z", "updated_at": "2020-10-23T11:58:05Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "f72d8979f2297936cbb01ba5717708bd9c86c051", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 150377, "node_id": "MDU6TGFiZWwxNTAzNzc=", "url": "https://api.github.com/repos/rails/rails/labels/docs", "name": "docs", "color": "02d7e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40432/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40432/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40432/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/41095b6709e2134ae1adfdae0c11e4728d2c0970", "head": { "label": "tahsin352:th_action_mailer_bug_report_template", "ref": "th_action_mailer_bug_report_template", "sha": "41095b6709e2134ae1adfdae0c11e4728d2c0970", "user": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "repo": { "id": 302846205, "node_id": "MDEwOlJlcG9zaXRvcnkzMDI4NDYyMDU=", "name": "rails", "full_name": "tahsin352/rails", "private": false, "owner": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/tahsin352/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/tahsin352/rails", "forks_url": "https://api.github.com/repos/tahsin352/rails/forks", "keys_url": "https://api.github.com/repos/tahsin352/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/tahsin352/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/tahsin352/rails/teams", "hooks_url": "https://api.github.com/repos/tahsin352/rails/hooks", "issue_events_url": "https://api.github.com/repos/tahsin352/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/tahsin352/rails/events", "assignees_url": "https://api.github.com/repos/tahsin352/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/tahsin352/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/tahsin352/rails/tags", "blobs_url": "https://api.github.com/repos/tahsin352/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/tahsin352/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/tahsin352/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/tahsin352/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/tahsin352/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/tahsin352/rails/languages", "stargazers_url": "https://api.github.com/repos/tahsin352/rails/stargazers", "contributors_url": "https://api.github.com/repos/tahsin352/rails/contributors", "subscribers_url": "https://api.github.com/repos/tahsin352/rails/subscribers", "subscription_url": "https://api.github.com/repos/tahsin352/rails/subscription", "commits_url": "https://api.github.com/repos/tahsin352/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/tahsin352/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/tahsin352/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/tahsin352/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/tahsin352/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/tahsin352/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/tahsin352/rails/merges", "archive_url": "https://api.github.com/repos/tahsin352/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/tahsin352/rails/downloads", "issues_url": "https://api.github.com/repos/tahsin352/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/tahsin352/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/tahsin352/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/tahsin352/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/tahsin352/rails/labels{/name}", "releases_url": "https://api.github.com/repos/tahsin352/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/tahsin352/rails/deployments", "created_at": "2020-10-10T07:49:14Z", "updated_at": "2020-10-10T07:49:21Z", "pushed_at": "2020-10-27T17:51:22Z", "git_url": "git://github.com/tahsin352/rails.git", "ssh_url": "git@github.com:tahsin352/rails.git", "clone_url": "https://github.com/tahsin352/rails.git", "svn_url": "https://github.com/tahsin352/rails", "homepage": "https://rubyonrails.org", "size": 228838, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "8d96647d3064b9809be85e8348f0a9a38b3cfbbc", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40432" }, "html": { "href": "https://github.com/rails/rails/pull/40432" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40432" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40432/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40432/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40432/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/41095b6709e2134ae1adfdae0c11e4728d2c0970" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40430", "id": 508071033, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA4MDcxMDMz", "html_url": "https://github.com/rails/rails/pull/40430", "diff_url": "https://github.com/rails/rails/pull/40430.diff", "patch_url": "https://github.com/rails/rails/pull/40430.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40430", "number": 40430, "state": "open", "locked": false, "title": "Add webpacker to default packages list", "user": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nAdded updated versions of both webpacker and webpacker-dev-server to default package.json list for rails starter project template.\r\n\r\ncc @kamipo \r\n\r\n<!-- If there's anything else that's important and relevant to your pull\r\nrequest, mention that information here. This could include\r\nbenchmarks, or other information.\r\n\r\nIf you are updating any of the CHANGELOG files or are asked to update the\r\nCHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the file.\r\n\r\nFinally, if your pull request affects documentation or any non-code\r\nchanges, guidelines for those changes are [available\r\nhere](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#contributing-to-the-rails-documentation)\r\n\r\nThanks for contributing to Rails! -->\r\n", "created_at": "2020-10-22T07:10:09Z", "updated_at": "2020-10-27T10:15:53Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "25cb68b720fc83856bac3a9991f83a22e532b994", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107195, "node_id": "MDU6TGFiZWwxMDcxOTU=", "url": "https://api.github.com/repos/rails/rails/labels/railties", "name": "railties", "color": "8BE06E", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40430/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40430/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40430/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/da3b5b940448aa96ecc3de20e2d20e0b27fa5e0e", "head": { "label": "tahsin352:th_packagejson_template_webpacker", "ref": "th_packagejson_template_webpacker", "sha": "da3b5b940448aa96ecc3de20e2d20e0b27fa5e0e", "user": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "repo": { "id": 302846205, "node_id": "MDEwOlJlcG9zaXRvcnkzMDI4NDYyMDU=", "name": "rails", "full_name": "tahsin352/rails", "private": false, "owner": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/tahsin352/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/tahsin352/rails", "forks_url": "https://api.github.com/repos/tahsin352/rails/forks", "keys_url": "https://api.github.com/repos/tahsin352/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/tahsin352/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/tahsin352/rails/teams", "hooks_url": "https://api.github.com/repos/tahsin352/rails/hooks", "issue_events_url": "https://api.github.com/repos/tahsin352/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/tahsin352/rails/events", "assignees_url": "https://api.github.com/repos/tahsin352/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/tahsin352/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/tahsin352/rails/tags", "blobs_url": "https://api.github.com/repos/tahsin352/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/tahsin352/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/tahsin352/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/tahsin352/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/tahsin352/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/tahsin352/rails/languages", "stargazers_url": "https://api.github.com/repos/tahsin352/rails/stargazers", "contributors_url": "https://api.github.com/repos/tahsin352/rails/contributors", "subscribers_url": "https://api.github.com/repos/tahsin352/rails/subscribers", "subscription_url": "https://api.github.com/repos/tahsin352/rails/subscription", "commits_url": "https://api.github.com/repos/tahsin352/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/tahsin352/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/tahsin352/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/tahsin352/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/tahsin352/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/tahsin352/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/tahsin352/rails/merges", "archive_url": "https://api.github.com/repos/tahsin352/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/tahsin352/rails/downloads", "issues_url": "https://api.github.com/repos/tahsin352/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/tahsin352/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/tahsin352/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/tahsin352/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/tahsin352/rails/labels{/name}", "releases_url": "https://api.github.com/repos/tahsin352/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/tahsin352/rails/deployments", "created_at": "2020-10-10T07:49:14Z", "updated_at": "2020-10-10T07:49:21Z", "pushed_at": "2020-10-27T17:51:22Z", "git_url": "git://github.com/tahsin352/rails.git", "ssh_url": "git@github.com:tahsin352/rails.git", "clone_url": "https://github.com/tahsin352/rails.git", "svn_url": "https://github.com/tahsin352/rails", "homepage": "https://rubyonrails.org", "size": 228838, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "09f364b6f6d00203a439809f99578cd5eab1cd14", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40430" }, "html": { "href": "https://github.com/rails/rails/pull/40430" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40430" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40430/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40430/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40430/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/da3b5b940448aa96ecc3de20e2d20e0b27fa5e0e" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40426", "id": 507896180, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA3ODk2MTgw", "html_url": "https://github.com/rails/rails/pull/40426", "diff_url": "https://github.com/rails/rails/pull/40426.diff", "patch_url": "https://github.com/rails/rails/pull/40426.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40426", "number": 40426, "state": "open", "locked": false, "title": "Fix resources being fetched twice when crossorigin attribute is used", "user": { "login": "robin-drexler", "id": 474248, "node_id": "MDQ6VXNlcjQ3NDI0OA==", "avatar_url": "https://avatars0.githubusercontent.com/u/474248?v=4", "gravatar_id": "", "url": "https://api.github.com/users/robin-drexler", "html_url": "https://github.com/robin-drexler", "followers_url": "https://api.github.com/users/robin-drexler/followers", "following_url": "https://api.github.com/users/robin-drexler/following{/other_user}", "gists_url": "https://api.github.com/users/robin-drexler/gists{/gist_id}", "starred_url": "https://api.github.com/users/robin-drexler/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/robin-drexler/subscriptions", "organizations_url": "https://api.github.com/users/robin-drexler/orgs", "repos_url": "https://api.github.com/users/robin-drexler/repos", "events_url": "https://api.github.com/users/robin-drexler/events{/privacy}", "received_events_url": "https://api.github.com/users/robin-drexler/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nWhen you load a script or css (by using `javascript_include_tag` or `stylesheet_link_tag` respectively) with[ `crossorigin` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) applied, rails currently causes some browsers to fetch these resources twice. That is because `crossorigin` in the `link` header[ preload ](https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content)directive and on the resource itself need to match in order for browsers to re-use a resource.\r\n\r\nFor example if you use this tag in a view:\r\n\r\n```erb\r\n<%= javascript_include_tag(\"[...snip]react.production.min.js\", crossorigin: \"anonymous\") %>\r\n```\r\n\r\n`javascript_include_tag` pushes that resource to the link http header, but currently ignores the `crossorigin` attribute.\r\n\r\nWhich leads to the above-mentioned double fetches:\r\n<img width=\"1618\" alt=\"double fetches in network tab chrome\" src=\"https://user-images.githubusercontent.com/474248/96795533-778ec200-13cd-11eb-9f11-b543a81aea85.png\">\r\n\r\nChrome even provides a warning for these cases:\r\n<img width=\"1613\" alt=\"chrome warning\" src=\"https://user-images.githubusercontent.com/474248/96795717-81b0c080-13cd-11eb-898e-af142e75aae6.png\">\r\n\r\n> A preload for 'https://cdnjs.cloudflare.com/ajax/libs/react/17.0.0/umd/react.production.min.js' is found, but is not used because the request credentials mode does not match. Consider taking a look at crossorigin attribute.\r\n\r\nThis PR changes it so that the link header directives include the same `crossorigin` values as those that have been passed to the resources themselves, which allows browsers to reuse the preloaded resource. \r\n\r\n<img width=\"1616\" alt=\"double fetches fixed chrome network tab\" src=\"https://user-images.githubusercontent.com/474248/96795590-7a89b280-13cd-11eb-8f61-cd13f9412c9a.png\">\r\n\r\n\r\n`crossorigin: true` producing `anonymous` has already been done [in the existing `https://github.com/rails/rails/blob/57dd21ef65f8c4ff8f847b04133b17c5f01d6ed7/actionview/lib/action_view/helpers/asset_tag_helper.rb#L281`](https://github.com/rails/rails/blob/57dd21ef65f8c4ff8f847b04133b17c5f01d6ed7/actionview/lib/action_view/helpers/asset_tag_helper.rb#L281) helper, so I replicated this behavior here, too.\r\n\r\n", "created_at": "2020-10-21T22:19:09Z", "updated_at": "2020-10-21T23:10:32Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "c4212aa7b08a507ee8d1496ca5095051dbb9b838", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 3666649, "node_id": "MDU6TGFiZWwzNjY2NjQ5", "url": "https://api.github.com/repos/rails/rails/labels/actionview", "name": "actionview", "color": "d7e102", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40426/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40426/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40426/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/815e724bea3fb21a658162c63cdef1d4535b317a", "head": { "label": "robin-drexler:fix-crossorigin-preload", "ref": "fix-crossorigin-preload", "sha": "815e724bea3fb21a658162c63cdef1d4535b317a", "user": { "login": "robin-drexler", "id": 474248, "node_id": "MDQ6VXNlcjQ3NDI0OA==", "avatar_url": "https://avatars0.githubusercontent.com/u/474248?v=4", "gravatar_id": "", "url": "https://api.github.com/users/robin-drexler", "html_url": "https://github.com/robin-drexler", "followers_url": "https://api.github.com/users/robin-drexler/followers", "following_url": "https://api.github.com/users/robin-drexler/following{/other_user}", "gists_url": "https://api.github.com/users/robin-drexler/gists{/gist_id}", "starred_url": "https://api.github.com/users/robin-drexler/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/robin-drexler/subscriptions", "organizations_url": "https://api.github.com/users/robin-drexler/orgs", "repos_url": "https://api.github.com/users/robin-drexler/repos", "events_url": "https://api.github.com/users/robin-drexler/events{/privacy}", "received_events_url": "https://api.github.com/users/robin-drexler/received_events", "type": "User", "site_admin": false }, "repo": { "id": 306144045, "node_id": "MDEwOlJlcG9zaXRvcnkzMDYxNDQwNDU=", "name": "rails", "full_name": "robin-drexler/rails", "private": false, "owner": { "login": "robin-drexler", "id": 474248, "node_id": "MDQ6VXNlcjQ3NDI0OA==", "avatar_url": "https://avatars0.githubusercontent.com/u/474248?v=4", "gravatar_id": "", "url": "https://api.github.com/users/robin-drexler", "html_url": "https://github.com/robin-drexler", "followers_url": "https://api.github.com/users/robin-drexler/followers", "following_url": "https://api.github.com/users/robin-drexler/following{/other_user}", "gists_url": "https://api.github.com/users/robin-drexler/gists{/gist_id}", "starred_url": "https://api.github.com/users/robin-drexler/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/robin-drexler/subscriptions", "organizations_url": "https://api.github.com/users/robin-drexler/orgs", "repos_url": "https://api.github.com/users/robin-drexler/repos", "events_url": "https://api.github.com/users/robin-drexler/events{/privacy}", "received_events_url": "https://api.github.com/users/robin-drexler/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/robin-drexler/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/robin-drexler/rails", "forks_url": "https://api.github.com/repos/robin-drexler/rails/forks", "keys_url": "https://api.github.com/repos/robin-drexler/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/robin-drexler/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/robin-drexler/rails/teams", "hooks_url": "https://api.github.com/repos/robin-drexler/rails/hooks", "issue_events_url": "https://api.github.com/repos/robin-drexler/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/robin-drexler/rails/events", "assignees_url": "https://api.github.com/repos/robin-drexler/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/robin-drexler/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/robin-drexler/rails/tags", "blobs_url": "https://api.github.com/repos/robin-drexler/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/robin-drexler/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/robin-drexler/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/robin-drexler/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/robin-drexler/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/robin-drexler/rails/languages", "stargazers_url": "https://api.github.com/repos/robin-drexler/rails/stargazers", "contributors_url": "https://api.github.com/repos/robin-drexler/rails/contributors", "subscribers_url": "https://api.github.com/repos/robin-drexler/rails/subscribers", "subscription_url": "https://api.github.com/repos/robin-drexler/rails/subscription", "commits_url": "https://api.github.com/repos/robin-drexler/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/robin-drexler/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/robin-drexler/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/robin-drexler/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/robin-drexler/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/robin-drexler/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/robin-drexler/rails/merges", "archive_url": "https://api.github.com/repos/robin-drexler/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/robin-drexler/rails/downloads", "issues_url": "https://api.github.com/repos/robin-drexler/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/robin-drexler/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/robin-drexler/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/robin-drexler/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/robin-drexler/rails/labels{/name}", "releases_url": "https://api.github.com/repos/robin-drexler/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/robin-drexler/rails/deployments", "created_at": "2020-10-21T20:47:33Z", "updated_at": "2020-10-21T20:47:40Z", "pushed_at": "2020-10-21T22:26:48Z", "git_url": "git://github.com/robin-drexler/rails.git", "ssh_url": "git@github.com:robin-drexler/rails.git", "clone_url": "https://github.com/robin-drexler/rails.git", "svn_url": "https://github.com/robin-drexler/rails", "homepage": "https://rubyonrails.org", "size": 228749, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "57dd21ef65f8c4ff8f847b04133b17c5f01d6ed7", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40426" }, "html": { "href": "https://github.com/rails/rails/pull/40426" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40426" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40426/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40426/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40426/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/815e724bea3fb21a658162c63cdef1d4535b317a" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40421", "id": 507282445, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA3MjgyNDQ1", "html_url": "https://github.com/rails/rails/pull/40421", "diff_url": "https://github.com/rails/rails/pull/40421.diff", "patch_url": "https://github.com/rails/rails/pull/40421.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40421", "number": 40421, "state": "open", "locked": false, "title": "Fix rename_index removing old index with symbols", "user": { "login": "ayamomiji", "id": 486841, "node_id": "MDQ6VXNlcjQ4Njg0MQ==", "avatar_url": "https://avatars3.githubusercontent.com/u/486841?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ayamomiji", "html_url": "https://github.com/ayamomiji", "followers_url": "https://api.github.com/users/ayamomiji/followers", "following_url": "https://api.github.com/users/ayamomiji/following{/other_user}", "gists_url": "https://api.github.com/users/ayamomiji/gists{/gist_id}", "starred_url": "https://api.github.com/users/ayamomiji/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/ayamomiji/subscriptions", "organizations_url": "https://api.github.com/users/ayamomiji/orgs", "repos_url": "https://api.github.com/users/ayamomiji/repos", "events_url": "https://api.github.com/users/ayamomiji/events{/privacy}", "received_events_url": "https://api.github.com/users/ayamomiji/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nSome adapters (sqlite3 and older mysql/mariadb) do not support to rename an index directly.\r\nThat causes rename_index cannot find an old index to remove.", "created_at": "2020-10-21T06:17:05Z", "updated_at": "2020-10-21T06:17:08Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "222ecec87bfd8a4e0b8bd0e7f922b157fc1e2e6a", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40421/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40421/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40421/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/879a4c920663a2244cd2cff758406ff8dc2a9265", "head": { "label": "ayamomiji:master", "ref": "master", "sha": "879a4c920663a2244cd2cff758406ff8dc2a9265", "user": { "login": "ayamomiji", "id": 486841, "node_id": "MDQ6VXNlcjQ4Njg0MQ==", "avatar_url": "https://avatars3.githubusercontent.com/u/486841?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ayamomiji", "html_url": "https://github.com/ayamomiji", "followers_url": "https://api.github.com/users/ayamomiji/followers", "following_url": "https://api.github.com/users/ayamomiji/following{/other_user}", "gists_url": "https://api.github.com/users/ayamomiji/gists{/gist_id}", "starred_url": "https://api.github.com/users/ayamomiji/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/ayamomiji/subscriptions", "organizations_url": "https://api.github.com/users/ayamomiji/orgs", "repos_url": "https://api.github.com/users/ayamomiji/repos", "events_url": "https://api.github.com/users/ayamomiji/events{/privacy}", "received_events_url": "https://api.github.com/users/ayamomiji/received_events", "type": "User", "site_admin": false }, "repo": { "id": 305901567, "node_id": "MDEwOlJlcG9zaXRvcnkzMDU5MDE1Njc=", "name": "rails", "full_name": "ayamomiji/rails", "private": false, "owner": { "login": "ayamomiji", "id": 486841, "node_id": "MDQ6VXNlcjQ4Njg0MQ==", "avatar_url": "https://avatars3.githubusercontent.com/u/486841?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ayamomiji", "html_url": "https://github.com/ayamomiji", "followers_url": "https://api.github.com/users/ayamomiji/followers", "following_url": "https://api.github.com/users/ayamomiji/following{/other_user}", "gists_url": "https://api.github.com/users/ayamomiji/gists{/gist_id}", "starred_url": "https://api.github.com/users/ayamomiji/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/ayamomiji/subscriptions", "organizations_url": "https://api.github.com/users/ayamomiji/orgs", "repos_url": "https://api.github.com/users/ayamomiji/repos", "events_url": "https://api.github.com/users/ayamomiji/events{/privacy}", "received_events_url": "https://api.github.com/users/ayamomiji/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/ayamomiji/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/ayamomiji/rails", "forks_url": "https://api.github.com/repos/ayamomiji/rails/forks", "keys_url": "https://api.github.com/repos/ayamomiji/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/ayamomiji/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/ayamomiji/rails/teams", "hooks_url": "https://api.github.com/repos/ayamomiji/rails/hooks", "issue_events_url": "https://api.github.com/repos/ayamomiji/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/ayamomiji/rails/events", "assignees_url": "https://api.github.com/repos/ayamomiji/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/ayamomiji/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/ayamomiji/rails/tags", "blobs_url": "https://api.github.com/repos/ayamomiji/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/ayamomiji/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/ayamomiji/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/ayamomiji/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/ayamomiji/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/ayamomiji/rails/languages", "stargazers_url": "https://api.github.com/repos/ayamomiji/rails/stargazers", "contributors_url": "https://api.github.com/repos/ayamomiji/rails/contributors", "subscribers_url": "https://api.github.com/repos/ayamomiji/rails/subscribers", "subscription_url": "https://api.github.com/repos/ayamomiji/rails/subscription", "commits_url": "https://api.github.com/repos/ayamomiji/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/ayamomiji/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/ayamomiji/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/ayamomiji/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/ayamomiji/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/ayamomiji/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/ayamomiji/rails/merges", "archive_url": "https://api.github.com/repos/ayamomiji/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/ayamomiji/rails/downloads", "issues_url": "https://api.github.com/repos/ayamomiji/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/ayamomiji/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/ayamomiji/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/ayamomiji/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/ayamomiji/rails/labels{/name}", "releases_url": "https://api.github.com/repos/ayamomiji/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/ayamomiji/rails/deployments", "created_at": "2020-10-21T03:49:55Z", "updated_at": "2020-10-21T06:11:45Z", "pushed_at": "2020-10-21T06:11:29Z", "git_url": "git://github.com/ayamomiji/rails.git", "ssh_url": "git@github.com:ayamomiji/rails.git", "clone_url": "https://github.com/ayamomiji/rails.git", "svn_url": "https://github.com/ayamomiji/rails", "homepage": "https://rubyonrails.org", "size": 228749, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "7cc2b57b8dd052ff5986c663865174b247c0ea8c", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40421" }, "html": { "href": "https://github.com/rails/rails/pull/40421" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40421" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40421/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40421/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40421/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/879a4c920663a2244cd2cff758406ff8dc2a9265" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40417", "id": 506631160, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA2NjMxMTYw", "html_url": "https://github.com/rails/rails/pull/40417", "diff_url": "https://github.com/rails/rails/pull/40417.diff", "patch_url": "https://github.com/rails/rails/pull/40417.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40417", "number": 40417, "state": "open", "locked": false, "title": "Fix raise on empty url string in database.yml", "user": { "login": "kvokka", "id": 15954013, "node_id": "MDQ6VXNlcjE1OTU0MDEz", "avatar_url": "https://avatars3.githubusercontent.com/u/15954013?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kvokka", "html_url": "https://github.com/kvokka", "followers_url": "https://api.github.com/users/kvokka/followers", "following_url": "https://api.github.com/users/kvokka/following{/other_user}", "gists_url": "https://api.github.com/users/kvokka/gists{/gist_id}", "starred_url": "https://api.github.com/users/kvokka/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kvokka/subscriptions", "organizations_url": "https://api.github.com/users/kvokka/orgs", "repos_url": "https://api.github.com/users/kvokka/repos", "events_url": "https://api.github.com/users/kvokka/events{/privacy}", "received_events_url": "https://api.github.com/users/kvokka/received_events", "type": "User", "site_admin": false }, "body": "Close #40416", "created_at": "2020-10-20T09:28:29Z", "updated_at": "2020-10-24T17:09:44Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "5dd6e0137e793ca9c2eae25206016310bf7add04", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40417/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40417/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40417/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/91f5fea10ebf7c56f8884c6a03477684407d5aa5", "head": { "label": "kvokka:40416-fix-empty-url-string-in-database-yml", "ref": "40416-fix-empty-url-string-in-database-yml", "sha": "91f5fea10ebf7c56f8884c6a03477684407d5aa5", "user": { "login": "kvokka", "id": 15954013, "node_id": "MDQ6VXNlcjE1OTU0MDEz", "avatar_url": "https://avatars3.githubusercontent.com/u/15954013?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kvokka", "html_url": "https://github.com/kvokka", "followers_url": "https://api.github.com/users/kvokka/followers", "following_url": "https://api.github.com/users/kvokka/following{/other_user}", "gists_url": "https://api.github.com/users/kvokka/gists{/gist_id}", "starred_url": "https://api.github.com/users/kvokka/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kvokka/subscriptions", "organizations_url": "https://api.github.com/users/kvokka/orgs", "repos_url": "https://api.github.com/users/kvokka/repos", "events_url": "https://api.github.com/users/kvokka/events{/privacy}", "received_events_url": "https://api.github.com/users/kvokka/received_events", "type": "User", "site_admin": false }, "repo": { "id": 76365798, "node_id": "MDEwOlJlcG9zaXRvcnk3NjM2NTc5OA==", "name": "rails", "full_name": "kvokka/rails", "private": false, "owner": { "login": "kvokka", "id": 15954013, "node_id": "MDQ6VXNlcjE1OTU0MDEz", "avatar_url": "https://avatars3.githubusercontent.com/u/15954013?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kvokka", "html_url": "https://github.com/kvokka", "followers_url": "https://api.github.com/users/kvokka/followers", "following_url": "https://api.github.com/users/kvokka/following{/other_user}", "gists_url": "https://api.github.com/users/kvokka/gists{/gist_id}", "starred_url": "https://api.github.com/users/kvokka/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kvokka/subscriptions", "organizations_url": "https://api.github.com/users/kvokka/orgs", "repos_url": "https://api.github.com/users/kvokka/repos", "events_url": "https://api.github.com/users/kvokka/events{/privacy}", "received_events_url": "https://api.github.com/users/kvokka/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/kvokka/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/kvokka/rails", "forks_url": "https://api.github.com/repos/kvokka/rails/forks", "keys_url": "https://api.github.com/repos/kvokka/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/kvokka/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/kvokka/rails/teams", "hooks_url": "https://api.github.com/repos/kvokka/rails/hooks", "issue_events_url": "https://api.github.com/repos/kvokka/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/kvokka/rails/events", "assignees_url": "https://api.github.com/repos/kvokka/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/kvokka/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/kvokka/rails/tags", "blobs_url": "https://api.github.com/repos/kvokka/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/kvokka/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/kvokka/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/kvokka/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/kvokka/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/kvokka/rails/languages", "stargazers_url": "https://api.github.com/repos/kvokka/rails/stargazers", "contributors_url": "https://api.github.com/repos/kvokka/rails/contributors", "subscribers_url": "https://api.github.com/repos/kvokka/rails/subscribers", "subscription_url": "https://api.github.com/repos/kvokka/rails/subscription", "commits_url": "https://api.github.com/repos/kvokka/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/kvokka/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/kvokka/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/kvokka/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/kvokka/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/kvokka/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/kvokka/rails/merges", "archive_url": "https://api.github.com/repos/kvokka/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/kvokka/rails/downloads", "issues_url": "https://api.github.com/repos/kvokka/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/kvokka/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/kvokka/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/kvokka/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/kvokka/rails/labels{/name}", "releases_url": "https://api.github.com/repos/kvokka/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/kvokka/rails/deployments", "created_at": "2016-12-13T14:25:00Z", "updated_at": "2020-10-20T07:07:21Z", "pushed_at": "2020-10-20T13:42:04Z", "git_url": "git://github.com/kvokka/rails.git", "ssh_url": "git@github.com:kvokka/rails.git", "clone_url": "https://github.com/kvokka/rails.git", "svn_url": "https://github.com/kvokka/rails", "homepage": "http://rubyonrails.org", "size": 191765, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "0a608bd987fde4f9bc5bcf4bcebdb181d199cf4f", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40417" }, "html": { "href": "https://github.com/rails/rails/pull/40417" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40417" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40417/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40417/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40417/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/91f5fea10ebf7c56f8884c6a03477684407d5aa5" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40412", "id": 506202801, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA2MjAyODAx", "html_url": "https://github.com/rails/rails/pull/40412", "diff_url": "https://github.com/rails/rails/pull/40412.diff", "patch_url": "https://github.com/rails/rails/pull/40412.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40412", "number": 40412, "state": "open", "locked": false, "title": "Optimized Cache::Entry serialization", "user": { "login": "casperisfine", "id": 19192189, "node_id": "MDQ6VXNlcjE5MTkyMTg5", "avatar_url": "https://avatars2.githubusercontent.com/u/19192189?v=4", "gravatar_id": "", "url": "https://api.github.com/users/casperisfine", "html_url": "https://github.com/casperisfine", "followers_url": "https://api.github.com/users/casperisfine/followers", "following_url": "https://api.github.com/users/casperisfine/following{/other_user}", "gists_url": "https://api.github.com/users/casperisfine/gists{/gist_id}", "starred_url": "https://api.github.com/users/casperisfine/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/casperisfine/subscriptions", "organizations_url": "https://api.github.com/users/casperisfine/orgs", "repos_url": "https://api.github.com/users/casperisfine/repos", "events_url": "https://api.github.com/users/casperisfine/events{/privacy}", "received_events_url": "https://api.github.com/users/casperisfine/received_events", "type": "User", "site_admin": false }, "body": "Followup: https://github.com/rails/rails/pull/39770\r\n\r\n### Reminder:\r\n\r\n> - The minimum entry overhead is quite ridiculous: `Marshal.dump(ActiveSupport::Cache::Entry.new(\"\")).bytesize # => 107`. This could be largely reduced, the compression flag could be just one byte for instance.\r\n> - If you `MemCacheStore` with the default config, values are serialized and compressed several times `ZLib.deflate(Marshal.Dump(Entry.new(ZLib.deflate(Marshal.dump(actual_value)))))`, that is just wasted compute.\r\n> - I found and read https://github.com/rails/rails/issues/9494, apparently there was an attempt to improve things a few years ago, but it was reverted to preserve backward / forward compatibility.\r\n\r\n### Performance\r\n\r\n[As shown by this benchmark](https://gist.github.com/casperisfine/2b67492c83c259d5a1160cc2b74dd91b), the minimum entry size is down from `112B` to `23B`.\r\n\r\nThe deserialization of an empty payload is `~1.64x` faster, and serialization `~1.88x` faster.\r\n\r\nOf course that advantage quickly drop as the entry gets bigger, and the deserialization of the payload dwarfs the deserialization of the enveloppe. But deserialization stay slightly faster (`~1.12x`), likely because we avoid the \"marshal in marshal\" issue.\r\n\r\n### Backward compatibility\r\n\r\nNow that the coders are swappable, we can keep the old behavior just fine, until you use `load_defaults '6.1'` or set the configuration field individually.\r\n\r\nAlso both the `LegacyCoder` and the `EntryCoder` are able to detect payloads serialized with Marshal, hence the transition can be done without flushing the cache stores.\r\n\r\ncc @eugeneius as you reviewed the previous parts\r\ncc @rafaelfranca @etiennebarrie \r\n", "created_at": "2020-10-19T18:42:51Z", "updated_at": "2020-10-21T09:09:09Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "73c6a0945f34395839f7a88c463ff2ee9f718bf9", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107194, "node_id": "MDU6TGFiZWwxMDcxOTQ=", "url": "https://api.github.com/repos/rails/rails/labels/activesupport", "name": "activesupport", "color": "FC9300", "default": false, "description": null }, { "id": 107195, "node_id": "MDU6TGFiZWwxMDcxOTU=", "url": "https://api.github.com/repos/rails/rails/labels/railties", "name": "railties", "color": "8BE06E", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40412/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40412/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40412/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/6ed8f2e9c12401d259f25ed35da6daaa2e4a08d0", "head": { "label": "Shopify:optimized-entry-serialization", "ref": "optimized-entry-serialization", "sha": "6ed8f2e9c12401d259f25ed35da6daaa2e4a08d0", "user": { "login": "Shopify", "id": 8085, "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwODU=", "avatar_url": "https://avatars1.githubusercontent.com/u/8085?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Shopify", "html_url": "https://github.com/Shopify", "followers_url": "https://api.github.com/users/Shopify/followers", "following_url": "https://api.github.com/users/Shopify/following{/other_user}", "gists_url": "https://api.github.com/users/Shopify/gists{/gist_id}", "starred_url": "https://api.github.com/users/Shopify/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/Shopify/subscriptions", "organizations_url": "https://api.github.com/users/Shopify/orgs", "repos_url": "https://api.github.com/users/Shopify/repos", "events_url": "https://api.github.com/users/Shopify/events{/privacy}", "received_events_url": "https://api.github.com/users/Shopify/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 60858413, "node_id": "MDEwOlJlcG9zaXRvcnk2MDg1ODQxMw==", "name": "rails", "full_name": "Shopify/rails", "private": false, "owner": { "login": "Shopify", "id": 8085, "node_id": "MDEyOk9yZ2FuaXphdGlvbjgwODU=", "avatar_url": "https://avatars1.githubusercontent.com/u/8085?v=4", "gravatar_id": "", "url": "https://api.github.com/users/Shopify", "html_url": "https://github.com/Shopify", "followers_url": "https://api.github.com/users/Shopify/followers", "following_url": "https://api.github.com/users/Shopify/following{/other_user}", "gists_url": "https://api.github.com/users/Shopify/gists{/gist_id}", "starred_url": "https://api.github.com/users/Shopify/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/Shopify/subscriptions", "organizations_url": "https://api.github.com/users/Shopify/orgs", "repos_url": "https://api.github.com/users/Shopify/repos", "events_url": "https://api.github.com/users/Shopify/events{/privacy}", "received_events_url": "https://api.github.com/users/Shopify/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/Shopify/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/Shopify/rails", "forks_url": "https://api.github.com/repos/Shopify/rails/forks", "keys_url": "https://api.github.com/repos/Shopify/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/Shopify/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/Shopify/rails/teams", "hooks_url": "https://api.github.com/repos/Shopify/rails/hooks", "issue_events_url": "https://api.github.com/repos/Shopify/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/Shopify/rails/events", "assignees_url": "https://api.github.com/repos/Shopify/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/Shopify/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/Shopify/rails/tags", "blobs_url": "https://api.github.com/repos/Shopify/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/Shopify/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/Shopify/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/Shopify/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/Shopify/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/Shopify/rails/languages", "stargazers_url": "https://api.github.com/repos/Shopify/rails/stargazers", "contributors_url": "https://api.github.com/repos/Shopify/rails/contributors", "subscribers_url": "https://api.github.com/repos/Shopify/rails/subscribers", "subscription_url": "https://api.github.com/repos/Shopify/rails/subscription", "commits_url": "https://api.github.com/repos/Shopify/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/Shopify/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/Shopify/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/Shopify/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/Shopify/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/Shopify/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/Shopify/rails/merges", "archive_url": "https://api.github.com/repos/Shopify/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/Shopify/rails/downloads", "issues_url": "https://api.github.com/repos/Shopify/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/Shopify/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/Shopify/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/Shopify/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/Shopify/rails/labels{/name}", "releases_url": "https://api.github.com/repos/Shopify/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/Shopify/rails/deployments", "created_at": "2016-06-10T15:34:34Z", "updated_at": "2020-10-19T21:23:27Z", "pushed_at": "2020-10-21T09:05:47Z", "git_url": "git://github.com/Shopify/rails.git", "ssh_url": "git@github.com:Shopify/rails.git", "clone_url": "https://github.com/Shopify/rails.git", "svn_url": "https://github.com/Shopify/rails", "homepage": "http://rubyonrails.org", "size": 193192, "stargazers_count": 4, "watchers_count": 4, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 3, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 3, "open_issues": 0, "watchers": 4, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "7cc2b57b8dd052ff5986c663865174b247c0ea8c", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40412" }, "html": { "href": "https://github.com/rails/rails/pull/40412" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40412" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40412/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40412/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40412/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/6ed8f2e9c12401d259f25ed35da6daaa2e4a08d0" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40411", "id": 506160532, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA2MTYwNTMy", "html_url": "https://github.com/rails/rails/pull/40411", "diff_url": "https://github.com/rails/rails/pull/40411.diff", "patch_url": "https://github.com/rails/rails/pull/40411.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40411", "number": 40411, "state": "open", "locked": false, "title": "Always show version badge in guides, not just for edge [ci skip]", "user": { "login": "p8", "id": 28561, "node_id": "MDQ6VXNlcjI4NTYx", "avatar_url": "https://avatars3.githubusercontent.com/u/28561?v=4", "gravatar_id": "", "url": "https://api.github.com/users/p8", "html_url": "https://github.com/p8", "followers_url": "https://api.github.com/users/p8/followers", "following_url": "https://api.github.com/users/p8/following{/other_user}", "gists_url": "https://api.github.com/users/p8/gists{/gist_id}", "starred_url": "https://api.github.com/users/p8/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/p8/subscriptions", "organizations_url": "https://api.github.com/users/p8/orgs", "repos_url": "https://api.github.com/users/p8/repos", "events_url": "https://api.github.com/users/p8/events{/privacy}", "received_events_url": "https://api.github.com/users/p8/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nNow that we have a CSS based version banner since 1c5d9a89a724c898b71efb91437db3253a08883c\r\nwe can also show the banner for non edge versions.\r\nSince we have guides for minor versions only, truncate the version to\r\nthe minor version: v6.0, v5.2, v5.1 etc...\r\n\r\n<img width=\"747\" alt=\"image\" src=\"https://user-images.githubusercontent.com/28561/96490823-9f511f00-1241-11eb-85da-a6c57b226829.png\">\r\n\r\n", "created_at": "2020-10-19T17:40:44Z", "updated_at": "2020-10-20T14:34:15Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "01ea5eda860dbcf03e5cd43aeda950f309fa6793", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 150377, "node_id": "MDU6TGFiZWwxNTAzNzc=", "url": "https://api.github.com/repos/rails/rails/labels/docs", "name": "docs", "color": "02d7e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40411/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40411/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40411/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/20aedacf49c85373f70cdeae83c06b510803434a", "head": { "label": "p8:guides/version-badge", "ref": "guides/version-badge", "sha": "20aedacf49c85373f70cdeae83c06b510803434a", "user": { "login": "p8", "id": 28561, "node_id": "MDQ6VXNlcjI4NTYx", "avatar_url": "https://avatars3.githubusercontent.com/u/28561?v=4", "gravatar_id": "", "url": "https://api.github.com/users/p8", "html_url": "https://github.com/p8", "followers_url": "https://api.github.com/users/p8/followers", "following_url": "https://api.github.com/users/p8/following{/other_user}", "gists_url": "https://api.github.com/users/p8/gists{/gist_id}", "starred_url": "https://api.github.com/users/p8/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/p8/subscriptions", "organizations_url": "https://api.github.com/users/p8/orgs", "repos_url": "https://api.github.com/users/p8/repos", "events_url": "https://api.github.com/users/p8/events{/privacy}", "received_events_url": "https://api.github.com/users/p8/received_events", "type": "User", "site_admin": false }, "repo": { "id": 180205798, "node_id": "MDEwOlJlcG9zaXRvcnkxODAyMDU3OTg=", "name": "rails", "full_name": "p8/rails", "private": false, "owner": { "login": "p8", "id": 28561, "node_id": "MDQ6VXNlcjI4NTYx", "avatar_url": "https://avatars3.githubusercontent.com/u/28561?v=4", "gravatar_id": "", "url": "https://api.github.com/users/p8", "html_url": "https://github.com/p8", "followers_url": "https://api.github.com/users/p8/followers", "following_url": "https://api.github.com/users/p8/following{/other_user}", "gists_url": "https://api.github.com/users/p8/gists{/gist_id}", "starred_url": "https://api.github.com/users/p8/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/p8/subscriptions", "organizations_url": "https://api.github.com/users/p8/orgs", "repos_url": "https://api.github.com/users/p8/repos", "events_url": "https://api.github.com/users/p8/events{/privacy}", "received_events_url": "https://api.github.com/users/p8/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/p8/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/p8/rails", "forks_url": "https://api.github.com/repos/p8/rails/forks", "keys_url": "https://api.github.com/repos/p8/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/p8/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/p8/rails/teams", "hooks_url": "https://api.github.com/repos/p8/rails/hooks", "issue_events_url": "https://api.github.com/repos/p8/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/p8/rails/events", "assignees_url": "https://api.github.com/repos/p8/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/p8/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/p8/rails/tags", "blobs_url": "https://api.github.com/repos/p8/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/p8/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/p8/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/p8/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/p8/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/p8/rails/languages", "stargazers_url": "https://api.github.com/repos/p8/rails/stargazers", "contributors_url": "https://api.github.com/repos/p8/rails/contributors", "subscribers_url": "https://api.github.com/repos/p8/rails/subscribers", "subscription_url": "https://api.github.com/repos/p8/rails/subscription", "commits_url": "https://api.github.com/repos/p8/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/p8/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/p8/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/p8/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/p8/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/p8/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/p8/rails/merges", "archive_url": "https://api.github.com/repos/p8/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/p8/rails/downloads", "issues_url": "https://api.github.com/repos/p8/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/p8/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/p8/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/p8/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/p8/rails/labels{/name}", "releases_url": "https://api.github.com/repos/p8/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/p8/rails/deployments", "created_at": "2019-04-08T18:07:25Z", "updated_at": "2019-08-31T09:55:04Z", "pushed_at": "2020-10-19T17:40:14Z", "git_url": "git://github.com/p8/rails.git", "ssh_url": "git@github.com:p8/rails.git", "clone_url": "https://github.com/p8/rails.git", "svn_url": "https://github.com/p8/rails", "homepage": "https://rubyonrails.org", "size": 196094, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 1, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 1, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "0a608bd987fde4f9bc5bcf4bcebdb181d199cf4f", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40411" }, "html": { "href": "https://github.com/rails/rails/pull/40411" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40411" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40411/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40411/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40411/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/20aedacf49c85373f70cdeae83c06b510803434a" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40409", "id": 506107792, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA2MTA3Nzky", "html_url": "https://github.com/rails/rails/pull/40409", "diff_url": "https://github.com/rails/rails/pull/40409.diff", "patch_url": "https://github.com/rails/rails/pull/40409.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40409", "number": 40409, "state": "open", "locked": false, "title": "Added bug report template for ActionCable [ci skip]", "user": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nWhile I was working, I noticed that action_cable does not have a guide to easily provide a minimal reproduction app. This PR addresses this need. The test is inspired by https://github.com/rails/rails/blob/master/actioncable/test/client_test.rb#L29\r\n\r\ncc @georgeclaghorn @eugeneius @eileencodes @kamipo \r\n\r\n<!-- If there's anything else that's important and relevant to your pull\r\nrequest, mention that information here. This could include\r\nbenchmarks, or other information.\r\n\r\nIf you are updating any of the CHANGELOG files or are asked to update the\r\nCHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the file.\r\n\r\nFinally, if your pull request affects documentation or any non-code\r\nchanges, guidelines for those changes are [available\r\nhere](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#contributing-to-the-rails-documentation)\r\n\r\nThanks for contributing to Rails! -->\r\n", "created_at": "2020-10-19T16:22:08Z", "updated_at": "2020-10-23T11:59:53Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "d5bd51cf45391004980e2347ca4d16bbb1aa37e9", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 150377, "node_id": "MDU6TGFiZWwxNTAzNzc=", "url": "https://api.github.com/repos/rails/rails/labels/docs", "name": "docs", "color": "02d7e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40409/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40409/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40409/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/9a8d0b2b2d24368f6a1aaa57c02a522186864433", "head": { "label": "tahsin352:th_action_cable_bug_report_template", "ref": "th_action_cable_bug_report_template", "sha": "9a8d0b2b2d24368f6a1aaa57c02a522186864433", "user": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "repo": { "id": 302846205, "node_id": "MDEwOlJlcG9zaXRvcnkzMDI4NDYyMDU=", "name": "rails", "full_name": "tahsin352/rails", "private": false, "owner": { "login": "tahsin352", "id": 1106654, "node_id": "MDQ6VXNlcjExMDY2NTQ=", "avatar_url": "https://avatars3.githubusercontent.com/u/1106654?v=4", "gravatar_id": "", "url": "https://api.github.com/users/tahsin352", "html_url": "https://github.com/tahsin352", "followers_url": "https://api.github.com/users/tahsin352/followers", "following_url": "https://api.github.com/users/tahsin352/following{/other_user}", "gists_url": "https://api.github.com/users/tahsin352/gists{/gist_id}", "starred_url": "https://api.github.com/users/tahsin352/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/tahsin352/subscriptions", "organizations_url": "https://api.github.com/users/tahsin352/orgs", "repos_url": "https://api.github.com/users/tahsin352/repos", "events_url": "https://api.github.com/users/tahsin352/events{/privacy}", "received_events_url": "https://api.github.com/users/tahsin352/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/tahsin352/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/tahsin352/rails", "forks_url": "https://api.github.com/repos/tahsin352/rails/forks", "keys_url": "https://api.github.com/repos/tahsin352/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/tahsin352/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/tahsin352/rails/teams", "hooks_url": "https://api.github.com/repos/tahsin352/rails/hooks", "issue_events_url": "https://api.github.com/repos/tahsin352/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/tahsin352/rails/events", "assignees_url": "https://api.github.com/repos/tahsin352/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/tahsin352/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/tahsin352/rails/tags", "blobs_url": "https://api.github.com/repos/tahsin352/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/tahsin352/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/tahsin352/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/tahsin352/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/tahsin352/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/tahsin352/rails/languages", "stargazers_url": "https://api.github.com/repos/tahsin352/rails/stargazers", "contributors_url": "https://api.github.com/repos/tahsin352/rails/contributors", "subscribers_url": "https://api.github.com/repos/tahsin352/rails/subscribers", "subscription_url": "https://api.github.com/repos/tahsin352/rails/subscription", "commits_url": "https://api.github.com/repos/tahsin352/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/tahsin352/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/tahsin352/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/tahsin352/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/tahsin352/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/tahsin352/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/tahsin352/rails/merges", "archive_url": "https://api.github.com/repos/tahsin352/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/tahsin352/rails/downloads", "issues_url": "https://api.github.com/repos/tahsin352/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/tahsin352/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/tahsin352/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/tahsin352/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/tahsin352/rails/labels{/name}", "releases_url": "https://api.github.com/repos/tahsin352/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/tahsin352/rails/deployments", "created_at": "2020-10-10T07:49:14Z", "updated_at": "2020-10-10T07:49:21Z", "pushed_at": "2020-10-27T17:51:22Z", "git_url": "git://github.com/tahsin352/rails.git", "ssh_url": "git@github.com:tahsin352/rails.git", "clone_url": "https://github.com/tahsin352/rails.git", "svn_url": "https://github.com/tahsin352/rails", "homepage": "https://rubyonrails.org", "size": 228838, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "0a608bd987fde4f9bc5bcf4bcebdb181d199cf4f", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40409" }, "html": { "href": "https://github.com/rails/rails/pull/40409" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40409" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40409/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40409/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40409/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/9a8d0b2b2d24368f6a1aaa57c02a522186864433" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40407", "id": 505514009, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA1NTE0MDA5", "html_url": "https://github.com/rails/rails/pull/40407", "diff_url": "https://github.com/rails/rails/pull/40407.diff", "patch_url": "https://github.com/rails/rails/pull/40407.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40407", "number": 40407, "state": "open", "locked": false, "title": "Add reflected association methods to relations", "user": { "login": "kddeisz", "id": 5093358, "node_id": "MDQ6VXNlcjUwOTMzNTg=", "avatar_url": "https://avatars2.githubusercontent.com/u/5093358?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kddeisz", "html_url": "https://github.com/kddeisz", "followers_url": "https://api.github.com/users/kddeisz/followers", "following_url": "https://api.github.com/users/kddeisz/following{/other_user}", "gists_url": "https://api.github.com/users/kddeisz/gists{/gist_id}", "starred_url": "https://api.github.com/users/kddeisz/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kddeisz/subscriptions", "organizations_url": "https://api.github.com/users/kddeisz/orgs", "repos_url": "https://api.github.com/users/kddeisz/repos", "events_url": "https://api.github.com/users/kddeisz/events{/privacy}", "received_events_url": "https://api.github.com/users/kddeisz/received_events", "type": "User", "site_admin": false }, "body": "I'm reopening #37938 here which is an implementation of the first half of #37875. In the spirit of simplifying this PR and trying to get it merged, I've changed this PR to just be the association side of things, and moved the attributes work into another one that I'll open shortly. We're down to this PR just being this API:\r\n\r\n```ruby\r\nclass Blog < ActiveRecord::Base\r\n has_many :categories\r\n\r\n scope :large_id, -> { where(arel_table[:id].gt(100)) }\r\nend\r\n\r\nclass Category < ActiveRecord::Base\r\n belongs_to :blog\r\n has_many :posts\r\n\r\n scope :small_id, -> { where(arel_table[:id].lt(100)) }\r\nend\r\n\r\nclass Post < ActiveRecord::Base\r\n belongs_to :category\r\n has_many :comments\r\nend\r\n\r\nclass Comment < ActiveRecord::Base\r\n belongs_to :post\r\nend\r\n```\r\n\r\nNow you can call:\r\n\r\n```ruby\r\nBlog.large_id.categories.small_id.posts.comments \r\n```\r\n\r\nwhich gives you:\r\n\r\n```sql\r\nSELECT \"comments\".* FROM \"comments\" WHERE \"comments\".\"post_id\" IN (\r\n SELECT \"posts\".\"id\" FROM \"posts\" WHERE \"posts\".\"category_id\" IN (\r\n SELECT \"categories\".\"id\" FROM \"categories\" WHERE \"categories\".\"blog_id\" IN (\r\n SELECT \"blogs\".\"id\" FROM \"blogs\" WHERE \"blogs\".\"id\" > 100\r\n ) AND \"categories\".\"id\" < 100\r\n )\r\n)\r\n```\r\n\r\nPlease take a look and let me know what y'all think about the proposed API. Happy to change/improve anything.", "created_at": "2020-10-18T18:03:04Z", "updated_at": "2020-10-19T15:20:12Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "aba57fb804ee2136971b5524d3fa71b91f53f188", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40407/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40407/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40407/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/5b541b06c13a75b8f3fc85e778400f857e1f87ae", "head": { "label": "kddeisz:with-many", "ref": "with-many", "sha": "5b541b06c13a75b8f3fc85e778400f857e1f87ae", "user": { "login": "kddeisz", "id": 5093358, "node_id": "MDQ6VXNlcjUwOTMzNTg=", "avatar_url": "https://avatars2.githubusercontent.com/u/5093358?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kddeisz", "html_url": "https://github.com/kddeisz", "followers_url": "https://api.github.com/users/kddeisz/followers", "following_url": "https://api.github.com/users/kddeisz/following{/other_user}", "gists_url": "https://api.github.com/users/kddeisz/gists{/gist_id}", "starred_url": "https://api.github.com/users/kddeisz/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kddeisz/subscriptions", "organizations_url": "https://api.github.com/users/kddeisz/orgs", "repos_url": "https://api.github.com/users/kddeisz/repos", "events_url": "https://api.github.com/users/kddeisz/events{/privacy}", "received_events_url": "https://api.github.com/users/kddeisz/received_events", "type": "User", "site_admin": false }, "repo": { "id": 32339001, "node_id": "MDEwOlJlcG9zaXRvcnkzMjMzOTAwMQ==", "name": "rails", "full_name": "kddeisz/rails", "private": false, "owner": { "login": "kddeisz", "id": 5093358, "node_id": "MDQ6VXNlcjUwOTMzNTg=", "avatar_url": "https://avatars2.githubusercontent.com/u/5093358?v=4", "gravatar_id": "", "url": "https://api.github.com/users/kddeisz", "html_url": "https://github.com/kddeisz", "followers_url": "https://api.github.com/users/kddeisz/followers", "following_url": "https://api.github.com/users/kddeisz/following{/other_user}", "gists_url": "https://api.github.com/users/kddeisz/gists{/gist_id}", "starred_url": "https://api.github.com/users/kddeisz/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/kddeisz/subscriptions", "organizations_url": "https://api.github.com/users/kddeisz/orgs", "repos_url": "https://api.github.com/users/kddeisz/repos", "events_url": "https://api.github.com/users/kddeisz/events{/privacy}", "received_events_url": "https://api.github.com/users/kddeisz/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/kddeisz/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/kddeisz/rails", "forks_url": "https://api.github.com/repos/kddeisz/rails/forks", "keys_url": "https://api.github.com/repos/kddeisz/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/kddeisz/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/kddeisz/rails/teams", "hooks_url": "https://api.github.com/repos/kddeisz/rails/hooks", "issue_events_url": "https://api.github.com/repos/kddeisz/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/kddeisz/rails/events", "assignees_url": "https://api.github.com/repos/kddeisz/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/kddeisz/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/kddeisz/rails/tags", "blobs_url": "https://api.github.com/repos/kddeisz/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/kddeisz/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/kddeisz/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/kddeisz/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/kddeisz/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/kddeisz/rails/languages", "stargazers_url": "https://api.github.com/repos/kddeisz/rails/stargazers", "contributors_url": "https://api.github.com/repos/kddeisz/rails/contributors", "subscribers_url": "https://api.github.com/repos/kddeisz/rails/subscribers", "subscription_url": "https://api.github.com/repos/kddeisz/rails/subscription", "commits_url": "https://api.github.com/repos/kddeisz/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/kddeisz/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/kddeisz/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/kddeisz/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/kddeisz/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/kddeisz/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/kddeisz/rails/merges", "archive_url": "https://api.github.com/repos/kddeisz/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/kddeisz/rails/downloads", "issues_url": "https://api.github.com/repos/kddeisz/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/kddeisz/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/kddeisz/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/kddeisz/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/kddeisz/rails/labels{/name}", "releases_url": "https://api.github.com/repos/kddeisz/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/kddeisz/rails/deployments", "created_at": "2015-03-16T16:45:07Z", "updated_at": "2020-10-18T18:01:04Z", "pushed_at": "2020-10-18T18:00:46Z", "git_url": "git://github.com/kddeisz/rails.git", "ssh_url": "git@github.com:kddeisz/rails.git", "clone_url": "https://github.com/kddeisz/rails.git", "svn_url": "https://github.com/kddeisz/rails", "homepage": "http://rubyonrails.org", "size": 194305, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "bd90ed16303ee7a71d513fbb7e44377469bb4f44", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40407" }, "html": { "href": "https://github.com/rails/rails/pull/40407" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40407" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40407/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40407/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40407/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/5b541b06c13a75b8f3fc85e778400f857e1f87ae" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40404", "id": 505285489, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA1Mjg1NDg5", "html_url": "https://github.com/rails/rails/pull/40404", "diff_url": "https://github.com/rails/rails/pull/40404.diff", "patch_url": "https://github.com/rails/rails/pull/40404.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40404", "number": 40404, "state": "open", "locked": false, "title": "Fix initializing STI from abstract class", "user": { "login": "pothibo", "id": 23230, "node_id": "MDQ6VXNlcjIzMjMw", "avatar_url": "https://avatars0.githubusercontent.com/u/23230?v=4", "gravatar_id": "", "url": "https://api.github.com/users/pothibo", "html_url": "https://github.com/pothibo", "followers_url": "https://api.github.com/users/pothibo/followers", "following_url": "https://api.github.com/users/pothibo/following{/other_user}", "gists_url": "https://api.github.com/users/pothibo/gists{/gist_id}", "starred_url": "https://api.github.com/users/pothibo/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/pothibo/subscriptions", "organizations_url": "https://api.github.com/users/pothibo/orgs", "repos_url": "https://api.github.com/users/pothibo/repos", "events_url": "https://api.github.com/users/pothibo/events{/privacy}", "received_events_url": "https://api.github.com/users/pothibo/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nIt should be possible to call `.new` on the abstract class and return\r\nthe subclass instantiated properly just like it would with a base class.\r\n\r\nGiven the following example:\r\n\r\n```\r\nclass AbstractCompany < ActiveRecord::Base\r\n self.abstract_class = true\r\nend\r\n\r\nclass Company < AbstractCompany\r\nend\r\n\r\nclass Acme < Company\r\nend\r\n```\r\n\r\nIt is possible to calls `Company.new(type: \"Acme\")` and it will return\r\nan instance of Acme.\r\n\r\nHowever, if someone would call `AbstractCompany.new(type: \"Acme\")`, it\r\nwould raise a `NotImplementedError`.\r\n\r\nThis fixes it so that calling new on the abstract class behaves the\r\nsame.\r\n\r\n### Other Information\r\n\r\nI'm happy to provide more information and more test. I didn't know what else to add besides the small unit test I added. It's been a while since I contributed here, so my apologies if there are things that are missing. I will gladly provide any additional information requested.\r\n\r\n<!-- If there's anything else that's important and relevant to your pull\r\nrequest, mention that information here. This could include\r\nbenchmarks, or other information.\r\n\r\nIf you are updating any of the CHANGELOG files or are asked to update the\r\nCHANGELOG files by reviewers, please add the CHANGELOG entry at the top of the file.\r\n\r\nFinally, if your pull request affects documentation or any non-code\r\nchanges, guidelines for those changes are [available\r\nhere](https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#contributing-to-the-rails-documentation)\r\n\r\nThanks for contributing to Rails! -->\r\n", "created_at": "2020-10-17T13:51:13Z", "updated_at": "2020-10-19T10:15:40Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "09420f26d4a2eeae1f8994584c3f76c43e26b745", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40404/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40404/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40404/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/77687cbd62eca9262f73df9fa7e5677e041e1ad2", "head": { "label": "pothibo:inheritance-new-subclass-from-abstract-class", "ref": "inheritance-new-subclass-from-abstract-class", "sha": "77687cbd62eca9262f73df9fa7e5677e041e1ad2", "user": { "login": "pothibo", "id": 23230, "node_id": "MDQ6VXNlcjIzMjMw", "avatar_url": "https://avatars0.githubusercontent.com/u/23230?v=4", "gravatar_id": "", "url": "https://api.github.com/users/pothibo", "html_url": "https://github.com/pothibo", "followers_url": "https://api.github.com/users/pothibo/followers", "following_url": "https://api.github.com/users/pothibo/following{/other_user}", "gists_url": "https://api.github.com/users/pothibo/gists{/gist_id}", "starred_url": "https://api.github.com/users/pothibo/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/pothibo/subscriptions", "organizations_url": "https://api.github.com/users/pothibo/orgs", "repos_url": "https://api.github.com/users/pothibo/repos", "events_url": "https://api.github.com/users/pothibo/events{/privacy}", "received_events_url": "https://api.github.com/users/pothibo/received_events", "type": "User", "site_admin": false }, "repo": { "id": 304886791, "node_id": "MDEwOlJlcG9zaXRvcnkzMDQ4ODY3OTE=", "name": "rails", "full_name": "pothibo/rails", "private": false, "owner": { "login": "pothibo", "id": 23230, "node_id": "MDQ6VXNlcjIzMjMw", "avatar_url": "https://avatars0.githubusercontent.com/u/23230?v=4", "gravatar_id": "", "url": "https://api.github.com/users/pothibo", "html_url": "https://github.com/pothibo", "followers_url": "https://api.github.com/users/pothibo/followers", "following_url": "https://api.github.com/users/pothibo/following{/other_user}", "gists_url": "https://api.github.com/users/pothibo/gists{/gist_id}", "starred_url": "https://api.github.com/users/pothibo/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/pothibo/subscriptions", "organizations_url": "https://api.github.com/users/pothibo/orgs", "repos_url": "https://api.github.com/users/pothibo/repos", "events_url": "https://api.github.com/users/pothibo/events{/privacy}", "received_events_url": "https://api.github.com/users/pothibo/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/pothibo/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/pothibo/rails", "forks_url": "https://api.github.com/repos/pothibo/rails/forks", "keys_url": "https://api.github.com/repos/pothibo/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/pothibo/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/pothibo/rails/teams", "hooks_url": "https://api.github.com/repos/pothibo/rails/hooks", "issue_events_url": "https://api.github.com/repos/pothibo/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/pothibo/rails/events", "assignees_url": "https://api.github.com/repos/pothibo/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/pothibo/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/pothibo/rails/tags", "blobs_url": "https://api.github.com/repos/pothibo/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/pothibo/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/pothibo/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/pothibo/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/pothibo/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/pothibo/rails/languages", "stargazers_url": "https://api.github.com/repos/pothibo/rails/stargazers", "contributors_url": "https://api.github.com/repos/pothibo/rails/contributors", "subscribers_url": "https://api.github.com/repos/pothibo/rails/subscribers", "subscription_url": "https://api.github.com/repos/pothibo/rails/subscription", "commits_url": "https://api.github.com/repos/pothibo/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/pothibo/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/pothibo/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/pothibo/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/pothibo/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/pothibo/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/pothibo/rails/merges", "archive_url": "https://api.github.com/repos/pothibo/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/pothibo/rails/downloads", "issues_url": "https://api.github.com/repos/pothibo/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/pothibo/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/pothibo/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/pothibo/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/pothibo/rails/labels{/name}", "releases_url": "https://api.github.com/repos/pothibo/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/pothibo/rails/deployments", "created_at": "2020-10-17T13:43:18Z", "updated_at": "2020-10-17T13:43:25Z", "pushed_at": "2020-10-17T16:29:11Z", "git_url": "git://github.com/pothibo/rails.git", "ssh_url": "git@github.com:pothibo/rails.git", "clone_url": "https://github.com/pothibo/rails.git", "svn_url": "https://github.com/pothibo/rails", "homepage": "https://rubyonrails.org", "size": 228721, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "bd90ed16303ee7a71d513fbb7e44377469bb4f44", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40404" }, "html": { "href": "https://github.com/rails/rails/pull/40404" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40404" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40404/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40404/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40404/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/77687cbd62eca9262f73df9fa7e5677e041e1ad2" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40402", "id": 505008274, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA1MDA4Mjc0", "html_url": "https://github.com/rails/rails/pull/40402", "diff_url": "https://github.com/rails/rails/pull/40402.diff", "patch_url": "https://github.com/rails/rails/pull/40402.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40402", "number": 40402, "state": "open", "locked": false, "title": "ActiveRecord - Optimisations around hash / array manipulations", "user": { "login": "ritikesh", "id": 1778360, "node_id": "MDQ6VXNlcjE3NzgzNjA=", "avatar_url": "https://avatars2.githubusercontent.com/u/1778360?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ritikesh", "html_url": "https://github.com/ritikesh", "followers_url": "https://api.github.com/users/ritikesh/followers", "following_url": "https://api.github.com/users/ritikesh/following{/other_user}", "gists_url": "https://api.github.com/users/ritikesh/gists{/gist_id}", "starred_url": "https://api.github.com/users/ritikesh/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/ritikesh/subscriptions", "organizations_url": "https://api.github.com/users/ritikesh/orgs", "repos_url": "https://api.github.com/users/ritikesh/repos", "events_url": "https://api.github.com/users/ritikesh/events{/privacy}", "received_events_url": "https://api.github.com/users/ritikesh/received_events", "type": "User", "site_admin": false }, "body": "1. using `hash.keys.map!` instead of `hash.keys.map` to avoid redundant array creation\r\n2. avoid creating unwanted arrays through `hash.keys` where-ever not required.\r\n3. use `hash.key?` instead of `hash.keys.include?`", "created_at": "2020-10-16T17:51:57Z", "updated_at": "2020-10-27T15:29:56Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "29c52eee3eef586cb2c49c757098d68fde227e57", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40402/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40402/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40402/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/39a50a4cd61d343ddf4669d8c729b07b69337d24", "head": { "label": "ritikesh:hash_array_optimisations", "ref": "hash_array_optimisations", "sha": "39a50a4cd61d343ddf4669d8c729b07b69337d24", "user": { "login": "ritikesh", "id": 1778360, "node_id": "MDQ6VXNlcjE3NzgzNjA=", "avatar_url": "https://avatars2.githubusercontent.com/u/1778360?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ritikesh", "html_url": "https://github.com/ritikesh", "followers_url": "https://api.github.com/users/ritikesh/followers", "following_url": "https://api.github.com/users/ritikesh/following{/other_user}", "gists_url": "https://api.github.com/users/ritikesh/gists{/gist_id}", "starred_url": "https://api.github.com/users/ritikesh/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/ritikesh/subscriptions", "organizations_url": "https://api.github.com/users/ritikesh/orgs", "repos_url": "https://api.github.com/users/ritikesh/repos", "events_url": "https://api.github.com/users/ritikesh/events{/privacy}", "received_events_url": "https://api.github.com/users/ritikesh/received_events", "type": "User", "site_admin": false }, "repo": { "id": 276154019, "node_id": "MDEwOlJlcG9zaXRvcnkyNzYxNTQwMTk=", "name": "rails", "full_name": "ritikesh/rails", "private": false, "owner": { "login": "ritikesh", "id": 1778360, "node_id": "MDQ6VXNlcjE3NzgzNjA=", "avatar_url": "https://avatars2.githubusercontent.com/u/1778360?v=4", "gravatar_id": "", "url": "https://api.github.com/users/ritikesh", "html_url": "https://github.com/ritikesh", "followers_url": "https://api.github.com/users/ritikesh/followers", "following_url": "https://api.github.com/users/ritikesh/following{/other_user}", "gists_url": "https://api.github.com/users/ritikesh/gists{/gist_id}", "starred_url": "https://api.github.com/users/ritikesh/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/ritikesh/subscriptions", "organizations_url": "https://api.github.com/users/ritikesh/orgs", "repos_url": "https://api.github.com/users/ritikesh/repos", "events_url": "https://api.github.com/users/ritikesh/events{/privacy}", "received_events_url": "https://api.github.com/users/ritikesh/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/ritikesh/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/ritikesh/rails", "forks_url": "https://api.github.com/repos/ritikesh/rails/forks", "keys_url": "https://api.github.com/repos/ritikesh/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/ritikesh/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/ritikesh/rails/teams", "hooks_url": "https://api.github.com/repos/ritikesh/rails/hooks", "issue_events_url": "https://api.github.com/repos/ritikesh/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/ritikesh/rails/events", "assignees_url": "https://api.github.com/repos/ritikesh/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/ritikesh/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/ritikesh/rails/tags", "blobs_url": "https://api.github.com/repos/ritikesh/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/ritikesh/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/ritikesh/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/ritikesh/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/ritikesh/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/ritikesh/rails/languages", "stargazers_url": "https://api.github.com/repos/ritikesh/rails/stargazers", "contributors_url": "https://api.github.com/repos/ritikesh/rails/contributors", "subscribers_url": "https://api.github.com/repos/ritikesh/rails/subscribers", "subscription_url": "https://api.github.com/repos/ritikesh/rails/subscription", "commits_url": "https://api.github.com/repos/ritikesh/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/ritikesh/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/ritikesh/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/ritikesh/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/ritikesh/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/ritikesh/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/ritikesh/rails/merges", "archive_url": "https://api.github.com/repos/ritikesh/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/ritikesh/rails/downloads", "issues_url": "https://api.github.com/repos/ritikesh/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/ritikesh/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/ritikesh/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/ritikesh/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/ritikesh/rails/labels{/name}", "releases_url": "https://api.github.com/repos/ritikesh/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/ritikesh/rails/deployments", "created_at": "2020-06-30T16:32:17Z", "updated_at": "2020-10-16T15:53:21Z", "pushed_at": "2020-10-27T15:22:06Z", "git_url": "git://github.com/ritikesh/rails.git", "ssh_url": "git@github.com:ritikesh/rails.git", "clone_url": "https://github.com/ritikesh/rails.git", "svn_url": "https://github.com/ritikesh/rails", "homepage": "https://rubyonrails.org", "size": 228443, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "d83ee61dc6b5e73dd2853c5af9681e71c0150e30", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40402" }, "html": { "href": "https://github.com/rails/rails/pull/40402" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40402" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40402/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40402/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40402/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/39a50a4cd61d343ddf4669d8c729b07b69337d24" } }, "author_association": "NONE", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40401", "id": 504973509, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA0OTczNTA5", "html_url": "https://github.com/rails/rails/pull/40401", "diff_url": "https://github.com/rails/rails/pull/40401.diff", "patch_url": "https://github.com/rails/rails/pull/40401.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40401", "number": 40401, "state": "open", "locked": false, "title": "Add `preorder` as a new query method to prepend the specified order onto any existing order", "user": { "login": "agrobbin", "id": 46724, "node_id": "MDQ6VXNlcjQ2NzI0", "avatar_url": "https://avatars0.githubusercontent.com/u/46724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/agrobbin", "html_url": "https://github.com/agrobbin", "followers_url": "https://api.github.com/users/agrobbin/followers", "following_url": "https://api.github.com/users/agrobbin/following{/other_user}", "gists_url": "https://api.github.com/users/agrobbin/gists{/gist_id}", "starred_url": "https://api.github.com/users/agrobbin/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/agrobbin/subscriptions", "organizations_url": "https://api.github.com/users/agrobbin/orgs", "repos_url": "https://api.github.com/users/agrobbin/repos", "events_url": "https://api.github.com/users/agrobbin/events{/privacy}", "received_events_url": "https://api.github.com/users/agrobbin/received_events", "type": "User", "site_admin": false }, "body": "### Summary\r\n\r\nI recently ran into a situation where it would've been great to *prepend* a new `ORDER BY` clause to a query. In our case, it was when using a `scope` that itself had something to the effect of:\r\n\r\n```ruby\r\nclass Profile < ApplicationRecord\r\n belongs_to :user\r\n\r\n scope :recently_updated, -> { where(arel_table[:updated_at].gteq(7.days.ago)).order(updated_at: :desc) }\r\nend\r\n\r\nclass User < ApplicationRecord\r\n has_one :profile\r\n\r\n scope :recently_updated, -> { joins(:profile).merge(Profile.recently_updated) }\r\nend\r\n```\r\n\r\nWe wanted to use `User.recently_updated`, but needed to put a specific group of users at the top of the list. The only way to do that without something like `preorder` would be to reimplement the `recently_updated` scopes defined on the model.\r\n\r\nWith `preorder`, we can simply call `User.recently_updated.preorder('...')`, and we're done!\r\n\r\nAnother way we could use this would be in conjunction with [`ActiveRecord::FinderMethods#ordered_relation`](https://github.com/rails/rails/blob/d83ee61dc6b5e73dd2853c5af9681e71c0150e30/activerecord/lib/active_record/relation/finder_methods.rb#L578-L588):\r\n\r\n```ruby\r\nclass CustomerLegalEntity < ApplicationRecord\r\n scope :ordered, -> { ordered_relation.preorder(default: :desc) }\r\nend\r\n```", "created_at": "2020-10-16T16:51:21Z", "updated_at": "2020-10-16T20:00:49Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "159b3652c62c1a02e11e82cbc4dc4a125e8f2e9b", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40401/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40401/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40401/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/5b570a239febc3355d2a545871ab4b9d565f403a", "head": { "label": "agrobbin:active-record-preorder", "ref": "active-record-preorder", "sha": "5b570a239febc3355d2a545871ab4b9d565f403a", "user": { "login": "agrobbin", "id": 46724, "node_id": "MDQ6VXNlcjQ2NzI0", "avatar_url": "https://avatars0.githubusercontent.com/u/46724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/agrobbin", "html_url": "https://github.com/agrobbin", "followers_url": "https://api.github.com/users/agrobbin/followers", "following_url": "https://api.github.com/users/agrobbin/following{/other_user}", "gists_url": "https://api.github.com/users/agrobbin/gists{/gist_id}", "starred_url": "https://api.github.com/users/agrobbin/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/agrobbin/subscriptions", "organizations_url": "https://api.github.com/users/agrobbin/orgs", "repos_url": "https://api.github.com/users/agrobbin/repos", "events_url": "https://api.github.com/users/agrobbin/events{/privacy}", "received_events_url": "https://api.github.com/users/agrobbin/received_events", "type": "User", "site_admin": false }, "repo": { "id": 6689386, "node_id": "MDEwOlJlcG9zaXRvcnk2Njg5Mzg2", "name": "rails", "full_name": "agrobbin/rails", "private": false, "owner": { "login": "agrobbin", "id": 46724, "node_id": "MDQ6VXNlcjQ2NzI0", "avatar_url": "https://avatars0.githubusercontent.com/u/46724?v=4", "gravatar_id": "", "url": "https://api.github.com/users/agrobbin", "html_url": "https://github.com/agrobbin", "followers_url": "https://api.github.com/users/agrobbin/followers", "following_url": "https://api.github.com/users/agrobbin/following{/other_user}", "gists_url": "https://api.github.com/users/agrobbin/gists{/gist_id}", "starred_url": "https://api.github.com/users/agrobbin/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/agrobbin/subscriptions", "organizations_url": "https://api.github.com/users/agrobbin/orgs", "repos_url": "https://api.github.com/users/agrobbin/repos", "events_url": "https://api.github.com/users/agrobbin/events{/privacy}", "received_events_url": "https://api.github.com/users/agrobbin/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/agrobbin/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/agrobbin/rails", "forks_url": "https://api.github.com/repos/agrobbin/rails/forks", "keys_url": "https://api.github.com/repos/agrobbin/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/agrobbin/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/agrobbin/rails/teams", "hooks_url": "https://api.github.com/repos/agrobbin/rails/hooks", "issue_events_url": "https://api.github.com/repos/agrobbin/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/agrobbin/rails/events", "assignees_url": "https://api.github.com/repos/agrobbin/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/agrobbin/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/agrobbin/rails/tags", "blobs_url": "https://api.github.com/repos/agrobbin/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/agrobbin/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/agrobbin/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/agrobbin/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/agrobbin/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/agrobbin/rails/languages", "stargazers_url": "https://api.github.com/repos/agrobbin/rails/stargazers", "contributors_url": "https://api.github.com/repos/agrobbin/rails/contributors", "subscribers_url": "https://api.github.com/repos/agrobbin/rails/subscribers", "subscription_url": "https://api.github.com/repos/agrobbin/rails/subscription", "commits_url": "https://api.github.com/repos/agrobbin/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/agrobbin/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/agrobbin/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/agrobbin/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/agrobbin/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/agrobbin/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/agrobbin/rails/merges", "archive_url": "https://api.github.com/repos/agrobbin/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/agrobbin/rails/downloads", "issues_url": "https://api.github.com/repos/agrobbin/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/agrobbin/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/agrobbin/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/agrobbin/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/agrobbin/rails/labels{/name}", "releases_url": "https://api.github.com/repos/agrobbin/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/agrobbin/rails/deployments", "created_at": "2012-11-14T15:00:08Z", "updated_at": "2020-10-16T16:08:42Z", "pushed_at": "2020-10-16T20:00:39Z", "git_url": "git://github.com/agrobbin/rails.git", "ssh_url": "git@github.com:agrobbin/rails.git", "clone_url": "https://github.com/agrobbin/rails.git", "svn_url": "https://github.com/agrobbin/rails", "homepage": "http://rubyonrails.org", "size": 182638, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "d83ee61dc6b5e73dd2853c5af9681e71c0150e30", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40401" }, "html": { "href": "https://github.com/rails/rails/pull/40401" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40401" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40401/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40401/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40401/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/5b570a239febc3355d2a545871ab4b9d565f403a" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null }, { "url": "https://api.github.com/repos/rails/rails/pulls/40399", "id": 504863972, "node_id": "MDExOlB1bGxSZXF1ZXN0NTA0ODYzOTcy", "html_url": "https://github.com/rails/rails/pull/40399", "diff_url": "https://github.com/rails/rails/pull/40399.diff", "patch_url": "https://github.com/rails/rails/pull/40399.patch", "issue_url": "https://api.github.com/repos/rails/rails/issues/40399", "number": 40399, "state": "open", "locked": false, "title": "Mark Reaper thread as fork-safe w/thread-local variable", "user": { "login": "nateberkopec", "id": 845662, "node_id": "MDQ6VXNlcjg0NTY2Mg==", "avatar_url": "https://avatars0.githubusercontent.com/u/845662?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nateberkopec", "html_url": "https://github.com/nateberkopec", "followers_url": "https://api.github.com/users/nateberkopec/followers", "following_url": "https://api.github.com/users/nateberkopec/following{/other_user}", "gists_url": "https://api.github.com/users/nateberkopec/gists{/gist_id}", "starred_url": "https://api.github.com/users/nateberkopec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/nateberkopec/subscriptions", "organizations_url": "https://api.github.com/users/nateberkopec/orgs", "repos_url": "https://api.github.com/users/nateberkopec/repos", "events_url": "https://api.github.com/users/nateberkopec/events{/privacy}", "received_events_url": "https://api.github.com/users/nateberkopec/received_events", "type": "User", "site_admin": false }, "body": "Re: https://github.com/rails/rails/issues/37066#issuecomment-709403972\r\n\r\n### Summary\r\n\r\nPuma (and some other multi-threaded application servers) may check the `Thread` list before and after forking to look for any threads that may have been running during a call to `fork`. Threads running during a `fork` can leave memory and resources open and potentially cause leaks or deadlocks.\r\n\r\nHowever, the Reaper thread in ActiveRecord cannot orphan any resources or memory, and will be cleaned up after forking. \r\n\r\nSetting this thread local variable allows Puma and other application servers to ignore this thread for the purpose of displaying warnings to users about threads present and running during `fork`.\r\n\r\n### Other Information\r\n\r\nI'm open to a different name. I just picked the first one that came out of the ether.\r\n\r\nBecause Rails doesn't consume this thread-local, I did not add a test.\r\n", "created_at": "2020-10-16T13:46:05Z", "updated_at": "2020-10-25T02:37:44Z", "closed_at": null, "merged_at": null, "merge_commit_sha": "2cca3e523d712cb802bf8df580f88076b5745651", "assignee": null, "assignees": [], "requested_reviewers": [], "requested_teams": [], "labels": [ { "id": 107191, "node_id": "MDU6TGFiZWwxMDcxOTE=", "url": "https://api.github.com/repos/rails/rails/labels/activerecord", "name": "activerecord", "color": "0b02e1", "default": false, "description": null } ], "milestone": null, "draft": false, "commits_url": "https://api.github.com/repos/rails/rails/pulls/40399/commits", "review_comments_url": "https://api.github.com/repos/rails/rails/pulls/40399/comments", "review_comment_url": "https://api.github.com/repos/rails/rails/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/rails/rails/issues/40399/comments", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/c369f525da327f2b6651ea36cbe5cd9437a171e1", "head": { "label": "nateberkopec:patch-3", "ref": "patch-3", "sha": "c369f525da327f2b6651ea36cbe5cd9437a171e1", "user": { "login": "nateberkopec", "id": 845662, "node_id": "MDQ6VXNlcjg0NTY2Mg==", "avatar_url": "https://avatars0.githubusercontent.com/u/845662?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nateberkopec", "html_url": "https://github.com/nateberkopec", "followers_url": "https://api.github.com/users/nateberkopec/followers", "following_url": "https://api.github.com/users/nateberkopec/following{/other_user}", "gists_url": "https://api.github.com/users/nateberkopec/gists{/gist_id}", "starred_url": "https://api.github.com/users/nateberkopec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/nateberkopec/subscriptions", "organizations_url": "https://api.github.com/users/nateberkopec/orgs", "repos_url": "https://api.github.com/users/nateberkopec/repos", "events_url": "https://api.github.com/users/nateberkopec/events{/privacy}", "received_events_url": "https://api.github.com/users/nateberkopec/received_events", "type": "User", "site_admin": false }, "repo": { "id": 27973040, "node_id": "MDEwOlJlcG9zaXRvcnkyNzk3MzA0MA==", "name": "rails", "full_name": "nateberkopec/rails", "private": false, "owner": { "login": "nateberkopec", "id": 845662, "node_id": "MDQ6VXNlcjg0NTY2Mg==", "avatar_url": "https://avatars0.githubusercontent.com/u/845662?v=4", "gravatar_id": "", "url": "https://api.github.com/users/nateberkopec", "html_url": "https://github.com/nateberkopec", "followers_url": "https://api.github.com/users/nateberkopec/followers", "following_url": "https://api.github.com/users/nateberkopec/following{/other_user}", "gists_url": "https://api.github.com/users/nateberkopec/gists{/gist_id}", "starred_url": "https://api.github.com/users/nateberkopec/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/nateberkopec/subscriptions", "organizations_url": "https://api.github.com/users/nateberkopec/orgs", "repos_url": "https://api.github.com/users/nateberkopec/repos", "events_url": "https://api.github.com/users/nateberkopec/events{/privacy}", "received_events_url": "https://api.github.com/users/nateberkopec/received_events", "type": "User", "site_admin": false }, "html_url": "https://github.com/nateberkopec/rails", "description": "Ruby on Rails", "fork": true, "url": "https://api.github.com/repos/nateberkopec/rails", "forks_url": "https://api.github.com/repos/nateberkopec/rails/forks", "keys_url": "https://api.github.com/repos/nateberkopec/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/nateberkopec/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/nateberkopec/rails/teams", "hooks_url": "https://api.github.com/repos/nateberkopec/rails/hooks", "issue_events_url": "https://api.github.com/repos/nateberkopec/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/nateberkopec/rails/events", "assignees_url": "https://api.github.com/repos/nateberkopec/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/nateberkopec/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/nateberkopec/rails/tags", "blobs_url": "https://api.github.com/repos/nateberkopec/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/nateberkopec/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/nateberkopec/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/nateberkopec/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/nateberkopec/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/nateberkopec/rails/languages", "stargazers_url": "https://api.github.com/repos/nateberkopec/rails/stargazers", "contributors_url": "https://api.github.com/repos/nateberkopec/rails/contributors", "subscribers_url": "https://api.github.com/repos/nateberkopec/rails/subscribers", "subscription_url": "https://api.github.com/repos/nateberkopec/rails/subscription", "commits_url": "https://api.github.com/repos/nateberkopec/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/nateberkopec/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/nateberkopec/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/nateberkopec/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/nateberkopec/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/nateberkopec/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/nateberkopec/rails/merges", "archive_url": "https://api.github.com/repos/nateberkopec/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/nateberkopec/rails/downloads", "issues_url": "https://api.github.com/repos/nateberkopec/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/nateberkopec/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/nateberkopec/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/nateberkopec/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/nateberkopec/rails/labels{/name}", "releases_url": "https://api.github.com/repos/nateberkopec/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/nateberkopec/rails/deployments", "created_at": "2014-12-13T20:35:21Z", "updated_at": "2014-12-13T20:35:43Z", "pushed_at": "2020-10-17T18:20:45Z", "git_url": "git://github.com/nateberkopec/rails.git", "ssh_url": "git@github.com:nateberkopec/rails.git", "clone_url": "https://github.com/nateberkopec/rails.git", "svn_url": "https://github.com/nateberkopec/rails", "homepage": "http://rubyonrails.org", "size": 186762, "stargazers_count": 0, "watchers_count": 0, "language": "Ruby", "has_issues": false, "has_projects": true, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 0, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 0, "license": null, "forks": 0, "open_issues": 0, "watchers": 0, "default_branch": "master" } }, "base": { "label": "rails:master", "ref": "master", "sha": "4194565ddffda400a7874eef6fc9ba7a5bce6983", "user": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "repo": { "id": 8514, "node_id": "MDEwOlJlcG9zaXRvcnk4NTE0", "name": "rails", "full_name": "rails/rails", "private": false, "owner": { "login": "rails", "id": 4223, "node_id": "MDEyOk9yZ2FuaXphdGlvbjQyMjM=", "avatar_url": "https://avatars1.githubusercontent.com/u/4223?v=4", "gravatar_id": "", "url": "https://api.github.com/users/rails", "html_url": "https://github.com/rails", "followers_url": "https://api.github.com/users/rails/followers", "following_url": "https://api.github.com/users/rails/following{/other_user}", "gists_url": "https://api.github.com/users/rails/gists{/gist_id}", "starred_url": "https://api.github.com/users/rails/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/rails/subscriptions", "organizations_url": "https://api.github.com/users/rails/orgs", "repos_url": "https://api.github.com/users/rails/repos", "events_url": "https://api.github.com/users/rails/events{/privacy}", "received_events_url": "https://api.github.com/users/rails/received_events", "type": "Organization", "site_admin": false }, "html_url": "https://github.com/rails/rails", "description": "Ruby on Rails", "fork": false, "url": "https://api.github.com/repos/rails/rails", "forks_url": "https://api.github.com/repos/rails/rails/forks", "keys_url": "https://api.github.com/repos/rails/rails/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/rails/rails/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/rails/rails/teams", "hooks_url": "https://api.github.com/repos/rails/rails/hooks", "issue_events_url": "https://api.github.com/repos/rails/rails/issues/events{/number}", "events_url": "https://api.github.com/repos/rails/rails/events", "assignees_url": "https://api.github.com/repos/rails/rails/assignees{/user}", "branches_url": "https://api.github.com/repos/rails/rails/branches{/branch}", "tags_url": "https://api.github.com/repos/rails/rails/tags", "blobs_url": "https://api.github.com/repos/rails/rails/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/rails/rails/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/rails/rails/git/refs{/sha}", "trees_url": "https://api.github.com/repos/rails/rails/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/rails/rails/statuses/{sha}", "languages_url": "https://api.github.com/repos/rails/rails/languages", "stargazers_url": "https://api.github.com/repos/rails/rails/stargazers", "contributors_url": "https://api.github.com/repos/rails/rails/contributors", "subscribers_url": "https://api.github.com/repos/rails/rails/subscribers", "subscription_url": "https://api.github.com/repos/rails/rails/subscription", "commits_url": "https://api.github.com/repos/rails/rails/commits{/sha}", "git_commits_url": "https://api.github.com/repos/rails/rails/git/commits{/sha}", "comments_url": "https://api.github.com/repos/rails/rails/comments{/number}", "issue_comment_url": "https://api.github.com/repos/rails/rails/issues/comments{/number}", "contents_url": "https://api.github.com/repos/rails/rails/contents/{+path}", "compare_url": "https://api.github.com/repos/rails/rails/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/rails/rails/merges", "archive_url": "https://api.github.com/repos/rails/rails/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/rails/rails/downloads", "issues_url": "https://api.github.com/repos/rails/rails/issues{/number}", "pulls_url": "https://api.github.com/repos/rails/rails/pulls{/number}", "milestones_url": "https://api.github.com/repos/rails/rails/milestones{/number}", "notifications_url": "https://api.github.com/repos/rails/rails/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/rails/rails/labels{/name}", "releases_url": "https://api.github.com/repos/rails/rails/releases{/id}", "deployments_url": "https://api.github.com/repos/rails/rails/deployments", "created_at": "2008-04-11T02:19:47Z", "updated_at": "2020-10-27T21:18:30Z", "pushed_at": "2020-10-27T21:06:38Z", "git_url": "git://github.com/rails/rails.git", "ssh_url": "git@github.com:rails/rails.git", "clone_url": "https://github.com/rails/rails.git", "svn_url": "https://github.com/rails/rails", "homepage": "https://rubyonrails.org", "size": 228828, "stargazers_count": 46749, "watchers_count": 46749, "language": "Ruby", "has_issues": true, "has_projects": false, "has_downloads": true, "has_wiki": false, "has_pages": false, "forks_count": 18781, "mirror_url": null, "archived": false, "disabled": false, "open_issues_count": 621, "license": { "key": "mit", "name": "MIT License", "spdx_id": "MIT", "url": "https://api.github.com/licenses/mit", "node_id": "MDc6TGljZW5zZTEz" }, "forks": 18781, "open_issues": 621, "watchers": 46749, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/rails/rails/pulls/40399" }, "html": { "href": "https://github.com/rails/rails/pull/40399" }, "issue": { "href": "https://api.github.com/repos/rails/rails/issues/40399" }, "comments": { "href": "https://api.github.com/repos/rails/rails/issues/40399/comments" }, "review_comments": { "href": "https://api.github.com/repos/rails/rails/pulls/40399/comments" }, "review_comment": { "href": "https://api.github.com/repos/rails/rails/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/rails/rails/pulls/40399/commits" }, "statuses": { "href": "https://api.github.com/repos/rails/rails/statuses/c369f525da327f2b6651ea36cbe5cd9437a171e1" } }, "author_association": "CONTRIBUTOR", "active_lock_reason": null } ]
pulls[0]
{'url': 'https://api.github.com/repos/rails/rails/pulls/40467', 'id': 511057455, 'node_id': 'MDExOlB1bGxSZXF1ZXN0NTExMDU3NDU1', 'html_url': 'https://github.com/rails/rails/pull/40467', 'diff_url': 'https://github.com/rails/rails/pull/40467.diff', 'patch_url': 'https://github.com/rails/rails/pull/40467.patch', 'issue_url': 'https://api.github.com/repos/rails/rails/issues/40467', 'number': 40467, 'state': 'open', 'locked': False, 'title': 'Test find_signed/! on Relation', 'user': {'login': 'bogdanvlviv', 'id': 6443532, 'node_id': 'MDQ6VXNlcjY0NDM1MzI=', 'avatar_url': 'https://avatars0.githubusercontent.com/u/6443532?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/bogdanvlviv', 'html_url': 'https://github.com/bogdanvlviv', 'followers_url': 'https://api.github.com/users/bogdanvlviv/followers', 'following_url': 'https://api.github.com/users/bogdanvlviv/following{/other_user}', 'gists_url': 'https://api.github.com/users/bogdanvlviv/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/bogdanvlviv/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/bogdanvlviv/subscriptions', 'organizations_url': 'https://api.github.com/users/bogdanvlviv/orgs', 'repos_url': 'https://api.github.com/users/bogdanvlviv/repos', 'events_url': 'https://api.github.com/users/bogdanvlviv/events{/privacy}', 'received_events_url': 'https://api.github.com/users/bogdanvlviv/received_events', 'type': 'User', 'site_admin': False}, 'body': "Want to make sure that those methods work on relation and return\r\nexpected result when retation has or doesn't have any records.\r\n\r\nThose methods are delegated by\r\nhttps://github.com/rails/rails/blob/7cb451346618811796efce1f8a2bf576b8e4999c/activerecord/lib/active_record/relation/delegation.rb#L21,\r\nhttps://github.com/rails/rails/blob/7cb451346618811796efce1f8a2bf576b8e4999c/activerecord/lib/active_record/relation/delegation.rb#L95-L114,\r\nhttps://github.com/rails/rails/blob/7cb451346618811796efce1f8a2bf576b8e4999c/activerecord/lib/active_record/relation/delegation.rb#L56-L78\r\nas I understand.\r\n\r\nRelated to https://github.com/rails/rails/pull/39313", 'created_at': '2020-10-27T20:53:14Z', 'updated_at': '2020-10-27T20:59:55Z', 'closed_at': None, 'merged_at': None, 'merge_commit_sha': '08bb56fc427ee95ac80a0a18c1722f1f8f488b7e', 'assignee': None, 'assignees': [], 'requested_reviewers': [], 'requested_teams': [], 'labels': [{'id': 107191, 'node_id': 'MDU6TGFiZWwxMDcxOTE=', 'url': 'https://api.github.com/repos/rails/rails/labels/activerecord', 'name': 'activerecord', 'color': '0b02e1', 'default': False, 'description': None}], 'milestone': None, 'draft': False, 'commits_url': 'https://api.github.com/repos/rails/rails/pulls/40467/commits', 'review_comments_url': 'https://api.github.com/repos/rails/rails/pulls/40467/comments', 'review_comment_url': 'https://api.github.com/repos/rails/rails/pulls/comments{/number}', 'comments_url': 'https://api.github.com/repos/rails/rails/issues/40467/comments', 'statuses_url': 'https://api.github.com/repos/rails/rails/statuses/aac3d28b4e98c661b0098acf9c4ad028ecd69da3', 'head': {'label': 'bogdanvlviv:test_find_signed_on_relation', 'ref': 'test_find_signed_on_relation', 'sha': 'aac3d28b4e98c661b0098acf9c4ad028ecd69da3', 'user': {'login': 'bogdanvlviv', 'id': 6443532, 'node_id': 'MDQ6VXNlcjY0NDM1MzI=', 'avatar_url': 'https://avatars0.githubusercontent.com/u/6443532?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/bogdanvlviv', 'html_url': 'https://github.com/bogdanvlviv', 'followers_url': 'https://api.github.com/users/bogdanvlviv/followers', 'following_url': 'https://api.github.com/users/bogdanvlviv/following{/other_user}', 'gists_url': 'https://api.github.com/users/bogdanvlviv/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/bogdanvlviv/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/bogdanvlviv/subscriptions', 'organizations_url': 'https://api.github.com/users/bogdanvlviv/orgs', 'repos_url': 'https://api.github.com/users/bogdanvlviv/repos', 'events_url': 'https://api.github.com/users/bogdanvlviv/events{/privacy}', 'received_events_url': 'https://api.github.com/users/bogdanvlviv/received_events', 'type': 'User', 'site_admin': False}, 'repo': {'id': 54744114, 'node_id': 'MDEwOlJlcG9zaXRvcnk1NDc0NDExNA==', 'name': 'rails', 'full_name': 'bogdanvlviv/rails', 'private': False, 'owner': {'login': 'bogdanvlviv', 'id': 6443532, 'node_id': 'MDQ6VXNlcjY0NDM1MzI=', 'avatar_url': 'https://avatars0.githubusercontent.com/u/6443532?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/bogdanvlviv', 'html_url': 'https://github.com/bogdanvlviv', 'followers_url': 'https://api.github.com/users/bogdanvlviv/followers', 'following_url': 'https://api.github.com/users/bogdanvlviv/following{/other_user}', 'gists_url': 'https://api.github.com/users/bogdanvlviv/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/bogdanvlviv/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/bogdanvlviv/subscriptions', 'organizations_url': 'https://api.github.com/users/bogdanvlviv/orgs', 'repos_url': 'https://api.github.com/users/bogdanvlviv/repos', 'events_url': 'https://api.github.com/users/bogdanvlviv/events{/privacy}', 'received_events_url': 'https://api.github.com/users/bogdanvlviv/received_events', 'type': 'User', 'site_admin': False}, 'html_url': 'https://github.com/bogdanvlviv/rails', 'description': 'Ruby on Rails', 'fork': True, 'url': 'https://api.github.com/repos/bogdanvlviv/rails', 'forks_url': 'https://api.github.com/repos/bogdanvlviv/rails/forks', 'keys_url': 'https://api.github.com/repos/bogdanvlviv/rails/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/bogdanvlviv/rails/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/bogdanvlviv/rails/teams', 'hooks_url': 'https://api.github.com/repos/bogdanvlviv/rails/hooks', 'issue_events_url': 'https://api.github.com/repos/bogdanvlviv/rails/issues/events{/number}', 'events_url': 'https://api.github.com/repos/bogdanvlviv/rails/events', 'assignees_url': 'https://api.github.com/repos/bogdanvlviv/rails/assignees{/user}', 'branches_url': 'https://api.github.com/repos/bogdanvlviv/rails/branches{/branch}', 'tags_url': 'https://api.github.com/repos/bogdanvlviv/rails/tags', 'blobs_url': 'https://api.github.com/repos/bogdanvlviv/rails/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/bogdanvlviv/rails/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/bogdanvlviv/rails/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/bogdanvlviv/rails/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/bogdanvlviv/rails/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/bogdanvlviv/rails/languages', 'stargazers_url': 'https://api.github.com/repos/bogdanvlviv/rails/stargazers', 'contributors_url': 'https://api.github.com/repos/bogdanvlviv/rails/contributors', 'subscribers_url': 'https://api.github.com/repos/bogdanvlviv/rails/subscribers', 'subscription_url': 'https://api.github.com/repos/bogdanvlviv/rails/subscription', 'commits_url': 'https://api.github.com/repos/bogdanvlviv/rails/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/bogdanvlviv/rails/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/bogdanvlviv/rails/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/bogdanvlviv/rails/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/bogdanvlviv/rails/contents/{+path}', 'compare_url': 'https://api.github.com/repos/bogdanvlviv/rails/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/bogdanvlviv/rails/merges', 'archive_url': 'https://api.github.com/repos/bogdanvlviv/rails/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/bogdanvlviv/rails/downloads', 'issues_url': 'https://api.github.com/repos/bogdanvlviv/rails/issues{/number}', 'pulls_url': 'https://api.github.com/repos/bogdanvlviv/rails/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/bogdanvlviv/rails/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/bogdanvlviv/rails/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/bogdanvlviv/rails/labels{/name}', 'releases_url': 'https://api.github.com/repos/bogdanvlviv/rails/releases{/id}', 'deployments_url': 'https://api.github.com/repos/bogdanvlviv/rails/deployments', 'created_at': '2016-03-25T19:54:02Z', 'updated_at': '2020-09-21T10:08:47Z', 'pushed_at': '2020-10-27T20:59:45Z', 'git_url': 'git://github.com/bogdanvlviv/rails.git', 'ssh_url': 'git@github.com:bogdanvlviv/rails.git', 'clone_url': 'https://github.com/bogdanvlviv/rails.git', 'svn_url': 'https://github.com/bogdanvlviv/rails', 'homepage': 'http://rubyonrails.org', 'size': 227913, 'stargazers_count': 1, 'watchers_count': 1, 'language': 'Ruby', 'has_issues': False, 'has_projects': True, 'has_downloads': True, 'has_wiki': False, 'has_pages': False, 'forks_count': 1, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 0, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'forks': 1, 'open_issues': 0, 'watchers': 1, 'default_branch': 'master'}}, 'base': {'label': 'rails:master', 'ref': 'master', 'sha': '7cb451346618811796efce1f8a2bf576b8e4999c', 'user': {'login': 'rails', 'id': 4223, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjQyMjM=', 'avatar_url': 'https://avatars1.githubusercontent.com/u/4223?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/rails', 'html_url': 'https://github.com/rails', 'followers_url': 'https://api.github.com/users/rails/followers', 'following_url': 'https://api.github.com/users/rails/following{/other_user}', 'gists_url': 'https://api.github.com/users/rails/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/rails/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/rails/subscriptions', 'organizations_url': 'https://api.github.com/users/rails/orgs', 'repos_url': 'https://api.github.com/users/rails/repos', 'events_url': 'https://api.github.com/users/rails/events{/privacy}', 'received_events_url': 'https://api.github.com/users/rails/received_events', 'type': 'Organization', 'site_admin': False}, 'repo': {'id': 8514, 'node_id': 'MDEwOlJlcG9zaXRvcnk4NTE0', 'name': 'rails', 'full_name': 'rails/rails', 'private': False, 'owner': {'login': 'rails', 'id': 4223, 'node_id': 'MDEyOk9yZ2FuaXphdGlvbjQyMjM=', 'avatar_url': 'https://avatars1.githubusercontent.com/u/4223?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/rails', 'html_url': 'https://github.com/rails', 'followers_url': 'https://api.github.com/users/rails/followers', 'following_url': 'https://api.github.com/users/rails/following{/other_user}', 'gists_url': 'https://api.github.com/users/rails/gists{/gist_id}', 'starred_url': 'https://api.github.com/users/rails/starred{/owner}{/repo}', 'subscriptions_url': 'https://api.github.com/users/rails/subscriptions', 'organizations_url': 'https://api.github.com/users/rails/orgs', 'repos_url': 'https://api.github.com/users/rails/repos', 'events_url': 'https://api.github.com/users/rails/events{/privacy}', 'received_events_url': 'https://api.github.com/users/rails/received_events', 'type': 'Organization', 'site_admin': False}, 'html_url': 'https://github.com/rails/rails', 'description': 'Ruby on Rails', 'fork': False, 'url': 'https://api.github.com/repos/rails/rails', 'forks_url': 'https://api.github.com/repos/rails/rails/forks', 'keys_url': 'https://api.github.com/repos/rails/rails/keys{/key_id}', 'collaborators_url': 'https://api.github.com/repos/rails/rails/collaborators{/collaborator}', 'teams_url': 'https://api.github.com/repos/rails/rails/teams', 'hooks_url': 'https://api.github.com/repos/rails/rails/hooks', 'issue_events_url': 'https://api.github.com/repos/rails/rails/issues/events{/number}', 'events_url': 'https://api.github.com/repos/rails/rails/events', 'assignees_url': 'https://api.github.com/repos/rails/rails/assignees{/user}', 'branches_url': 'https://api.github.com/repos/rails/rails/branches{/branch}', 'tags_url': 'https://api.github.com/repos/rails/rails/tags', 'blobs_url': 'https://api.github.com/repos/rails/rails/git/blobs{/sha}', 'git_tags_url': 'https://api.github.com/repos/rails/rails/git/tags{/sha}', 'git_refs_url': 'https://api.github.com/repos/rails/rails/git/refs{/sha}', 'trees_url': 'https://api.github.com/repos/rails/rails/git/trees{/sha}', 'statuses_url': 'https://api.github.com/repos/rails/rails/statuses/{sha}', 'languages_url': 'https://api.github.com/repos/rails/rails/languages', 'stargazers_url': 'https://api.github.com/repos/rails/rails/stargazers', 'contributors_url': 'https://api.github.com/repos/rails/rails/contributors', 'subscribers_url': 'https://api.github.com/repos/rails/rails/subscribers', 'subscription_url': 'https://api.github.com/repos/rails/rails/subscription', 'commits_url': 'https://api.github.com/repos/rails/rails/commits{/sha}', 'git_commits_url': 'https://api.github.com/repos/rails/rails/git/commits{/sha}', 'comments_url': 'https://api.github.com/repos/rails/rails/comments{/number}', 'issue_comment_url': 'https://api.github.com/repos/rails/rails/issues/comments{/number}', 'contents_url': 'https://api.github.com/repos/rails/rails/contents/{+path}', 'compare_url': 'https://api.github.com/repos/rails/rails/compare/{base}...{head}', 'merges_url': 'https://api.github.com/repos/rails/rails/merges', 'archive_url': 'https://api.github.com/repos/rails/rails/{archive_format}{/ref}', 'downloads_url': 'https://api.github.com/repos/rails/rails/downloads', 'issues_url': 'https://api.github.com/repos/rails/rails/issues{/number}', 'pulls_url': 'https://api.github.com/repos/rails/rails/pulls{/number}', 'milestones_url': 'https://api.github.com/repos/rails/rails/milestones{/number}', 'notifications_url': 'https://api.github.com/repos/rails/rails/notifications{?since,all,participating}', 'labels_url': 'https://api.github.com/repos/rails/rails/labels{/name}', 'releases_url': 'https://api.github.com/repos/rails/rails/releases{/id}', 'deployments_url': 'https://api.github.com/repos/rails/rails/deployments', 'created_at': '2008-04-11T02:19:47Z', 'updated_at': '2020-10-27T21:18:30Z', 'pushed_at': '2020-10-27T21:06:38Z', 'git_url': 'git://github.com/rails/rails.git', 'ssh_url': 'git@github.com:rails/rails.git', 'clone_url': 'https://github.com/rails/rails.git', 'svn_url': 'https://github.com/rails/rails', 'homepage': 'https://rubyonrails.org', 'size': 228828, 'stargazers_count': 46749, 'watchers_count': 46749, 'language': 'Ruby', 'has_issues': True, 'has_projects': False, 'has_downloads': True, 'has_wiki': False, 'has_pages': False, 'forks_count': 18781, 'mirror_url': None, 'archived': False, 'disabled': False, 'open_issues_count': 621, 'license': {'key': 'mit', 'name': 'MIT License', 'spdx_id': 'MIT', 'url': 'https://api.github.com/licenses/mit', 'node_id': 'MDc6TGljZW5zZTEz'}, 'forks': 18781, 'open_issues': 621, 'watchers': 46749, 'default_branch': 'master'}}, '_links': {'self': {'href': 'https://api.github.com/repos/rails/rails/pulls/40467'}, 'html': {'href': 'https://github.com/rails/rails/pull/40467'}, 'issue': {'href': 'https://api.github.com/repos/rails/rails/issues/40467'}, 'comments': {'href': 'https://api.github.com/repos/rails/rails/issues/40467/comments'}, 'review_comments': {'href': 'https://api.github.com/repos/rails/rails/pulls/40467/comments'}, 'review_comment': {'href': 'https://api.github.com/repos/rails/rails/pulls/comments{/number}'}, 'commits': {'href': 'https://api.github.com/repos/rails/rails/pulls/40467/commits'}, 'statuses': {'href': 'https://api.github.com/repos/rails/rails/statuses/aac3d28b4e98c661b0098acf9c4ad028ecd69da3'}}, 'author_association': 'CONTRIBUTOR', 'active_lock_reason': None}
Look at this API:
I want you to
import requests
response = requests.get("http://api.open-notify.org/iss-pass.json")
print("RESPONSE CODE:" + str(response.status_code))
print(response.json())
RESPONSE CODE:400 {'message': 'failure', 'reason': 'Latitude must be specified'}
import requests
import json
from datetime import datetime
response = requests.get("https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2020-08-27&maxmagnitude=7&minmagnitude=5.8")
json_response = response.json()
formatted_json = json.dumps(json_response, sort_keys=False, indent=2)
print(formatted_json)
{ "type": "FeatureCollection", "metadata": { "generated": 1603840328000, "url": "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2020-08-27&maxmagnitude=7&minmagnitude=5.8", "title": "USGS Earthquakes", "status": 200, "api": "1.10.3", "count": 40 }, "features": [ { "type": "Feature", "properties": { "mag": 5.9, "place": "75 km NNE of Hihifo, Tonga", "time": 1603626457004, "updated": 1603816850040, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000ccyh", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000ccyh&format=geojson", "felt": 9, "cdi": 4.1, "mmi": 3.887, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 539, "net": "us", "code": "6000ccyh", "ids": ",pt20299001,us6000ccyh,at00qira3f,", "sources": ",pt,us,at,", "types": ",dyfi,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 5.014, "rms": 0.71, "gap": 62, "magType": "mww", "type": "earthquake", "title": "M 5.9 - 75 km NNE of Hihifo, Tonga" }, "geometry": { "type": "Point", "coordinates": [ -173.4669, -15.3542, 32.73 ] }, "id": "us6000ccyh" }, { "type": "Feature", "properties": { "mag": 6.1, "place": "south of the Fiji Islands", "time": 1603436672004, "updated": 1603523312647, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000cbx8", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000cbx8&format=geojson", "felt": null, "cdi": null, "mmi": 2.51, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 572, "net": "us", "code": "6000cbx8", "ids": ",pt20297001,us6000cbx8,", "sources": ",pt,us,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 4.045, "rms": 0.79, "gap": 25, "magType": "mww", "type": "earthquake", "title": "M 6.1 - south of the Fiji Islands" }, "geometry": { "type": "Point", "coordinates": [ -179.9645, -25.6127, 463.9 ] }, "id": "us6000cbx8" }, { "type": "Feature", "properties": { "mag": 6, "place": "West Chile Rise", "time": 1603417577475, "updated": 1603504452956, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000cbug", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000cbug&format=geojson", "felt": null, "cdi": null, "mmi": 0, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 554, "net": "us", "code": "6000cbug", "ids": ",us6000cbug,pt20297000,", "sources": ",us,pt,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 13.888, "rms": 1.41, "gap": 47, "magType": "mww", "type": "earthquake", "title": "M 6.0 - West Chile Rise" }, "geometry": { "type": "Point", "coordinates": [ -97.1352, -36.4011, 10 ] }, "id": "us6000cbug" }, { "type": "Feature", "properties": { "mag": 5.8, "place": "148 km WNW of Haveluloto, Tonga", "time": 1603355046992, "updated": 1603441663721, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000cb8b", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000cb8b&format=geojson", "felt": null, "cdi": null, "mmi": 3.275, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 518, "net": "us", "code": "6000cb8b", "ids": ",pt20296000,us6000cb8b,", "sources": ",pt,us,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 5.927, "rms": 1.23, "gap": 33, "magType": "mww", "type": "earthquake", "title": "M 5.8 - 148 km WNW of Haveluloto, Tonga" }, "geometry": { "type": "Point", "coordinates": [ -176.6074, -20.8778, 237.63 ] }, "id": "us6000cb8b" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "183 km ESE of Neiafu, Tonga", "time": 1603239753928, "updated": 1603326984040, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000cafc", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000cafc&format=geojson", "felt": null, "cdi": null, "mmi": 3.321, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 536, "net": "us", "code": "6000cafc", "ids": ",pt20295000,at00qiizpk,us6000cafc,", "sources": ",pt,at,us,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 7.413, "rms": 1.05, "gap": 26, "magType": "mww", "type": "earthquake", "title": "M 5.9 - 183 km ESE of Neiafu, Tonga" }, "geometry": { "type": "Point", "coordinates": [ -172.3884, -19.3191, 10 ] }, "id": "us6000cafc" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "117 km SSE of Sand Point, Alaska", "time": 1603143925888, "updated": 1603839758248, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c9lf", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c9lf&format=geojson", "felt": null, "cdi": null, "mmi": 3.755, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 536, "net": "us", "code": "6000c9lf", "ids": ",us6000c9lf,pt20293006,ak020dgx8hsf,", "sources": ",us,pt,ak,", "types": ",ground-failure,internal-origin,losspager,origin,phase-data,shakemap,", "nst": null, "dmin": 0.51, "rms": 0.94, "gap": 65, "magType": "mww", "type": "earthquake", "title": "M 5.9 - 117 km SSE of Sand Point, Alaska" }, "geometry": { "type": "Point", "coordinates": [ -159.859, 54.3459, 24.45 ] }, "id": "us6000c9lf" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "Easter Island region", "time": 1602335697344, "updated": 1602422329581, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c7b1", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c7b1&format=geojson", "felt": null, "cdi": null, "mmi": 0, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 536, "net": "us", "code": "6000c7b1", "ids": ",us6000c7b1,at00qhzm4y,", "sources": ",us,at,", "types": ",ground-failure,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 2.901, "rms": 1.02, "gap": 50, "magType": "mww", "type": "earthquake", "title": "M 5.9 - Easter Island region" }, "geometry": { "type": "Point", "coordinates": [ -112.3045, -28.5676, 10 ] }, "id": "us6000c7b1" }, { "type": "Feature", "properties": { "mag": 5.8, "place": "86 km ESE of Kimbe, Papua New Guinea", "time": 1602172729998, "updated": 1602261933332, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c6si", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c6si&format=geojson", "felt": null, "cdi": null, "mmi": 5.526, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 518, "net": "us", "code": "6000c6si", "ids": ",pt20282001,at00qhw4ea,us6000c6si,", "sources": ",pt,at,us,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 2.152, "rms": 0.8, "gap": 28, "magType": "mww", "type": "earthquake", "title": "M 5.8 - 86 km ESE of Kimbe, Papua New Guinea" }, "geometry": { "type": "Point", "coordinates": [ 150.8349, -5.9004, 30 ] }, "id": "us6000c6si" }, { "type": "Feature", "properties": { "mag": 6.3, "place": "38 km ENE of Kainantu, Papua New Guinea", "time": 1602142532224, "updated": 1602317079636, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c6mu", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c6mu&format=geojson", "felt": 28, "cdi": 6.9, "mmi": 5.525, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 630, "net": "us", "code": "6000c6mu", "ids": ",at00qhvh38,pt20282000,us6000c6mu,", "sources": ",at,pt,us,", "types": ",dyfi,ground-failure,impact-link,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 3.413, "rms": 0.89, "gap": 15, "magType": "mww", "type": "earthquake", "title": "M 6.3 - 38 km ENE of Kainantu, Papua New Guinea" }, "geometry": { "type": "Point", "coordinates": [ 146.1686, -6.114, 103.49 ] }, "id": "us6000c6mu" }, { "type": "Feature", "properties": { "mag": 6, "place": "233 km E of Levuka, Fiji", "time": 1601979106688, "updated": 1603627571361, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c617", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c617&format=geojson", "felt": null, "cdi": null, "mmi": 1.608, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 554, "net": "us", "code": "6000c617", "ids": ",at00qhryzm,pt20280000,us6000c617,", "sources": ",at,pt,us,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 3.316, "rms": 0.94, "gap": 24, "magType": "mww", "type": "earthquake", "title": "M 6.0 - 233 km E of Levuka, Fiji" }, "geometry": { "type": "Point", "coordinates": [ -178.4762, -18.0101, 633.92 ] }, "id": "us6000c617" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "68 km SE of Sand Point, Alaska", "time": 1601963690520, "updated": 1603490017028, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c5zm", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c5zm&format=geojson", "felt": 13, "cdi": 4.6, "mmi": 4.708, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 542, "net": "us", "code": "6000c5zm", "ids": ",at00qhrn3g,ak020cv5sgx1,ak020cv5s0vm,us6000c5zm,", "sources": ",at,ak,ak,us,", "types": ",dyfi,ground-failure,impact-link,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.157, "rms": 0.87, "gap": 122, "magType": "mww", "type": "earthquake", "title": "M 5.9 - 68 km SE of Sand Point, Alaska" }, "geometry": { "type": "Point", "coordinates": [ -159.8598, 54.8444, 30.42 ] }, "id": "us6000c5zm" }, { "type": "Feature", "properties": { "mag": 5.8, "place": "South Shetland Islands", "time": 1601633853188, "updated": 1601720347351, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c4p5", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c4p5&format=geojson", "felt": null, "cdi": null, "mmi": 4.797, "alert": null, "status": "reviewed", "tsunami": 0, "sig": 518, "net": "us", "code": "6000c4p5", "ids": ",at00qhkkl9,pt20276001,us6000c4p5,", "sources": ",at,pt,us,", "types": ",internal-origin,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.243, "rms": 0.85, "gap": 73, "magType": "mww", "type": "earthquake", "title": "M 5.8 - South Shetland Islands" }, "geometry": { "type": "Point", "coordinates": [ -58.2326, -62.3735, 10 ] }, "id": "us6000c4p5" }, { "type": "Feature", "properties": { "mag": 6, "place": "99 km W of Kandrian, Papua New Guinea", "time": 1601548488481, "updated": 1601916945040, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c3td", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c3td&format=geojson", "felt": 8, "cdi": 3.8, "mmi": 4.443, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 557, "net": "us", "code": "6000c3td", "ids": ",us6000c3td,at00qhiqq0,pt20275002,", "sources": ",us,at,pt,", "types": ",dyfi,ground-failure,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 3.615, "rms": 0.95, "gap": 19, "magType": "mww", "type": "earthquake", "title": "M 6.0 - 99 km W of Kandrian, Papua New Guinea" }, "geometry": { "type": "Point", "coordinates": [ 148.6576, -6.0867, 109.22 ] }, "id": "us6000c3td" }, { "type": "Feature", "properties": { "mag": 6.4, "place": "39 km NE of Pangai, Tonga", "time": 1601514816524, "updated": 1603413261522, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c3kz", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c3kz&format=geojson", "felt": 9, "cdi": 5, "mmi": 5.878, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 635, "net": "us", "code": "6000c3kz", "ids": ",at00qhi0qn,pt20275000,us6000c3kz,", "sources": ",at,pt,us,", "types": ",dyfi,ground-failure,impact-link,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 3.988, "rms": 0.63, "gap": 20, "magType": "mww", "type": "earthquake", "title": "M 6.4 - 39 km NE of Pangai, Tonga" }, "geometry": { "type": "Point", "coordinates": [ -174.1217, -19.5385, 28 ] }, "id": "us6000c3kz" }, { "type": "Feature", "properties": { "mag": 6.1, "place": "south of Africa", "time": 1601140222462, "updated": 1603818820081, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us6000c1np", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us6000c1np&format=geojson", "felt": null, "cdi": null, "mmi": 0, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 572, "net": "us", "code": "6000c1np", "ids": ",us6000c1np,pt20270003,at00qh9zpe,", "sources": ",us,pt,at,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 13.767, "rms": 0.68, "gap": 18, "magType": "mww", "type": "earthquake", "title": "M 6.1 - south of Africa" }, "geometry": { "type": "Point", "coordinates": [ 31.7404, -48.0249, 10 ] }, "id": "us6000c1np" }, { "type": "Feature", "properties": { "mag": 5.8, "place": "central East Pacific Rise", "time": 1600695435082, "updated": 1601216428974, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bqr4", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bqr4&format=geojson", "felt": null, "cdi": null, "mmi": 0, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 518, "net": "us", "code": "7000bqr4", "ids": ",us7000bqr4,", "sources": ",us,", "types": ",losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 14.472, "rms": 0.78, "gap": 59, "magType": "mww", "type": "earthquake", "title": "M 5.8 - central East Pacific Rise" }, "geometry": { "type": "Point", "coordinates": [ -104.3789, -4.0426, 10 ] }, "id": "us7000bqr4" }, { "type": "Feature", "properties": { "mag": 5.8, "place": "53 km E of Cortes, Philippines", "time": 1600639995044, "updated": 1602113901051, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bql2", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bql2&format=geojson", "felt": null, "cdi": null, "mmi": 4.001, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 518, "net": "us", "code": "7000bql2", "ids": ",us7000bql2,", "sources": ",us,", "types": ",losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 2.435, "rms": 0.56, "gap": 43, "magType": "mww", "type": "earthquake", "title": "M 5.8 - 53 km E of Cortes, Philippines" }, "geometry": { "type": "Point", "coordinates": [ 126.6799, 9.2614, 9 ] }, "id": "us7000bql2" }, { "type": "Feature", "properties": { "mag": 6.9, "place": "central Mid-Atlantic Ridge", "time": 1600465438936, "updated": 1600639252455, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bq10", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bq10&format=geojson", "felt": null, "cdi": null, "mmi": 3.454, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 732, "net": "us", "code": "7000bq10", "ids": ",pt20262001,at00qgvj1d,us7000bq10,", "sources": ",pt,at,us,", "types": ",impact-link,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 11.257, "rms": 0.66, "gap": 16, "magType": "mww", "type": "earthquake", "title": "M 6.9 - central Mid-Atlantic Ridge" }, "geometry": { "type": "Point", "coordinates": [ -26.8408, 0.9167, 10 ] }, "id": "us7000bq10" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "12 km SSE of Arkaloch\u00f3ri, Greece", "time": 1600446497575, "updated": 1603035816375, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bpvt", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bpvt&format=geojson", "felt": 41, "cdi": 4.2, "mmi": 4.076, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 553, "net": "us", "code": "7000bpvt", "ids": ",us7000bpvt,pt20262000,", "sources": ",us,pt,", "types": ",dyfi,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.421, "rms": 0.78, "gap": 35, "magType": "mww", "type": "earthquake", "title": "M 5.9 - 12 km SSE of Arkaloch\u00f3ri, Greece" }, "geometry": { "type": "Point", "coordinates": [ 25.3034, 35.0368, 44 ] }, "id": "us7000bpvt" }, { "type": "Feature", "properties": { "mag": 6, "place": "157 km NNE of Labasa, Fiji", "time": 1600143136291, "updated": 1601952849577, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bndc", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bndc&format=geojson", "felt": 1, "cdi": 5.2, "mmi": 5.909, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 554, "net": "us", "code": "7000bndc", "ids": ",us7000bndc,", "sources": ",us,", "types": ",dyfi,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 3.159, "rms": 0.66, "gap": 34, "magType": "mww", "type": "earthquake", "title": "M 6.0 - 157 km NNE of Labasa, Fiji" }, "geometry": { "type": "Point", "coordinates": [ 179.8689, -15.095, 10 ] }, "id": "us7000bndc" }, { "type": "Feature", "properties": { "mag": 6.4, "place": "18 km WNW of Esso, Russia", "time": 1600141288052, "updated": 1601955308893, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bnd1", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bnd1&format=geojson", "felt": null, "cdi": null, "mmi": 3.196, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 630, "net": "us", "code": "7000bnd1", "ids": ",us7000bnd1,pt20259000,at00qgokx3,", "sources": ",us,pt,at,", "types": ",ground-failure,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 2.898, "rms": 0.7, "gap": 25, "magType": "mww", "type": "earthquake", "title": "M 6.4 - 18 km WNW of Esso, Russia" }, "geometry": { "type": "Point", "coordinates": [ 158.4171, 55.9704, 344 ] }, "id": "us7000bnd1" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "Vanuatu", "time": 1599899667322, "updated": 1601035870835, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bmcx", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bmcx&format=geojson", "felt": 1, "cdi": 2, "mmi": 3.84, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 536, "net": "us", "code": "7000bmcx", "ids": ",us7000bmcx,pt20256002,", "sources": ",us,pt,", "types": ",dyfi,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 1.857, "rms": 0.7, "gap": 64, "magType": "mww", "type": "earthquake", "title": "M 5.9 - Vanuatu" }, "geometry": { "type": "Point", "coordinates": [ 167.6786, -17.2576, 10 ] }, "id": "us7000bmcx" }, { "type": "Feature", "properties": { "mag": 6.1, "place": "58 km SE of \u014cfunato, Japan", "time": 1599878651238, "updated": 1602210276695, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bm9m", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bm9m&format=geojson", "felt": 17, "cdi": 4.3, "mmi": 4.129, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 580, "net": "us", "code": "7000bm9m", "ids": ",us7000bm9m,at00qgiy9o,pt20256001,", "sources": ",us,at,pt,", "types": ",dyfi,ground-failure,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 2.231, "rms": 1.01, "gap": 47, "magType": "mww", "type": "earthquake", "title": "M 6.1 - 58 km SE of \u014cfunato, Japan" }, "geometry": { "type": "Point", "coordinates": [ 142.2499, 38.7513, 34 ] }, "id": "us7000bm9m" }, { "type": "Feature", "properties": { "mag": 6.2, "place": "82 km NNE of Tocopilla, Chile", "time": 1599809757187, "updated": 1603402162848, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000blm2", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000blm2&format=geojson", "felt": 148, "cdi": 6.8, "mmi": 6.687, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 692, "net": "us", "code": "7000blm2", "ids": ",us7000blm2,at00qghh3w,pt20255000,", "sources": ",us,at,pt,", "types": ",dyfi,ground-failure,impact-text,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.077, "rms": 0.88, "gap": 72, "magType": "mww", "type": "earthquake", "title": "M 6.2 - 82 km NNE of Tocopilla, Chile" }, "geometry": { "type": "Point", "coordinates": [ -69.9096, -21.3968, 51 ] }, "id": "us7000blm2" }, { "type": "Feature", "properties": { "mag": 5.8, "place": "187 km SE of Sarangani, Philippines", "time": 1599635920225, "updated": 1602676811031, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bk82", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bk82&format=geojson", "felt": null, "cdi": null, "mmi": 5.675, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 518, "net": "us", "code": "7000bk82", "ids": ",at00qgdqza,pt20253000,us7000bk82,", "sources": ",at,pt,us,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 3.054, "rms": 1.19, "gap": 32, "magType": "mww", "type": "earthquake", "title": "M 5.8 - 187 km SE of Sarangani, Philippines" }, "geometry": { "type": "Point", "coordinates": [ 126.6366, 4.1837, 17 ] }, "id": "us7000bk82" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "194 km SSE of Amahai, Indonesia", "time": 1599525920801, "updated": 1602820011330, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bjgb", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bjgb&format=geojson", "felt": 4, "cdi": 3.1, "mmi": 3.82, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 537, "net": "us", "code": "7000bjgb", "ids": ",us7000bjgb,pt20252000,at00qgbe3m,", "sources": ",us,pt,at,", "types": ",dyfi,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 3.16, "rms": 0.81, "gap": 13, "magType": "mww", "type": "earthquake", "title": "M 5.9 - 194 km SSE of Amahai, Indonesia" }, "geometry": { "type": "Point", "coordinates": [ 129.7559, -4.8828, 172 ] }, "id": "us7000bjgb" }, { "type": "Feature", "properties": { "mag": 6, "place": "72 km NNE of Port-Vila, Vanuatu", "time": 1599459159710, "updated": 1601816992650, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bj6y", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bj6y&format=geojson", "felt": 3, "cdi": 3.4, "mmi": 6.063, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 555, "net": "us", "code": "7000bj6y", "ids": ",at00qg9yl1,pt20251000,us7000bj6y,", "sources": ",at,pt,us,", "types": ",dyfi,ground-failure,impact-link,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 2.065, "rms": 1.13, "gap": 41, "magType": "mww", "type": "earthquake", "title": "M 6.0 - 72 km NNE of Port-Vila, Vanuatu" }, "geometry": { "type": "Point", "coordinates": [ 168.4935, -17.1086, 10 ] }, "id": "us7000bj6y" }, { "type": "Feature", "properties": { "mag": 6.3, "place": "17 km E of Talagutong, Philippines", "time": 1599405823148, "updated": 1601702084435, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000biyd", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000biyd&format=geojson", "felt": 38, "cdi": 7.2, "mmi": 4.468, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 638, "net": "us", "code": "7000biyd", "ids": ",at00qg8tfl,pt20250007,us7000biyd,", "sources": ",at,pt,us,", "types": ",dyfi,ground-failure,impact-link,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.832, "rms": 1.22, "gap": 29, "magType": "mww", "type": "earthquake", "title": "M 6.3 - 17 km E of Talagutong, Philippines" }, "geometry": { "type": "Point", "coordinates": [ 125.8285, 6.2693, 120 ] }, "id": "us7000biyd" }, { "type": "Feature", "properties": { "mag": 6.7, "place": "central Mid-Atlantic Ridge", "time": 1599375078848, "updated": 1602749682544, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000biu8", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000biu8&format=geojson", "felt": null, "cdi": null, "mmi": 0, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 691, "net": "us", "code": "7000biu8", "ids": ",pt20250004,at00qg85pi,us7000biu8,", "sources": ",pt,at,us,", "types": ",impact-link,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 22.637, "rms": 0.71, "gap": 29, "magType": "mww", "type": "earthquake", "title": "M 6.7 - central Mid-Atlantic Ridge" }, "geometry": { "type": "Point", "coordinates": [ -37.2043, 7.6876, 10 ] }, "id": "us7000biu8" }, { "type": "Feature", "properties": { "mag": 6.2, "place": "Vanuatu", "time": 1599361156073, "updated": 1601603284050, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000birm", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000birm&format=geojson", "felt": 4, "cdi": 5, "mmi": 4.217, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 593, "net": "us", "code": "7000birm", "ids": ",pt20250002,at00qg7uyr,us7000birm,", "sources": ",pt,at,us,", "types": ",dyfi,ground-failure,impact-link,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 1.728, "rms": 1.19, "gap": 59, "magType": "mww", "type": "earthquake", "title": "M 6.2 - Vanuatu" }, "geometry": { "type": "Point", "coordinates": [ 167.5321, -17.1562, 10 ] }, "id": "us7000birm" }, { "type": "Feature", "properties": { "mag": 6.3, "place": "39 km NW of Ovalle, Chile", "time": 1599355018850, "updated": 1603171112228, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000biqb", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000biqb&format=geojson", "felt": 111, "cdi": 5.1, "mmi": 6.256, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 667, "net": "us", "code": "7000biqb", "ids": ",us7000biqb,at00qg7q8a,pt20250001,", "sources": ",us,at,pt,", "types": ",dyfi,ground-failure,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.344, "rms": 1.13, "gap": 32, "magType": "mww", "type": "earthquake", "title": "M 6.3 - 39 km NW of Ovalle, Chile" }, "geometry": { "type": "Point", "coordinates": [ -71.4938, -30.3501, 28.24 ] }, "id": "us7000biqb" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "133 km NW of Ternate, Indonesia", "time": 1599351670820, "updated": 1602129705229, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bipw", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bipw&format=geojson", "felt": 1, "cdi": 2, "mmi": 3.987, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 536, "net": "us", "code": "7000bipw", "ids": ",us7000bipw,pt20250000,at00qg7nne,", "sources": ",us,pt,at,", "types": ",dyfi,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 1.2, "rms": 0.89, "gap": 20, "magType": "mww", "type": "earthquake", "title": "M 5.9 - 133 km NW of Ternate, Indonesia" }, "geometry": { "type": "Point", "coordinates": [ 126.5621, 1.6686, 30 ] }, "id": "us7000bipw" }, { "type": "Feature", "properties": { "mag": 6.5, "place": "94 km NW of Vallenar, Chile", "time": 1598994557626, "updated": 1601919088040, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bg4v", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bg4v&format=geojson", "felt": 52, "cdi": 5.3, "mmi": 6.056, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 678, "net": "us", "code": "7000bg4v", "ids": ",us7000bg4v,at00qg003e,pt20245003,", "sources": ",us,at,pt,", "types": ",dyfi,ground-failure,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.39, "rms": 0.86, "gap": 49, "magType": "mww", "type": "earthquake", "title": "M 6.5 - 94 km NW of Vallenar, Chile" }, "geometry": { "type": "Point", "coordinates": [ -71.3716, -27.9154, 14.52 ] }, "id": "us7000bg4v" }, { "type": "Feature", "properties": { "mag": 6.3, "place": "78 km NW of Vallenar, Chile", "time": 1598934602366, "updated": 1601935012065, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bfjx", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bfjx&format=geojson", "felt": 4, "cdi": 4.5, "mmi": 6.385, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 612, "net": "us", "code": "7000bfjx", "ids": ",us7000bfjx,pt20245001,", "sources": ",us,pt,", "types": ",dyfi,ground-failure,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.248, "rms": 0.95, "gap": 69, "magType": "mww", "type": "earthquake", "title": "M 6.3 - 78 km NW of Vallenar, Chile" }, "geometry": { "type": "Point", "coordinates": [ -71.28, -28.0355, 17.65 ] }, "id": "us7000bfjx" }, { "type": "Feature", "properties": { "mag": 6.8, "place": "86 km NW of Vallenar, Chile", "time": 1598933368475, "updated": 1601934923466, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bfjr", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bfjr&format=geojson", "felt": 260, "cdi": 5.4, "mmi": 6.77, "alert": "green", "status": "reviewed", "tsunami": 1, "sig": 852, "net": "us", "code": "7000bfjr", "ids": ",at00qfyovo,pt20245000,us7000bfjr,", "sources": ",at,pt,us,", "types": ",dyfi,finite-fault,ground-failure,impact-link,impact-text,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 0.312, "rms": 0.87, "gap": 69, "magType": "mww", "type": "earthquake", "title": "M 6.8 - 86 km NW of Vallenar, Chile" }, "geometry": { "type": "Point", "coordinates": [ -71.3086, -27.9705, 21 ] }, "id": "us7000bfjr" }, { "type": "Feature", "properties": { "mag": 5.9, "place": "Tristan da Cunha region", "time": 1598908682693, "updated": 1599455885689, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bfgl", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bfgl&format=geojson", "felt": null, "cdi": null, "mmi": 0, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 536, "net": "us", "code": "7000bfgl", "ids": ",pt20244001,us7000bfgl,", "sources": ",pt,us,", "types": ",internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 3.122, "rms": 1.05, "gap": 31, "magType": "mww", "type": "earthquake", "title": "M 5.9 - Tristan da Cunha region" }, "geometry": { "type": "Point", "coordinates": [ -15.6138, -35.4385, 10 ] }, "id": "us7000bfgl" }, { "type": "Feature", "properties": { "mag": 5.8, "place": "Pacific-Antarctic Ridge", "time": 1598905688940, "updated": 1603838993040, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bffs", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bffs&format=geojson", "felt": null, "cdi": null, "mmi": 0, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 518, "net": "us", "code": "7000bffs", "ids": ",us7000bffs,", "sources": ",us,", "types": ",losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 31.196, "rms": 1.01, "gap": 53, "magType": "mww", "type": "earthquake", "title": "M 5.8 - Pacific-Antarctic Ridge" }, "geometry": { "type": "Point", "coordinates": [ -130.1777, -54.9769, 10 ] }, "id": "us7000bffs" }, { "type": "Feature", "properties": { "mag": 6.1, "place": "Chagos Archipelago region", "time": 1598894644946, "updated": 1599595993905, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bfbx", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bfbx&format=geojson", "felt": 7, "cdi": 4.3, "mmi": 0, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 575, "net": "us", "code": "7000bfbx", "ids": ",us7000bfbx,pt20244000,at00qfxuzz,", "sources": ",us,pt,at,", "types": ",dyfi,ground-failure,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 4.041, "rms": 1.28, "gap": 22, "magType": "mww", "type": "earthquake", "title": "M 6.1 - Chagos Archipelago region" }, "geometry": { "type": "Point", "coordinates": [ 70.1973, -4.0158, 10 ] }, "id": "us7000bfbx" }, { "type": "Feature", "properties": { "mag": 6.5, "place": "central Mid-Atlantic Ridge", "time": 1598822429757, "updated": 1599776581234, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000bf3k", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000bf3k&format=geojson", "felt": 2, "cdi": 4.3, "mmi": 4.817, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 651, "net": "us", "code": "7000bf3k", "ids": ",us7000bf3k,at00qfwba7,pt20243000,", "sources": ",us,at,pt,", "types": ",dyfi,internal-origin,losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 15.394, "rms": 0.66, "gap": 31, "magType": "mww", "type": "earthquake", "title": "M 6.5 - central Mid-Atlantic Ridge" }, "geometry": { "type": "Point", "coordinates": [ -29.8656, 0.7821, 10 ] }, "id": "us7000bf3k" }, { "type": "Feature", "properties": { "mag": 5.8, "place": "Bouvet Island region", "time": 1598581458132, "updated": 1603815033040, "tz": null, "url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000be5j", "detail": "https://earthquake.usgs.gov/fdsnws/event/1/query?eventid=us7000be5j&format=geojson", "felt": null, "cdi": null, "mmi": 3.826, "alert": "green", "status": "reviewed", "tsunami": 0, "sig": 518, "net": "us", "code": "7000be5j", "ids": ",us7000be5j,", "sources": ",us,", "types": ",losspager,moment-tensor,origin,phase-data,shakemap,", "nst": null, "dmin": 17.048, "rms": 1.26, "gap": 40, "magType": "mww", "type": "earthquake", "title": "M 5.8 - Bouvet Island region" }, "geometry": { "type": "Point", "coordinates": [ 1.5112, -54.7928, 10 ] }, "id": "us7000be5j" } ], "bbox": [ -179.9645, -62.3735, 9, 179.8689, 55.9704, 633.92 ] }
max_magnitude = 0
max_long = 0
max_lat = 0
for earthquake in json_response["features"]:
magnitude = earthquake["properties"]["mag"]
print("----")
print("Place: " + earthquake["properties"]["place"])
print("Time: " + str(earthquake["properties"]["time"]))
print("Mag: " + str(magnitude))
if (magnitude > max_magnitude):
max_magnitude = magnitude
max_long = earthquake["geometry"]["coordinates"][0]
max_lat = earthquake["geometry"]["coordinates"][1]
print ("\nMaximum magnitude: " + str(max_magnitude))
---- Place: 75 km NNE of Hihifo, Tonga Time: 1603626457004 Mag: 5.9 ---- Place: south of the Fiji Islands Time: 1603436672004 Mag: 6.1 ---- Place: West Chile Rise Time: 1603417577475 Mag: 6 ---- Place: 148 km WNW of Haveluloto, Tonga Time: 1603355046992 Mag: 5.8 ---- Place: 183 km ESE of Neiafu, Tonga Time: 1603239753928 Mag: 5.9 ---- Place: 117 km SSE of Sand Point, Alaska Time: 1603143925888 Mag: 5.9 ---- Place: Easter Island region Time: 1602335697344 Mag: 5.9 ---- Place: 86 km ESE of Kimbe, Papua New Guinea Time: 1602172729998 Mag: 5.8 ---- Place: 38 km ENE of Kainantu, Papua New Guinea Time: 1602142532224 Mag: 6.3 ---- Place: 233 km E of Levuka, Fiji Time: 1601979106688 Mag: 6 ---- Place: 68 km SE of Sand Point, Alaska Time: 1601963690520 Mag: 5.9 ---- Place: South Shetland Islands Time: 1601633853188 Mag: 5.8 ---- Place: 99 km W of Kandrian, Papua New Guinea Time: 1601548488481 Mag: 6 ---- Place: 39 km NE of Pangai, Tonga Time: 1601514816524 Mag: 6.4 ---- Place: south of Africa Time: 1601140222462 Mag: 6.1 ---- Place: central East Pacific Rise Time: 1600695435082 Mag: 5.8 ---- Place: 53 km E of Cortes, Philippines Time: 1600639995044 Mag: 5.8 ---- Place: central Mid-Atlantic Ridge Time: 1600465438936 Mag: 6.9 ---- Place: 12 km SSE of Arkalochóri, Greece Time: 1600446497575 Mag: 5.9 ---- Place: 157 km NNE of Labasa, Fiji Time: 1600143136291 Mag: 6 ---- Place: 18 km WNW of Esso, Russia Time: 1600141288052 Mag: 6.4 ---- Place: Vanuatu Time: 1599899667322 Mag: 5.9 ---- Place: 58 km SE of Ōfunato, Japan Time: 1599878651238 Mag: 6.1 ---- Place: 82 km NNE of Tocopilla, Chile Time: 1599809757187 Mag: 6.2 ---- Place: 187 km SE of Sarangani, Philippines Time: 1599635920225 Mag: 5.8 ---- Place: 194 km SSE of Amahai, Indonesia Time: 1599525920801 Mag: 5.9 ---- Place: 72 km NNE of Port-Vila, Vanuatu Time: 1599459159710 Mag: 6 ---- Place: 17 km E of Talagutong, Philippines Time: 1599405823148 Mag: 6.3 ---- Place: central Mid-Atlantic Ridge Time: 1599375078848 Mag: 6.7 ---- Place: Vanuatu Time: 1599361156073 Mag: 6.2 ---- Place: 39 km NW of Ovalle, Chile Time: 1599355018850 Mag: 6.3 ---- Place: 133 km NW of Ternate, Indonesia Time: 1599351670820 Mag: 5.9 ---- Place: 94 km NW of Vallenar, Chile Time: 1598994557626 Mag: 6.5 ---- Place: 78 km NW of Vallenar, Chile Time: 1598934602366 Mag: 6.3 ---- Place: 86 km NW of Vallenar, Chile Time: 1598933368475 Mag: 6.8 ---- Place: Tristan da Cunha region Time: 1598908682693 Mag: 5.9 ---- Place: Pacific-Antarctic Ridge Time: 1598905688940 Mag: 5.8 ---- Place: Chagos Archipelago region Time: 1598894644946 Mag: 6.1 ---- Place: central Mid-Atlantic Ridge Time: 1598822429757 Mag: 6.5 ---- Place: Bouvet Island region Time: 1598581458132 Mag: 5.8 Maximum magnitude: 6.9
iss_response = requests.get("http://api.open-notify.org/iss-pass.json?lat="+str(max_lat)+"&lon="+str(max_lat))
time=iss_response.json()["response"][0]["risetime"]
print(datetime.fromtimestamp(time).strftime("%Y-%m-%d %I:%M:%S"))
2020-10-27 05:40:15