Синатра не загружается при запуске приложения ruby - PullRequest
3 голосов
/ 22 апреля 2011

Я пытаюсь запустить приложение Ruby, которое требует Sinatra в Ubuntu 10.10.Я новичок в трех из этих технологий, поэтому я понимаю, что этот вопрос кажется вам тупым.

Вчера я установил ruby, делая ... sudo apt-get install ruby1.9.1-full

И sinatra, делая ... sudo gem install sinatra

Вот код, который я пытаюсь запустить:

require 'rubygems'
require 'sinatra'

get '/' do
    "Hi Alex!"
end

Когда я выполняю ruby1.9.1 -rubygems app.rb, ничего не происходит (Ruby правильно установлен, так как я пытался запустить приложения, которые не работают.Синатра не нужна, и они работают нормально).

$ ls
app.rb
$ 
$ ruby1.9.1 app.rb
$
$ ruby1.9.1 -rubygems app.rb
$ 

Я знаю, что это должно открыть Синатру и сказать мне, какой порт он слушает.

Я искал помощи черези прочитайте несколько тем, созданных на этом форуме, но ничего из того, что я пробовал, не помогло мне.

Что здесь может происходить?

Спасибо

1 Ответ

6 голосов
/ 22 апреля 2011

Была похожая проблема с sinatra 1.0 на ruby ​​1.9.2. Ответ должен был добавить enable :run к вашему коду.

Посмотрите документы для :run конфигурации - если вы собираетесь развертывать на сервере, вам нужно сделать что-то вроде enable :run if __FILE__ == $0, чтобы вы только запускали встроенный сервер во время разработки, когда вам это нужно.

Строго говоря, ваш код верен и должен нормально работать, и фактически он работает с ruby ​​1.8.7 и 1.9.2. Кажется, проблема в том, что он работает с ruby ​​1.9.1. В целом, версия 1.9.1 выглядит довольно устаревшей, и вам, возможно, стоит попробовать обновить ее до 1.9.2. Если в Ubuntu нет пакетов для 1.9.2, взгляните на rvm . (На самом деле, если вы собираетесь заниматься разработкой ruby, то в любом случае стоит взглянуть на rvm).


Обновление:

Мне удалось скомпилировать ruby ​​1.9.1, чтобы проверить это, и ваш код работал нормально. Также немного погуглил, что пакет Ubuntu ruby1.9.1 все равно предоставляет ruby ​​1.9.2 . Так что, похоже, что-то еще происходит, что не позволяет установить :run при непосредственном запуске файла, хотя я не знаю, что это может быть.

Еще одно обновление:

Глядя на пакет Ubuntu Sinatra , похоже, что он версии 1.0. Возможно, ваша установка использует Ubuntu упаковать и игнорировать более свежую версию, установленную через rubygems. Это может объяснить, что происходит. Если это так, то это не «похожая проблема» для ruby ​​1.9 и sinatra 1.0, как я предлагал выше, это та же проблема!

Еще одно обновление:

Пара вещей произошла со мной. Вы можете проверить, какую версию Sinatra вы используете на самом деле, например, puts Sinatra::VERSION после require 'sinatra'. Кроме того, похоже, что есть команда gem1.9.1 , соответствующая ruby1.9.1. Похоже, когда вы установили sinatra с sudo gem install sinatra, последняя версия была установлена ​​в установку ruby ​​1.8, и вышла ruby ​​1.9 с Ubuntu Sinatra 1.0. Если вы еще не переключились на rvm, попробуйте sudo gem1.9.1 install sinatra.

...