Назад | Перейти на главную страницу

Как настроить веб-сервер для запуска встроенного рубина?

Я хотел бы запустить встроенный код Ruby, встроенный в какую-то веб-страницу html. Есть рубиновые серверы, такие как mongrel, thin, но я просто хотел запустить встроенный ruby ​​в html, не создавая так называемое приложение ruby, соответствующее какой-то структуре, которую я не хочу изучать. Я хочу, чтобы код Ruby действовал как PHP, чтобы я мог получить доступ к базе данных, распечатать формы и так далее.

Какая установка мне нужна?

По общему признанию, я никогда этого не делал, но mod_ruby должен уметь это делать. Если вы можете установить mod_php, вы можете использовать mod_ruby.

Где встроенный PHP выглядит так:

<?php
    print("Hello world");
?>

встроенный Ruby будет выглядеть так:

<% var="Hello world %>
<%= var %>

Или что-то подобное; не делал этого в течение некоторого времени ;-) Можно найти больше синтаксиса Вот. Короче говоря: установите mod_ruby, и все будет в порядке.

Вы можете взглянуть на мой ответ на аналогичный вопрос по SO. Это немного похоже на ответ Дэниела, но я создал сценарий ruby-cgi, который творит за вас некоторую "магию".

Sinatra достаточно минимален, чтобы не мешать вам (и не указывать, что делать), но достаточно полнофункциональный, чтобы вы могли начать работу быстро и без особых усилий.

Вы бесплатно получаете маршруты, представления (Erb или HAML / SaSS), помощники, фильтры и поддержку различных адаптеров баз данных. Синатра не делает никаких предположений относительно того, что вы будете делать. Ваш проект может быть настолько простым или сложным, насколько это необходимо. Что еще более важно, документация превосходно и здесь хорошие примеры (реальных проектов!).

Приложения Sinatra легко развертывать с помощью любого совместимого с стойкой HTTP-сервера, такого как Mongrel или Thin.

Два других варианта используют либо Erb и cgi (2) или eruby (3) (если у вас возникли проблемы с установкой mod_ruby):

  1. erb с *.rb-контроллер-вроде-из. Это требует двух файлов для страницы, но обеспечивает простое разделение логики и представления (без «фреймворка»).

    Его действительно легко настроить, всего одна строка в httpd.conf или .htaccess (с учетом прав на исполняемый файл):

    AddHandler cgi-script .rb
    

    Ваш mypage.eruby это php-подобный ERB-шаблон:

    <p>Hello <%= foo %>!</p>
    

    Но для этого требуется некоторое кодирование. В твоем mypage.rb файл:

    #!/usr/bin/ruby
    require 'cgi'
    require 'erb'
    
    # Use cgi for handling params and sending headers etc.
    cgi = CGI.new
    
    # connect to db etc.
    
    # prepare variables (Or rather some object to bind to - read docs for that ...)
    foo = "World"
    
    # read in your template
    template = ERB.new(File.read('mypage.eruby'))
    content = template.result
    
    # Print stuff
    print cgi.header
    print content
    

    Сейчас запрос mypage.rb

  2. Использовать eruby исполняемый файл (больше похожий на классический php-стиль). Может проще для простых скриптов.

    Загрузите исполняемый файл eruby (вероятно, есть двоичный файл для вашей платформы) и скопируйте его в /cgi-bin/eruby

    В httpd.conf:

    AddType application/x-httpd-eruby .rhtml
    Action application/x-httpd-eruby /cgi-bin/eruby
    

    Затем создайте свой mypage.rhtml:

    <% 
        # Do ruby stuff here, connect to DB etc.
        foo = "World"
    %>
    <p>Hello <%= foo %>!</p>
    

    Сейчас запрос mypage.rhtml

Я предпочитаю 1, но после установки eruby будет легче начать с 2. Пожалуйста, извините за любые ошибки - я не тестировал предложенную конфигурацию и код.

(Я новичок, чтобы публиковать рабочие ссылки. Буду признателен, если кто-то с разрешениями исправит их.)

Очень простая установка - использовать Пассажир Phusion (сервер веб-приложений, способный запускать любое приложение Ruby Rack, который работает как автономно, так и как модуль apache / ngix) + страницы сервера стойки gem (это небольшое приложение, позволяющее обслуживать простые HTML-страницы со встроенным кодом Ruby).

Используя Passenger в автономном режиме, вам нужно только запустить "пассажирский старт" в корневом каталоге файлов, которые вы хотите обслуживать, и иметь в этой папке файл config.ru всего из двух строк:

require 'rack-server-pages'
run Rack::ServerPages

Теперь вы можете обслуживать любые файлы .erb, поместив их в public подпапка.

Вы также можете просто запустить "rackup" и позволить страницам обслуживаться выбранным вами ruby-сервером.