{"action":"created","comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/comments/158163760","pull_request_review_id":84930397,"id":158163760,"diff_hunk":"@@ -0,0 +1,418 @@\n+---\n+title: Migrating a Rails App from Heroku to Google App Engine\n+description: Learn how to move a Rails application from Heroku to Google App Engine by following an example migration of a Spree e-commerce app.\n+author: dazuma\n+tags: App Engine, Ruby, Rails, Heroku, Migration\n+date_published: 2017-12-20\n+---\n+\n+This tutorial teaches you how to migrate a\n+[Ruby on Rails](http://rubyonrails.org) application from\n+[Heroku](https://heroku.com/) to\n+[Google App Engine](https://cloud.google.com/appengine/). You can use an\n+e-commerce app built with [Spree](https://spreecommerce.org/), or you can\n+use your own app that uses Rails and Postgres.\n+\n+In this tutorial, you complete the following objectives:\n+\n+*   Migrate a Heroku-based Postgres database to Google Cloud SQL.\n+*   Migrate a Heroku application configuration to Google Cloud for use by App Engine.\n+*   Learn how to deploy and maintain the app on App Engine.\n+\n+## Before you begin\n+\n+Before running this tutorial, take the following steps to set up your Google\n+Cloud Platform (GCP) project and tools:\n+\n+1.  [Create a new GCP project](https://console.cloud.google.com/projectcreate).\n+    Remember the name of your project (generally three words or numbers separated\n+    by hyphens). We refer to the project as `[PROJECT-ID]` throughout this tutorial.\n+    When you create a project, GCP automatically enables the Cloud SQL API.\n+\n+1.  [Enable billing](https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project)\n+    for your project.\n+\n+1.  Install the [Google Cloud SDK](https://cloud.google.com/sdk/). The Cloud SDK\n+    contains the `gcloud` command-line tool, which is the primary tool for\n+    interacting with GCP.\n+\n+1.  [Initialize the `gcloud` command-line tool](https://cloud.google.com/sdk/docs/initializing) by\n+    running `gcloud init` from your shell or terminal. Set the default project to the project you\n+    created. Configure Google Compute Engine to set the default _compute zone_ to a zone in your\n+    nearest geographical region, such as `us-central1-a`. We refer to the compute zone as\n+    `[COMPUTE-ZONE]` throughout this tutorial.\n+\n+1.  Install client tools for [Postgres](https://www.postgresql.org/download/).\n+    For this tutorial, you need Postgres 9.6 or later.\n+\n+1.  Deploy an app to Heroku, using a Heroku-hosted Posgres database. If you do not have\n+    your own app, you can use a default e-commerce app based on Spree. Spree provides a\n+    [basic guide](https://guides.spreecommerce.org/developer/heroku.html) you can\n+    use to set this up.\n+\n+## Moving your database to Cloud SQL\n+\n+In this section, you create a new Cloud SQL database and copy the\n+data from your existing Heroku database. You also learn about some tools\n+you can use to manage your Cloud SQL database.\n+\n+Heroku provides commands to export the content of a database to your local\n+workstation, and Google Cloud provides commands to upload files to Cloud\n+SQL. However, the two commands curently don't speak the same language:\n+Heroku export produces \"custom format\" files, whereas Cloud SQL requires plain\n+text format. For this tutorial, you instead learn how to connect directly to\n+the Cloud SQL database and restore your Postgres data.\n+\n+### Create a Cloud SQL database\n+\n+1.  Create a Cloud SQL instance named `mydbinstance` with a Postgres\n+    database by running the following command:\n+\n+        gcloud sql instances create mydbinstance \\\n+          --database-version=POSTGRES_9_6 --tier=db-g1-small\n+\n+    Currently, Heroku Postgres databases use Postgres 9.6 by default. When\n+    Heroku updates the default Postgres version, you might need to create\n+    a Cloud SQL instance with the newer version.\n+\n+1.  Get the _connection name_ for your Cloud SQL instance by running the\n+    following command:\n+\n+        gcloud sql instances describe mydbinstance\n+\n+    In the output, look for the connection name in the `connectionName` field.\n+    The connection name has this format: `[PROJECT-ID]:[COMPUTE-ZONE]:mydbinstance` We\n+    refer to the connection name as `[CONNECTION-NAME]` throughout this tutorial.\n+\n+1.  Secure your new database instance by setting a password on the default\n+    postgres user:\n+\n+        gcloud sql users set-password postgres no-host \\\n+          --instance=mydbinstance --prompt-for-password\n+\n+      When prompted, enter a password for the database.\n+\n+1.  Create a database:\n+\n+        gcloud sql databases create mydb --instance=mydbinstance\n+\n+Currently, your database is owned by the default user, `postgres`. You can\n+change the ownership to an unprivileged user later, but for now you should\n+keep the default user to ensure that the data migration goes smoothly.\n+\n+### Connect to your Cloud SQL instance\n+\n+By default, Cloud SQL instances are secured: to connect using standard\n+Postgres protocols, you are required to whitelist your your IP address.\n+This security measure, while necessary, makes it challenging to establish\n+_ad hoc_ database connections.\n+\n+Cloud SQL provides the [Cloud SQL Proxy](https://cloud.google.com/sql/docs/postgres/sql-proxy)\n+command-line tool, which opens a database endpoint that you can connect to locally and which\n+proxies back to the database instance via a secure API.\n+\n+To set up Cloud SQL Proxy, perform the following steps:\n+\n+1.  [Enable the Google Cloud SQL API in the Cloud Console](https://console.cloud.google.com/apis/library/sqladmin.googleapis.com/).\n+\n+1.  [Install Cloud SQL Proxy](https://cloud.google.com/sql/docs/postgres/sql-proxy#install).\n+    Ensure that `cloud_sql_proxy` is in your environment's `PATH` variable.\n+\n+1.  The proxy creates local sockets connected to your database instances. In your Rails app\n+    directory, create a directory to hold those sockets:\n+\n+        cd /path/to/my/rails/app\n+        mkdir -p tmp/cloudsql\n+\n+1.  To start the proxy, run the following command:\n+\n+        cloud_sql_proxy -dir=tmp/cloudsql","path":"tutorials/migrating-rails-app-from-heroku-to-google-appengine.md","position":129,"original_position":129,"commit_id":"2899cbdbd8311cf35e37c829f5a5f77236b05412","original_commit_id":"2899cbdbd8311cf35e37c829f5a5f77236b05412","user":{"login":"frankyn","id":1907648,"avatar_url":"https://avatars1.githubusercontent.com/u/1907648?v=4","gravatar_id":"","url":"https://api.github.com/users/frankyn","html_url":"https://github.com/frankyn","followers_url":"https://api.github.com/users/frankyn/followers","following_url":"https://api.github.com/users/frankyn/following{/other_user}","gists_url":"https://api.github.com/users/frankyn/gists{/gist_id}","starred_url":"https://api.github.com/users/frankyn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankyn/subscriptions","organizations_url":"https://api.github.com/users/frankyn/orgs","repos_url":"https://api.github.com/users/frankyn/repos","events_url":"https://api.github.com/users/frankyn/events{/privacy}","received_events_url":"https://api.github.com/users/frankyn/received_events","type":"User","site_admin":false},"body":"Required application default credentials.\r\n\r\n`gcloud auth application-default login`","created_at":"2017-12-20T23:34:23Z","updated_at":"2017-12-20T23:50:11Z","html_url":"https://github.com/GoogleCloudPlatform/community/pull/314#discussion_r158163760","pull_request_url":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/314","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/comments/158163760"},"html":{"href":"https://github.com/GoogleCloudPlatform/community/pull/314#discussion_r158163760"},"pull_request":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/314"}}},"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/314","id":157351542,"html_url":"https://github.com/GoogleCloudPlatform/community/pull/314","diff_url":"https://github.com/GoogleCloudPlatform/community/pull/314.diff","patch_url":"https://github.com/GoogleCloudPlatform/community/pull/314.patch","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/community/issues/314","number":314,"state":"open","locked":false,"title":"New tutorial: Migrating a Rails application from Heroku to GAE","user":{"login":"dazuma","id":8911,"avatar_url":"https://avatars2.githubusercontent.com/u/8911?v=4","gravatar_id":"","url":"https://api.github.com/users/dazuma","html_url":"https://github.com/dazuma","followers_url":"https://api.github.com/users/dazuma/followers","following_url":"https://api.github.com/users/dazuma/following{/other_user}","gists_url":"https://api.github.com/users/dazuma/gists{/gist_id}","starred_url":"https://api.github.com/users/dazuma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dazuma/subscriptions","organizations_url":"https://api.github.com/users/dazuma/orgs","repos_url":"https://api.github.com/users/dazuma/repos","events_url":"https://api.github.com/users/dazuma/events{/privacy}","received_events_url":"https://api.github.com/users/dazuma/received_events","type":"User","site_admin":false},"body":"The purpose of this tutorial is to document the procedure for moving an application from Heroku to GAE—in particular, how to migrate the database from Heroku Postgres to Google Cloud SQL, and how to migrate application configuration and secrets to Google Cloud services.\r\n\r\nI recommend getting a content review from one of: @frankyn @thagomizer \r\n\r\n- [ ] Subject matter expert review - @frankyn \r\n- [x] Tech writing / styleguide review - @ryanmcginnis  \r\n- [ ] Formatting review for publishing - @jmdobry","created_at":"2017-12-08T22:56:47Z","updated_at":"2017-12-20T23:50:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"de5b5f9a502dcff0715aca0d38540683bce246d4","assignee":null,"assignees":[],"requested_reviewers":[{"login":"jmdobry","id":1213510,"avatar_url":"https://avatars0.githubusercontent.com/u/1213510?v=4","gravatar_id":"","url":"https://api.github.com/users/jmdobry","html_url":"https://github.com/jmdobry","followers_url":"https://api.github.com/users/jmdobry/followers","following_url":"https://api.github.com/users/jmdobry/following{/other_user}","gists_url":"https://api.github.com/users/jmdobry/gists{/gist_id}","starred_url":"https://api.github.com/users/jmdobry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmdobry/subscriptions","organizations_url":"https://api.github.com/users/jmdobry/orgs","repos_url":"https://api.github.com/users/jmdobry/repos","events_url":"https://api.github.com/users/jmdobry/events{/privacy}","received_events_url":"https://api.github.com/users/jmdobry/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/314/commits","review_comments_url":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/314/comments","review_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/community/issues/314/comments","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/community/statuses/2899cbdbd8311cf35e37c829f5a5f77236b05412","head":{"label":"dazuma:lift-shift","ref":"lift-shift","sha":"2899cbdbd8311cf35e37c829f5a5f77236b05412","user":{"login":"dazuma","id":8911,"avatar_url":"https://avatars2.githubusercontent.com/u/8911?v=4","gravatar_id":"","url":"https://api.github.com/users/dazuma","html_url":"https://github.com/dazuma","followers_url":"https://api.github.com/users/dazuma/followers","following_url":"https://api.github.com/users/dazuma/following{/other_user}","gists_url":"https://api.github.com/users/dazuma/gists{/gist_id}","starred_url":"https://api.github.com/users/dazuma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dazuma/subscriptions","organizations_url":"https://api.github.com/users/dazuma/orgs","repos_url":"https://api.github.com/users/dazuma/repos","events_url":"https://api.github.com/users/dazuma/events{/privacy}","received_events_url":"https://api.github.com/users/dazuma/received_events","type":"User","site_admin":false},"repo":{"id":105203401,"name":"community","full_name":"dazuma/community","owner":{"login":"dazuma","id":8911,"avatar_url":"https://avatars2.githubusercontent.com/u/8911?v=4","gravatar_id":"","url":"https://api.github.com/users/dazuma","html_url":"https://github.com/dazuma","followers_url":"https://api.github.com/users/dazuma/followers","following_url":"https://api.github.com/users/dazuma/following{/other_user}","gists_url":"https://api.github.com/users/dazuma/gists{/gist_id}","starred_url":"https://api.github.com/users/dazuma/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dazuma/subscriptions","organizations_url":"https://api.github.com/users/dazuma/orgs","repos_url":"https://api.github.com/users/dazuma/repos","events_url":"https://api.github.com/users/dazuma/events{/privacy}","received_events_url":"https://api.github.com/users/dazuma/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dazuma/community","description":"Google Cloud Platform Community","fork":true,"url":"https://api.github.com/repos/dazuma/community","forks_url":"https://api.github.com/repos/dazuma/community/forks","keys_url":"https://api.github.com/repos/dazuma/community/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dazuma/community/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dazuma/community/teams","hooks_url":"https://api.github.com/repos/dazuma/community/hooks","issue_events_url":"https://api.github.com/repos/dazuma/community/issues/events{/number}","events_url":"https://api.github.com/repos/dazuma/community/events","assignees_url":"https://api.github.com/repos/dazuma/community/assignees{/user}","branches_url":"https://api.github.com/repos/dazuma/community/branches{/branch}","tags_url":"https://api.github.com/repos/dazuma/community/tags","blobs_url":"https://api.github.com/repos/dazuma/community/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dazuma/community/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dazuma/community/git/refs{/sha}","trees_url":"https://api.github.com/repos/dazuma/community/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dazuma/community/statuses/{sha}","languages_url":"https://api.github.com/repos/dazuma/community/languages","stargazers_url":"https://api.github.com/repos/dazuma/community/stargazers","contributors_url":"https://api.github.com/repos/dazuma/community/contributors","subscribers_url":"https://api.github.com/repos/dazuma/community/subscribers","subscription_url":"https://api.github.com/repos/dazuma/community/subscription","commits_url":"https://api.github.com/repos/dazuma/community/commits{/sha}","git_commits_url":"https://api.github.com/repos/dazuma/community/git/commits{/sha}","comments_url":"https://api.github.com/repos/dazuma/community/comments{/number}","issue_comment_url":"https://api.github.com/repos/dazuma/community/issues/comments{/number}","contents_url":"https://api.github.com/repos/dazuma/community/contents/{+path}","compare_url":"https://api.github.com/repos/dazuma/community/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dazuma/community/merges","archive_url":"https://api.github.com/repos/dazuma/community/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dazuma/community/downloads","issues_url":"https://api.github.com/repos/dazuma/community/issues{/number}","pulls_url":"https://api.github.com/repos/dazuma/community/pulls{/number}","milestones_url":"https://api.github.com/repos/dazuma/community/milestones{/number}","notifications_url":"https://api.github.com/repos/dazuma/community/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dazuma/community/labels{/name}","releases_url":"https://api.github.com/repos/dazuma/community/releases{/id}","deployments_url":"https://api.github.com/repos/dazuma/community/deployments","created_at":"2017-09-28T22:02:24Z","updated_at":"2017-09-28T22:02:26Z","pushed_at":"2017-12-20T21:14:01Z","git_url":"git://github.com/dazuma/community.git","ssh_url":"git@github.com:dazuma/community.git","clone_url":"https://github.com/dazuma/community.git","svn_url":"https://github.com/dazuma/community","homepage":"https://cloud.google.com/community","size":21548,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"GoogleCloudPlatform:master","ref":"master","sha":"4832565fdba48b1a39855b370f59ed018e35ed99","user":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars0.githubusercontent.com/u/2810941?v=4","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":50372538,"name":"community","full_name":"GoogleCloudPlatform/community","owner":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars0.githubusercontent.com/u/2810941?v=4","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GoogleCloudPlatform/community","description":"Google Cloud Platform Community","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/community","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/community/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/community/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/community/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/community/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/community/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/community/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/community/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/community/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/community/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/community/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/community/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/community/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/community/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/community/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/community/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/community/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/community/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/community/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/community/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/community/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/community/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/community/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/community/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/community/issues/comments{/number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/community/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/community/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/community/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/community/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/community/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/community/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/community/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/community/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/community/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/community/releases{/id}","deployments_url":"https://api.github.com/repos/GoogleCloudPlatform/community/deployments","created_at":"2016-01-25T18:46:16Z","updated_at":"2017-12-16T23:58:10Z","pushed_at":"2017-12-20T22:03:24Z","git_url":"git://github.com/GoogleCloudPlatform/community.git","ssh_url":"git@github.com:GoogleCloudPlatform/community.git","clone_url":"https://github.com/GoogleCloudPlatform/community.git","svn_url":"https://github.com/GoogleCloudPlatform/community","homepage":"https://cloud.google.com/community","size":21525,"stargazers_count":101,"watchers_count":101,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":178,"mirror_url":null,"archived":false,"open_issues_count":83,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":178,"open_issues":83,"watchers":101,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/314"},"html":{"href":"https://github.com/GoogleCloudPlatform/community/pull/314"},"issue":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/issues/314"},"comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/issues/314/comments"},"review_comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/314/comments"},"review_comment":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/pulls/314/commits"},"statuses":{"href":"https://api.github.com/repos/GoogleCloudPlatform/community/statuses/2899cbdbd8311cf35e37c829f5a5f77236b05412"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"frankyn"}}