2

我正在尝试编写一个将在共享乘客服务器上运行的 Sinatra 应用程序。现在,我很高兴能得到一个“hello world”,但有些事情不太正常。我有:

配置.ru

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

require 'myapp.rb'
run Sinatra::Application

我的应用程序.rb

get '/' do
  "Hello world!"
end

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

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

4

2 回答 2

0

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

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

一点旁注:您不需要将文件扩展名 (.rb) 传递给require,因此您可以这样做require 'myapp'而不是require 'myapp.rb'.

于 2009-12-14T17:24:03.160 回答
0

Thank you all for playing, turned out to be a dependency issue -- the server I was deployed to was running a version of Rack that was too old to support Sinatra. Lots of good other stuff to think about, though.

于 2010-06-09T16:35:42.383 回答