「Cloud Foundry 百日行」第40日目は,新たな切り口でランチのお店を紹介してくれるアプリあいまいランチです。
このアプリは “Ruby on Rails”&”PostgreSQL” で構成されています。またアプリのデプロイ時にぐるなびWebサービスを利用しているようです。
基本情報
-
その他参考情報
あいまいランチ – ランチは適当に。男選びは慎重に
手順の概要は以下の通りです。
- 1) ソースコードの取得
- 2) 事前準備
- 3) デプロイ
- 4) 動作確認
1. ソースコードの取得
$ git clone https://github.com/esodov/wassermann.git
$ cd wassermann
$ ls
app config db Gemfile.lock log Rakefile README.rdoc tmp
bin config.ru Gemfile lib public README.md spec vendor
2. 事前準備
Cloud Foundryでアプリを動作させる為に変更します。
Gemfile
のruby version
を削除
$ vi Gemfile
(変更内容)
@@ -1,7 +1,7 @@
source 'https://rubygems.org'
gem 'rails_12factor', group: :production
-ruby '2.1.2'
+#ruby '2.1.2'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.6'
3. デプロイ
今回は ServiceBroker
の PostgreSQL
を利用します。
詳細はこちらを確認して下さい。
$ cf create-service PostgreSQL "Basic PostgreSQL Plan" testdb1
次にアプリを --no-start
で cf push
します。
またデプロイ時にDB初期設定、初期データのインポートも行うことからタイムアウトにならないように念の為、 -t 180
を付けます。
$ cf push was -c 'bundle exec rake db:migrate && bundle exec rake db:seed && bundle exec rails server --port=$PORT' -t 180 --no-start
cf push
が終われば次に ServiceBroker
の PostgreSQL
にバインドします。
$ cf bind-service was testdb1
そして rake db:seed
を実行する際に必要となる環境変数を設定します。
$ cf set-env was GNAVI_KEYID <ID>
ここで指定する <ID>
はぐるなびWebサービスに登録し発行される keyID
が必要になります。
今回は動作確認だけなのでぐるなびが提供しているAPI テストツールのページで日々変更される keyID
を使って試します。(正式に利用される方は登録したものを利用してください。)
あとはアプリを起動します。
$ cf start was
:
OK
requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: was.10.244.0.34.xip.io
last uploaded: Tue Jul 28 03:23:36 UTC 2015
stack: cflinuxfs2
buildpack: Ruby
state since cpu memory disk details
#0 running 2015-07-28 12:24:55 PM 0.0% 144.5M of 256M 0 of 1G
アプリが起動しました。
4. 動作確認
ブラウザからアプリにアクセスします。
駅と決定方法を選ぶと、
お店が表示されます。(本来の結果にはお店の写真と店名が表示されます)
おまけ
今回のアプリは山手線上の駅名しかないのですが、「山手線って何処だ!」って方は以下の2ファイルに最寄りの駅名をそれぞれ追加して下さい。
- app/controllers/welcome_controller.rb
- db/seeds/locations.rb
これであなたの近くのお店も検索出来るようになるかも・・・。
今回使用したソフトウェア
- cf-release (v211)
https://github.com/cloudfoundry/cf-release/tree/v211
( https://github.com/cloudfoundry/cf-release/tree/2121dc6405e0f036efa4dba963f7f49b07e76ffa ) - bosh-lite
https://github.com/cloudfoundry/bosh-lite/tree/552dc6869600c5350eb7ffb4fb9c9c5e79e3889d - CF CLI (v6.11.2-2a26d55-2015-04-27T21:11:49+00:00)
https://github.com/cloudfoundry/cli/releases/tag/v6.11.2 - postgresql-cf-service-broker
https://github.com/cloudfoundry-community/postgresql-cf-service-broker/tree/99861eef5d220721799a6fc5465a272347b1007a - あいまいランチ
https://github.com/esodov/wassermann/tree/d754a673011fce3c1d6278d65bd7da8222833e31