シナトラは、旅客の下のラックに0バイトのページを返します
質問
私は共有旅客サーバー上で実行されますシナトラアプリを記述しようとしています。今のところ、私はただの「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
と私はシナトラのために必要なコースすべてのサポートのlibsの/ベンダー/シナトラ-libの下にあります。私は私のローカルマシン上でこの正確な負荷をrackupことができ、それはチャンピオンのように実行します。ただし、リモートマシン上で、私は私が訪問しようとする任意のURLのための0バイトの応答を取得します。私は/ publicディレクトリを持っている、と私はラックがまだ応答していると思いますので、私は、成功したことの外にページを表示できることに注意してください。ラックは、(少なくとも、正しくラックのアプリを実行するための)を正しく設定する必要がありますので、また、私は、何の問題もなく、基本的なラックアプリを実行することができます。
この時点で、私は考えることができる唯一のことは、リモートサーバー上など、ラックのバージョンを確認することです。私は本当に共有にログ出力を持っていないので、私は、ボックスを完全に制御を持っていません。私はそれが重要だ場合は、それを追いかけることを試みることができますが、私は何かが誰かに飛び出します願っています。
解決 2
すべての演奏をありがとう、依存関係の問題であることが判明 - 私はにデプロイされたサーバーは、シナトラをサポートするには余りにも古かったラックのバージョンを実行していました。考えるための良い他のものがたくさん、しかします。
他のヒント
私はこの問題は、他のシナトラのファイルがロードディレクトリではないことだと思います。 vendor/sinatra-lib
vendor/sinatra
の上でこれを追加しようと、config.ru
にrequire 'vendor/...'
の名前を変更しようとすると、それはまだ仕事をしない場合
$: << 'vendor/sinatra'
require 'sinatra'
少しサイドノート:あなたがあなたの代わりにrequire
のrequire 'myapp'
を行うことができますので、require 'myapp.rb'
にファイル拡張子(.RB)に合格する必要はありません。