我已經開始使用模塊化風格編寫我的Sinatra應用程序suggested in this stackoverflow answer,並且已經成功將它部署到Heroku,但是當試圖部署到AppFog時(除了datamapper mysql/postgres gem )我已經定義了每條路線的「未找到」錯誤。Sinatra模塊化應用程序無法識別AppFog上的路線
== 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上的所有靜態文件(即site.com/img/anypic.jpg
)。而且,正如我所提到的,完全相同的應用程序在Heroku上運行得非常完美。
我正在使用捆綁軟件包,因此可以使用自定義的gem,直到切換到模塊化結構纔有問題。
安裝在AppFog Ruby 1.9.3 Runtime上。
思考....
如果Heroku上沒有一個正常的文件系統佈局,它爲什麼在那裏工作,我的本地系統然後?問題是它不適用於AppFog。但我會嘗試將「settings.sin_auth_view_path」更改爲相關的,並查看是否有所作爲...並報告回來。謝謝。我也可以嘗試直接在AWS EC2實例(Bitnami Ruby 193 AMI)上進行安裝,以瞭解具體情況。 –
您能否指出我對Heroku文件系統差異的解釋?謝謝。 –
查看[this](https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem)。這不是超級描述性的,但基本上本地文件可以隨時消失,並且無法訪問應用程序源代碼樹之外。 – mjbraun