/ / distribuire un'app sinatra con il passeggero dà solo 404, pagina non trovata. Eppure una semplice app per rack funziona: rubino, sinatra, passeggero, dispiegamento, rack

distribuire un'applicazione sinatra con passeggero dà solo 404, pagina non trovata. Eppure una semplice app per rack funziona: rubino, sinatra, passeggero, dispiegamento, rack

Ho correttamente (o forse no) il passeggero installato su apache 2. Rack funziona, ma sinatra continua a dare 404 "s.

Ecco cosa funziona: config.ru:

#app = proc do |env|
return [200, { "Content-Type" => "text/html" }, "hello <b>world</b>"]
end
run app

Ecco cosa funziona anche: Esecuzione di app.rb (vedi sotto) con ruby app.rb e poi guardando localhost: 4567 / about e /

riavviare l'app, mi dà un mondo ciao corretto. w00t.

Ma poi c'è la sinatra che entra nell'edificio: 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

e un app.rb

require "rubygems"
require "sinatra"

get "/" do
"Hallo wereld!"
end

get "/about" do
"Hello world, it"s #{Time.now} at the server!"
end

Questo continua a dare 404s. /var/logs/apache2/error.log li elenca correttamente come "404" con qualcosa che mi preoccupa:

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

La cosa che mi preoccupava, è lo spazio dopo il / e il / about. Apache o Sinatra andrebbero in cerca di / [spazio], come /% 20?

Se qualcuno sa a che cosa si riferisce questo problema, forse un bug noto (che non sono riuscito a trovare) o un trucco noto? Forse sono solo stupido e sto sbagliando tutto?

In caso contrario, qualsiasi suggerimento su dove trovare, leggere o registrare più dati degli sviluppatori su una rastrelliera, l'app di sinatra o del passeggero sarebbe utile: per vedere cosa cerca, ad esempio, Sinatra.

Alcune altre informazioni: Esecuzione di Ubuntu 9.04, apache2-mm-prefork (deb), mod_php5, ruby ​​1.8.7, passeggero 2.2.11, sinatra 1.0

risposte:

3 per risposta № 1

Non stai caricando i percorsi in app.rb. Per fare questo, sostituire require "sinatra" con require File.join(File.dirname(__FILE__), "app.rb") in config.ru.

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 non li caricherò per te


0 per risposta № 2

Basta sostituire il require sinatra con un require "app" e tu sei pronto per partire.