Google App EngineでRubyが使えるようになったと聞いたので、HelloWorldしてみます。
基本的にはこちらのRuby Starterにそって進めます。
1. ウェブコンソールからプロジェクトを作る
「プロジェクトを作成」からプロジェクトを作ります。
あと、以下からプロジェクトの課金を有効にしないと最後deployのところでエラーが出たので有効にしました。
2. Google Cloud SDKを入れる
以下で簡単に入ります。
curl https://sdk.cloud.google.com | bash
3. Railsのプロジェクトを作る
普通にRailsプロジェクトを作って、
mkdir app-engine-hello-world
cd app-engine-hello-world
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'
4. Google Cloud SDKで初期化する
Railsのプロジェクトディレクトリでコマンドを叩きます。
gcloud init
Googleアカウントの認証とか、プロジェクト名など選びます。
5. Deploy
おもむろにそのまま勢いでdeployしようとしてみます。
gcloud preview app deploy
app.yaml
がないから作るとか言われるので、作ってもらいます。
そしてそのままdeployが進もうとするのですが、app.yamlの中身が微妙だったので、最後だけcontinueせずにapp.yaml
を修正します。
- entrypointの環境を
production
にします - env_variablesというキーで環境変数を渡せるようなので
SECRET_KEY_BASE
を書きます。
runtime: ruby
vm: true
entrypoint: bundle exec rackup -p 8080 -E production config.ru
env_variables:
SECRET_KEY_BASE: 'hogehoge'
SECRET_KEY_BASE
はここに書くならsecrets.yml
に書いてもいいんじゃないの?という気になります。
再度、deployします。deployはちょっと待ちます。
gcloud preview app deploy
6. 完成!
deploy完了時にurlが表示されるので、開いてみましょう。
Hello World
と表示されることでしょう。
7. おまけ
公式にもうすこし色々やるチュートリアルが用意されています。
datastoreやcloud_storage、workerまでサンプルがあります。
コード自体は以下にあるようです。
あと、これがdeploy後のconsoleなのですが、App EngineではなくCompute Engineのインスタンスが立ち上がっています。
Managed VMだからだと思うんですが、料金はどうなるんでしょうね?無料期間が3ヶ月あるようなので様子をみてみます。
以上です。