Google App EngineでRailsでHello World

April 05, 2016

Google App Engine で Rails を動かしてみる - Qiita とか、個人開発で AppEngine を使う4つの理由 - Qiitaとか見て、興味を持ったのでトライしてみます。基本的には、

How to run Hello World - Ruby — Google Cloud Platform

をベースに進めます。

コンソールからプロジェクトを作成する

https://console.cloud.google.com/

How to run Hello World Ruby Google Cloud Platform

結構丁寧。

プロジェクト

無料試用に登録すると 60 日間無料で 300 ドルのクーポンがもらえるということで登録してみました。あとで忘れるドキドキ。

ホーム GAERailsSample

と、思ったけど自動的に課金が始まるわけではない様子。

Google Cloud SDK をインストール

https://cloud.google.com/sdk/

$ curl https://sdk.cloud.google.com | bash
$ exec -l $SHELL
$ gcloud init

作業用ディレクトリでgcloud init

対話形式で進めてくれる。gcloud init をしたら、Cloud Source Repositories を使うかと聞かれたので、使うと答えてみました。これはあとで調べよう。

This project has one or more associated Git repositories.
Pick Git repository to clone to your local machine:
 \[1\] \[default\]
 \[2\] Do not clone
Please enter your numeric choice:

こんなことも聞かれた。関連のリポジトリがある?作ったばかりのプロジェクトなのに?Do not clone を選んでみた。これで設定完了。

とりあえず今までのところを振り返ると、今は、作業用の~/Desktop/gaerailssampleの中で作業していて、そこで、gcloud init`をした。

rails を作成

$ cd ~/Desktop/gaerailssample
$ rails new .

helloworld を出力するようにします。ここは、とほぼ同じコードです。

\# /app/controllers/hello\_world\_controller.rb

class HelloWorldController < ApplicationController
  def index
    # Say hello!
    render text: "Hello, world!"
  end
end

/config/routes.rb

root 'hello\_world#index'

`rails s`で動作確認をします。

デプロイ

デプロイしてみます。

$ gcloud preview app deploy
WARNING: The \`gcloud preview app\` surface is rapidly improving. Look out for
changing flags and new commands before the transition out of the \`preview\`
component. These changes will be documented in the Cloud SDK release notes
<https://goo.gl/X8apDJ> and via deprecation notices for changing commands.

If you would like to avoid changing behavior, please pin to a fixed version of
the Google Cloud SDK as described under the "Alternative Methods" section of the
Cloud SDK web site: <https://cloud.google.com/sdk/#alternative>.

Deployment to Google App Engine requires an app.yaml file. This
command will run \`gcloud preview app gen-config\` to generate an
app.yaml file for you in the current directory (if the current
directory does not contain an App Engine module, please answer "no").

Do you want to continue (Y/n)?

こんなのが出たのですが、Y にしました。

This looks like a Ruby application.

Proceed to configure deployment for Ruby? (Y/n)?  Y

Ruby application と推定してくれました。これも Y で。

NOTICE: We will deploy your application using a recent version of the standard "MRI" Ruby runtime by default. If you want to use a specific Ruby runtime, you can create a ".ruby-version" file in this directory. (For best performance, we recommend MRI version 2.3.0.)

Please enter the command to run this Ruby app in production, or leave
blank to accept the default:
\[bundle exec rackup -p 8080 -E deployment config.ru\]

と出ました。.ruby-version作ってなかった。この選択肢は blank で。

app.ymlは対話形式で作ってくれました。https://gaerailssample.appspot.comで見れるようになるとコンソールに出ました。

ちょっと待つと、billing でエラーに><

ERROR: (gcloud.preview.app.deploy) Server responded with code \[400\]:
  Bad Request Unexpected HTTP status 400.
  Failed Project Preparation (app\_id='s~gaerailssample'). Out of retries.  Last error: TEMPORARY\_ERROR: Operation does not satisfy the following requirements: billing-enabled {Billing must be enabled for activation of service '' in project 'gaerailssample' to proceed., https://console.developers.google.com/project/gaerailssample/settings}

https://console.developers.google.com/project/gaerailssample/settings に行って解消。

次にこんなエラーが。

ERROR: (gcloud.preview.app.deploy) There is a Dockerfile in the current directory, and the runtime field in /Users/moritanaoki/Desktop/gaerailssample/app.yaml is currently set to \[runtime: ruby\]. To use your Dockerfile to build a custom runtime, set the runtime field in /Users/moritanaoki/Desktop/gaerailssample/app.yaml to \[runtime: custom\]. To continue using the \[ruby\] runtime, please omit the Dockerfile from this directory.

そこで、app.ymlを下記のように書き換えて、勝手に生成されてた Dockerfile を削除して再度トライ。

runtime: custom
vm: true
entrypoint: bundle exec rackup -p 8080 -E production config.ru
env\_variables:
  SECRET\_KEY\_BASE: "hogehoge"

production と env_variables はGoogle App Engine で Rails を動かしてみる - Qiitaを参考にしました。

https://gaerailssample.appspot.com で Hello, world!が見れました。

How to run Hello World Ruby Google Cloud Platform

こんなイメージらしい。

んー、Dockerfile を削除しないでやりたかったけどうまくいかなかった。Docker もっと慣れていかなきゃ。

Tutorial は続く

Tutorial App - Ruby — Google Cloud Platform

ということで、チュートリアルはまだ続きます。Google シンプルでわかりやすいチュートリアル作ってくるんだなぁと思いました。


Profile picture

Written by morizotter who lives and works in Tokyo building useful things. You should follow them on Twitter