Как я могу выполнить сценарии Ruby через Apache (необязательно используя Rails)?

8

Я пытаюсь заставить Apache интерпретировать мои файлы Ruby, но я не понимаю, как это сделать. Я не имею отношения к Rails сейчас, только Ruby. То, что я нашел в Google, только смущает меня. Любой совет?

Джейсон Светт
источник

Ответы:

3

Наиболее распространенный способ запуска кода ruby ​​в среде веб-сервера - использование кода для реализации стоечного интерфейса. Это очень простой API, который позволяет веб-серверу общаться с вашим приложением ruby. Для Apache наиболее распространенным обработчиком стойки является пассажирский (он же mod_rails и mod_rack). Почти все текущие веб-фреймы ruby ​​(например, rails, sinatra, camp, ...) подключаются к веб-серверу с помощью обработчика стойки. Вы можете использовать одну из этих платформ, но вы также можете писать стоечные приложения напрямую без них. Все серверы приложений ruby ​​(монгрел, тонкий, единорог, радуга, ...) реализуют интерфейс стойки.

Другой альтернативой может быть использование (f) cgi, но я бы посоветовал вам держаться подальше от этого маршрута, поскольку интерфейс и протоколы неудобны и на самом деле не предоставляют современных средств управления.

Хольгер Джаст
источник
2

Некоторое время я пытался найти простой ответ на этот вопрос и понял, что все, что вам нужно сделать, это поместить скрипт ruby ​​в каталог cgi-bin вашего веб-сервера и загрузить соответствующий URL. Так, например, в моей установке CentOS 6.2 / httpd по умолчанию я поместил скрипт с именем hello.rb в / var / www / cgi-bin /, а затем загрузил http: //localhost/cgi-bin/hello.rb в свой браузер и он выполнил скрипт и показал мне, что пошло в STDOUT (то есть из пут и т. д.).

Здесь происходит то, что каждый раз, когда URL-адрес загружается, скрипт полностью запускается. Это не идеально для большого объема веб-сервера или где скорость имеет решающее значение - поэтому что-то вроде fastCGI всегда поддерживает выполнение сценария, но вы должны написать сценарий, чтобы справиться с этим.

надеюсь, это поможет.

carillonator
источник
1

Вы можете выполнять сценарии ruby ​​с быстрым CGI. Посмотрите на проект fcgi для получения дополнительной информации.

Vagmi Mudumbai
источник
0

Попробуйте модрубы .

alvosu
источник
Я попробовал это. Он ничего не делал, и если есть какая-то документация, они отлично скрывали это.
Джейсон Светт
Это тоже не сработало. Invalid command 'RubyAddPath'Это какая-то эзотерическая вещь, которую никто никогда не делает? Я удивлен тем, как трудно заставить Ruby работать с Apache по сравнению с PHP.
Джейсон Светт
Добавить "LoadModule ruby_module" path_to_mod / mod_ruby.so "
alvosu
Добавление AddHandler ruby-object .rbx, LoadModule ruby_module /path/to/mod_ruby, RubyRequire apache/ruby-runи RubyHandler Apache::RubyRun.instanceк httpd.confдолжно быть достаточно для простой конфигурации.
Крис С