このstackoverflowの回答で提案されているモジュラースタイルを使用してSinatraアプリの作成を開始し、Herokuに正常にデプロイしましたが、AppFogにデプロイしようとすると(datamapper mysql/postgres gemを除く同一のコード)、「見つかりません」と表示されます私が定義したすべてのルートのエラー。
== Sinatra/1.3.3 has taken the stage on 47195 for production with backup from Thin
myIP, 127.0.0.1 - - [08/Dec/2012 21:28:53] "GET / HTTP/1.0" 404 18 0.0030
myIP, 127.0.0.1 - - [08/Dec/2012 21:28:54] "GET /any_route HTTP/1.0" 404 18 0.0010
myIP, 127.0.0.1 - - [08/Dec/2012 21:28:58] "GET /about HTTP/1.0" 404 18 0.0008
設定からの私のビューと公開パス:
settings.views = "./views"
root = "."
settings.sin_auth_view_path = "/mnt/var/vcap.local/dea/apps/myapp-0-d1d1d1dc0e543b1759afda27b/app/views/"
public_folder = "./public"
定義されたルートの例:
class MyApp < Sinatra::Application
get '/' do
@title = "Site Index Page"
haml :index
end
end
Config.ru
require ::File.join( ::File.dirname(__FILE__), 'app')
run MyApp.new
構造は基本的に上記のリンクと同じです。
アプリケーション エラーはなく、"Not Found" メッセージと対応する 404 "GET" エントリがログに記録されています。PUBLIC フォルダーは正常に機能しています。サイトの URL からすべての静的ファイルにアクセスできます (ie. site.com/img/anypic.jpg
)。そして、前述したように、まったく同じアプリが Heroku でも問題なく動作します。
バンドル パッケージを使用しているため、カスタム gem を使用でき、モジュール構造に切り替えるまで問題はありませんでした。
AppFog Ruby 1.9.3 ランタイムにインストールされています。
考え....