развернуть приложение sinatra с пассажиром дает только 404, страница не найдена. Все же простое приложение стойки работает - PullRequest
0 голосов
/ 30 мая 2010

Я правильно (или, вероятно, не) установил пассажира на 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 и /

перезапуск приложения, дает мне правильный привет мир. 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

То, что меня беспокоило, это место после / и / о. Будет ли Apache или Sinatra искать / [пробел], как /% 20?

Если кто-то знает, с чем связана эта проблема, может быть, известная ошибка (которую я не смог найти) или известная ошибка? Может быть, я просто глуп и получаю "все неправильно"?

В противном случае полезны также любые подсказки о том, где можно получить, прочитать или зарегистрировать дополнительные данные разработчиков на работающей стойке, sinatra или пассажирском приложении: например, посмотреть, что ищет sinatra.

Некоторая другая информация: Работает Ubuntu 9.04, apache2-mm-prefork (deb), mod_php5, ruby ​​1.8.7, пассажирский 2.2.11, sinatra 1.0

Ответы [ 2 ]

3 голосов
/ 30 мая 2010

Вы не загружаете маршруты в app.rb. Для этого замените require 'sinatra' на require File.join(File.dirname(__FILE__), 'app.rb') в 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 не загрузит их для вас.

0 голосов
/ 25 августа 2010

Просто замените require sinatra на require 'app' и все готово.

...