Как выполнить простой Ruby на локальном WebServer - PullRequest
3 голосов
/ 12 мая 2011

Я использую WEBrick для запуска локального сервера на порту 2000 и пытаюсь запустить Ruby с помощью ERB.(У меня установлен Ruby 1.9.2 на моем компьютере с OS X).Кажется, он не работает.

Например, я создал файл erb (tryErb.erb) следующим образом:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>try erb</title>
</head>
<body>
    <p> % 99.downto(96) do |number|
    <%= number %> bottles of beer…
    % end
    </p>
</body>
</html>

Я использовал chmod a=rwx tryErb.erb, чтобы сделать файл исполняемым,но если я попытаюсь посетить правильный URL (http://localhost:2000/tryErb.erb),, похоже, ничего не работает. Браузер никуда не уходит; он просто остается в индексе корня. Журнал в оболочке bash показывает:

localhost - - [12 / Май / 2011: 10: 12: 05 CEST] "GET /tryErb.erb HTTP / 1.1" 200 199 http://localhost:2000/ -> /tryErb.erb

Есть идеи?

1 Ответ

4 голосов
/ 12 мая 2011

Хорошо, понял это, хотя и не полностью.Вам нужно указать тип MIME: MimeTypes => {'rhtml' => 'text / html'}, я скопировал это из http://www.ruby -forum.com / topic / 96436 , распознает rhtml и запускает чтокогда-либо код рубина у вас есть в <% ...%>.

require 'webrick'

include WEBrick

def start_webrick(config = {})
    # always listen on port 3000
    config.update(:Port => 3000)
    config.update(:MimeTypes => {'rhtml' => 'text/html'})
    server = HTTPServer.new(config)
    yield server if block_given?
    ['INT', 'TERM'].each {|signal| 
        trap(signal) {server.shutdown}
    }
    server.start
end

start_webrick(:DocumentRoot => Dir::pwd)
...