我已经正确地(或者可能没有)在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和/
重新启动应用程序,给了我一个正确的问候世界。 w00t。
然后有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
让我担心的是/和/之后的空间。 apache或sinatra会去寻找/ [空间],比如/%20?
如果有人知道这个问题涉及到什么,可能是一个已知的错误(我找不到)或已知的问题? 也许我只是愚蠢而且“一切都错了?”
否则,在运行的机架,sinatra或乘客应用程序上获取,读取或记录更多开发人员数据的任何提示也会有所帮助:例如,查看sinatra正在寻找的内容。
其他一些信息: 运行ubuntu 9.04,apache2-mm-prefork(deb),mod_php5,ruby 1.8.7,乘客2.2.11,sinatra 1.0
答案 0 :(得分:3)
您没有在app.rb中加载路由。为此,请在config.ru中将require 'sinatra'
替换为require File.join(File.dirname(__FILE__), 'app.rb')
。
root_dir = File.dirname(__FILE__)
app_file = File.join(root_dir, 'app.rb')
require app_file
set :environment, ENV['RACK_ENV'].to_sym
set :root, root_dir
set :app_file, app_file
disable :run
run Sinatra::Application
set :app_file
不会为您加载它们。
答案 1 :(得分:0)
只需将require sinatra
替换为require 'app'
,即可开始使用。