在乘客返回0字节页面的机架上的Sinatra

时间:2009-11-24 22:57:36

标签: ruby sinatra passenger rack

我正在尝试编写一个将在共享Passenger服务器上运行的Sinatra应用程序。现在,我很高兴只是得到一个“你好世界”,但有些事情不是很正常。我有:

config.ru

require 'vendor/sinatra-lib/sinatra.rb'
set :environment, :production
disable :run

require 'myapp.rb'
run Sinatra::Application

myapp.rb

get '/' do
  "Hello world!"
end

当然,我需要的所有sinatra支持库都在/ vendor / sinatra-lib下。我可以在我的本地机器上获得这个确切的负载,并且它像冠军一样运行。但是,在远程计算机上,我尝试访问的任何URL都会得到0字节的响应。请注意,我有一个/ public目录,我可以成功查看页面,所以我猜Rack还在响应。此外,我可以毫无问题地运行基本的Rack应用程序,因此必须正确配置Rack(至少,正确运行Rack应用程序)。

此时,我唯一能想到的就是检查远程服务器上的Rack等版本。我没有完全控制盒子,所以我没有真正的日志输出分享。我可以尝试追逐它,如果它很重要,但我希望有人会跳出某些东西。

2 个答案:

答案 0 :(得分:0)

我认为问题是其他sinatra文件不在加载目录中。尝试将vendor/sinatra-lib重命名为vendor/sinatra,如果仍然无效,请尝试将其添加到config.ru的顶部,而不是require 'vendor/...'

$: << 'vendor/sinatra'
require 'sinatra'

一点注意事项:您无需将文件扩展名(.rb)传递给require,因此您可以require 'myapp'代替require 'myapp.rb'

答案 1 :(得分:0)

谢谢大家玩,结果证明是一个依赖问题 - 我部署的服务器运行的是一个太旧而无法支持Sinatra的Rack版本。不过要考虑很多其他好东西。