Misunderstanding

前回のエントリーに、appfogにOctopressを設置する手順を書いた。ちょっと勘違いしていたところがあったので、補足。前回のエントリーについては修正してある。

af push autodetects your Sinatra app

appfogドキュメントのLanguages > Ruby > Sinatraにはこう書いてあった。

AppFog autodetects your Sinatra app by searching for require 'sinatra' in the *.rb files. It then chooses that file as the main Sinatra app file.

If you use Bundler to load Sinatra, AppFog may not recognize your app. In this case, you can simply manually tell AppFog that it's a Sinatra app when you push your code:

拙訳:

自動的にSinatraアプリを判別して、Sinatra app fileを見つけ出すけど、Bundler使ってると判別に失敗するかもしれないから、その時は自分で選んでね。

ということらしい。該当部分はこのあたりだ。

$ af push
Would you like to deploy from the current directory? [Yn]:
Application Name: sinatra-example
Detected a Standalone Application, is this correct? [Yn]: n # <- ここ
1: Rails
2: Spring
3: Grails
4: Lift
5: JavaWeb
6: Standalone
7: Sinatra
8: Node
9: PHP
10: Erlang/OTP Rebar
11: WSGI
12: Django
13: Rack
Select Application Type: 7
Selected Sinatra Application
...

当初はRackアプリとして判定されていたため、"Y"ではなく"n"と答えると、アプリの種類を選択できるようになる。ここで"7: Sinatra"を選ぶように修正した。結果として、生成されるmanifest.ymlも変わるため、これも修正してある。

manifest.yml.diff
--- manifest.rack.yml 2013-02-23 12:09:46.000000000 +0900
+++ manifest.sinatra.yml 2013-02-23 12:09:33.000000000 +0900
@@ -3,10 +3,10 @@
.:
name: blog-satooshi-jp
framework:
- name: rack
+ name: sinatra
info:
mem: 128M
- description: Rack Application
+ description: Sinatra Application
exec:
infra: ap-aws
url: ${name}.${target-base}