1

この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 ランタイムにインストールされています。

考え....

4

2 に答える 2

1

AppFog Google ユーザー グループのユーザーのおかげで、解決策はSinatraアプリケーションではなくRackアプリケーションとしてデプロイすることでした。

--runtime ruby193注:使用している場合は、コマンドラインオプションも必ず使用してくださいrequire_relative:)

于 2012-12-16T17:22:47.917 に答える
0

「settings.sin_auth_view_path」エントリは絶対パスであるため、問題があるかどうかを確認します (他の 2 つは相対パスです)。Heroku には、アプリのソースの外に出ると、開発ボックスで見慣れた通常のファイルシステム レイアウトがありません。

于 2012-12-10T19:29:41.347 に答える