我在 apache 2 上正确(或可能没有)安装了乘客。机架工作,但 sinatra 不断给出 404。
这是有效的: config.ru:
#app = proc do |env|
return [200, { "Content-Type" => "text/html" }, "hello <b>world</b>"]
end
run app
这也是可行的:使用ruby app.rb 运行 app.rb(见下文),然后查看 localhost:4567/about 和 /
重新启动应用程序,给了我一个正确的 hello world。w00吨。
但随后有 sinatra 进入大楼: 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 会去寻找 /[space],比如 /%20 吗?
如果有人知道这个问题与什么有关,也许是一个已知的错误(我找不到)或一个已知的陷阱?也许我只是愚蠢并得到“一切都错了”?
否则,任何关于在运行机架、sinatra 或乘客应用程序上获取、读取或记录更多开发人员数据的提示也会有所帮助:例如,查看 sinatra 正在寻找什么。
其他一些信息:运行 ubuntu 9.04、apache2-mm-prefork (deb)、mod_php5、ruby 1.8.7、passenger 2.2.11、sinatra 1.0