オープンソースのPaaSソフトウェア CloudFoundry の技術情報やイベント告知などを掲載します

2015-07-30

あいまいランチ を Cloud Foundry で動かす

「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でアプリを動作させる為に変更します。

  • Gemfileruby 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. デプロイ

今回は ServiceBrokerPostgreSQL を利用します。
詳細はこちらを確認して下さい。

$ cf create-service PostgreSQL "Basic PostgreSQL Plan" testdb1

次にアプリを --no-startcf 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 が終われば次に ServiceBrokerPostgreSQL にバインドします。

$ 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

これであなたの近くのお店も検索出来るようになるかも・・・。

今回使用したソフトウェア