2012-12-09 29 views
1

我已經開始使用模塊化風格編寫我的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上。

思考....

回答

1

由於在AppFog谷歌用戶組的用戶,該解決方案是部署爲機架應用程序而不是西納特拉應用。

注:另外,還要確保使用--runtime ruby193命令行選項,如果你正在使用require_relative :)

0

我會檢查,看看是否你可能會具有與該「settings.sin_auth_view_path」條目的問題,因爲它是一個絕對路徑(而另外兩個是相對的)。 Heroku沒有正常的文件系統佈局,當您在應用程序源代碼之外登陸時,您曾經在開發框中看到過這種佈局。

+0

如果Heroku上沒有一個正常的文件系統佈局,它爲什麼在那裏工作,我的本地系統然後?問題是它不適用於AppFog。但我會嘗試將「settings.sin_auth_view_path」更改爲相關的,並查看是否有所作爲...並報告回來。謝謝。我也可以嘗試直接在AWS EC2實例(Bitnami Ruby 193 AMI)上進行安裝,以瞭解具體情況。 –

+0

您能否指出我對Heroku文件系統差異的解釋?謝謝。 –

+0

查看[this](https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem)。這不是超級描述性的,但基本上本地文件可以隨時消失,並且無法訪問應用程序源代碼樹之外。 – mjbraun

相關問題