Apache 2にパッセンジャーを正しくインストールしました(またはおそらくインストールしていません)。ラックは機能しますが、sinatraは404を出し続けます。
これが機能するものです: config.ru:
#app = proc do |env|
return [200, { "Content-Type" => "text/html" }, "hello <b>world</b>"]
end
run app
ここでも機能します: app.rb (以下を参照) をruby app.rbで実行し、localhost:4567/about および / を調べます。
アプリを再起動すると、正しい Hello World が表示されます。w00t。
しかし、その後、建物に入るシナトラがあります: config.ru
require 'rubygems'
require 'sinatra'
root_dir = File.dirname(__FILE__)
set :environment, ENV['RACK_ENV'].to_sym
set :root, root_dir
set :app_file, File.join(root_dir, 'app.rb')
disable :run
run Sinatra::Application
とapp.rb
require 'rubygems'
require 'sinatra'
get '/' do
"Hallo wereld!"
end
get '/about' do
"Hello world, it's #{Time.now} at the server!"
end
これにより、404 が返され続けます。 /var/logs/apache2/error.logには、これらが「404」として正しく表示され、気になることがあります。
83.XXXXXXXXX - - [30/May/2010 16:06:52] "GET /about " 404 18 0.0007
83.XXXXXXXXX - - [30/May/2010 16:06:56] "GET / " 404 18 0.0007
気になったのは、/ と /about の後のスペースです。apache や sinatra は /%20 のように /[スペース] を探しに行きますか?
この問題が何に関連しているかを誰かが知っている場合、おそらく既知のバグ (私が見つけられなかった) または既知の落とし穴ですか? 多分私はただ愚かで、「それはすべて間違っていますか?」
それ以外の場合は、実行中のラック、sinatra、またはパッセンジャー アプリでより多くの開発者データを取得、読み取り、またはログに記録する場所に関するヒントも役立ちます。たとえば、sinatra が探しているものを確認するためです。
その他の情報: 実行中の ubuntu 9.04、apache2-mm-prefork (deb)、mod_php5、ruby 1.8.7、パッセンジャー 2.2.11、sinatra 1.0