我已经开始使用模块化风格编写我的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