Sinatra Modular应用程序无法识别AppFog上的路由

时间:2012-12-09 23:04:52

标签: ruby sinatra routes modular appfog

我已经开始使用模块化样式suggested in this stackoverflow answer编写我的Sinatra应用程序,并已成功将其部署在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

Config.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运行时。

...思想

2 个答案:

答案 0 :(得分:1)

感谢AppFog Google用户组的用户,解决方案是部署为 Rack 应用程序,而不是 Sinatra 应用程序。

注意:如果您使用的是--runtime ruby193,请确保使用require_relative命令行选项:)

答案 1 :(得分:0)

我会检查你是否可能遇到“settings.sin_auth_view_path”条目的问题,因为它是一个绝对路径(而其他两个是相对的)。 Heroku没有正常的文件系统布局,一旦你在应用程序的源外提升,你就会习惯在开发盒上看到它。