2

共有 Passenger サーバーで実行される Sinatra アプリを作成しようとしています。今のところ、"hello world" が表示されるだけでよかったのですが、何かがうまく機能していません。私は持っている:

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などのバージョンを確認することです。ボックスを完全に制御できないため、共有するログ出力が実際にはありません。それが重要なら、私はそれを追跡しようとすることができますが、誰かに何かが飛び出すことを願っています.

4

2 に答える 2

0

遊んでくれてありがとう、依存関係の問題であることが判明しました-私がデプロイされたサーバーは、Sinatraをサポートするには古すぎるバージョンのRackを実行していました。しかし、他にも考えるべきことがたくさんあります。

于 2010-06-09T16:35:42.383 に答える
0

問題は、他のシナトラ ファイルがロード ディレクトリにないことだと思います。vendor/sinatra-libに名前を変更してみてくださいvendor/sinatra。それでもうまくいかない場合は、これを の先頭にconfig.ru, の代わりに追加してみてくださいrequire 'vendor/...'

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

ちょっとした補足: ファイル拡張子 (.rb) を に渡す必要はないので、 .rbの代わりに渡すrequireことができます。require 'myapp'require 'myapp.rb'

于 2009-12-14T17:24:03.160 に答える