我已经开始使用模块化样式编写我的 Sinatra 应用程序,在这个 stackoverflow 答案中建议,并已成功将其部署在 Heroku 上,但是当尝试部署到 AppFog(除了 datamapper mysql/postgres gems 之外的相同代码)时,我得到“未找到”我定义的每条路线的错误。
== 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
配置.ru
require ::File.join( ::File.dirname(__FILE__), 'app')
run MyApp.new
结构与上面链接的基本相同。
没有应用程序错误,只有“未找到”消息和日志中相应的 404“GET”条目。PUBLIC 文件夹正在正常工作 - 我可以访问站点 URL 之外的所有静态文件(即。site.com/img/anypic.jpg
)。而且,正如我所提到的,完全相同的应用程序可以在 Heroku 上完美运行。
我正在使用捆绑包,因此可以使用自定义 gem,并且在切换到模块化结构之前没有问题。
安装在 AppFog Ruby 1.9.3 运行时。
想法……