君の瞳はまるでルビー - Ruby 関連まとめサイト

Heroku を Ruby コードで管理 - アプリケーションの作成

最終更新: 2015-03-31 (火) 21:53:17 (1881d)

Heroku を Ruby コードで管理

概要

Ruby コードでアプリケーションの作成を行う api.post_app にはオプションを指定できます。

また、アプリケーションの作成後、他の操作を行う場合は、確実にアプリケーションが作成されたかどうかを確認する操作が必要になります。

それらについて説明します。

オプション

api.post_app には以下のオプションがあります。

オプション名オプションの値概要
nameアプリケーションID任意
stackスタックの種類cedar,bamboo,aspen

以下のように指定します。

api.post_app({"name" => アプリケーションID, "stack" => スタック名})

確実にアプリケーションが作成されたかどうかの確認

api.post_app は、アプリケーションの作成を指示し、すぐに応答を返します。

しかし、裏で Heroku は並行してアプリケーションの作成を実施しています。api.post_app が返す Hash の create_status がそれを表しています。

後続の処理がある場合、create_status の値が creating から complete に変わるまで待つ必要があります。

これを Ruby のコードで行う例を以下に示します。

# coding: UTF-8

require 'heroku'

api = Heroku::Auth.api
info = api.post_app.body
if info['create_status'] == 'creating'
  Timeout::timeout(nil) do
    loop do
      break if api.get_app(info['name']).body['create_status'] == 'complete'
      sleep 1
    end
  end
end
p api.get_app(info['name']).body

Git への登録

現在、Git リポジトリで作業していて、 アプリケーションを作成した後にアプリケーションのインストールを行おうとしている場合、 リモートリポジトリの登録を行う必要があります。

通常、heroku create コマンドを実行している場合は、コマンドが自動で行ってくれているのですが、この場合は自分で行う必要があります。

Rake でアプリケーション作成のタスクをしようとしているのであれば、タスクに以下の処理を追加すれば大丈夫です。

sh("git remote rm heroku") {}
sh "git remote add heroku #{info['git_url']}"

1行目で heroku リモートリポジトリを削除し、2行目で新しい heroku リモートリポジトリの登録を行っています。

1行目がブロック付きなのは、heroku リモートリポジトリが無かった場合にそこで処理が終わらないようにするためです。

通常の Ruby アプリケーションで同じことを行うには単に Kernel::exec を使えば良いだけです。

コメント

本ページの内容に関して何かコメントがある方は、以下に記入してください。

コメントはありません。 コメント/heroku/how/management/with_ruby/apps_create

お名前: