Веб-разработка в стиле PHP на Ruby: для этого создаем микрофрейм - PullRequest
2 голосов
/ 25 апреля 2011

В мире PHP вы можете просто создать файл index.php, поместить встроенный код и необработанный HTML, запустить Apache, и он просто работает.

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

Как я могу запустить свое приложение Ruby таким же образом? Я хочу использовать ERB для кодирования, поэтому это будет выглядеть так

# index.rb
<h1>Hello world!</h1>
<div>
  1 + 1 = <%= 1 + 1 %>
</div>

Итак, мои вопросы:

  1. Что заставляет PHP просто работать.
    AFAIU (nderstand) В PHP есть встроенная поддержка HTTP, поэтому я должен использовать Rack для поддержки его с Ruby
  2. Некоторые базовые знания для создания моей работы по «микрофраме»: работа с серверами приложений / http (Mongrel, nginx, привязка к порту http и все подобные виды работ), работа с HTTP-запросами: сеансы, параметры, GET / POST и т. Д. (Rack?), Отправка ответов (ERB-шаблонирование).

Так что я могу сделать свою собственную (в образовательных программах) микрофрейм для разработки в стиле PHP с Ruby: D

UPD

Что я действительно хочу сделать, так это приложение, которое просто получит URL запроса, запустит только этот файл и вернет HTML в качестве ответа. Также это приложение должно быть подключено к некоторому порту

index.rb
info/about.rb
info/contacts.rb
products/product.rb

, поэтому он должен проанализировать URL localhost/index.rb и запустить index.rb, localhost/products/product.rb?product_id=10, запустить products/product.rb и передать product_id=10 в качестве хэша params.

UPD 2

Я думаю, что для начала стоит покопаться в Camping Микрофрейм источник:

https://github.com/camping/camping

Это весит около 5 Кб, поэтому я не должен смущаться в этом

Ответы [ 3 ]

3 голосов
/ 25 апреля 2011

Можно писать CGI-скрипты на Ruby, но обычно этого не делается, потому что у нас есть лучшие решения.

Один файл на страницу - не очень полезная абстракция, это только тот, который поддерживает PHP. В Ruby есть лучшие способы абстрагирования веб-приложения (например, Sinatra, Rails или даже просто Rack), поэтому мы предпочитаем использовать их.

Помещение имени файла в URL - еще один неприятный побочный эффект дизайна PHP. Эта реализация показательна и не нужна (вы не получаете страницу Ruby, вы получаете страницу HTML), поэтому мы решили и этого не делать.

CGI и FCGI в Ruby также работают медленнее, чем другие решения. Это не из-за какого-то ограничения их производительности; Это происходит главным образом потому, что усилия по ускорению работы веб-приложений на Ruby были потрачены в более полезных областях, таких как Rack и Rails. Никто на самом деле не использует CGI, поэтому никто не хочет делать это быстро. mod_ruby делает CGI-скрипты несколько быстрее, если вы действительно хотите пойти по этому пути, но опять же: есть лучшие способы.

2 голосов
/ 25 апреля 2011

Apache может запустить PHP, загрузив модуль mod_php.

Я полагаю, что для запуска ruby ​​вам потребуется установить его на сервере и загрузить mod_ruby в apache.взгляните на: http://www.modruby.net/en/

0 голосов
/ 25 апреля 2011

Вы ищете CGI .Модули Apache, такие как mod_php или mod_ruby, представляют собой просто упаковку для сценариев CGI, написанных на PHP или Ruby.

...