Похоже, вам нужны базовые знания о том, как работают CGI. Как только вы узнаете, что вам будет легче работать с Sinatra, как рекомендовано @echoback, или с Padrino, Rails или с другими языками.
Это довольно простой CGI. Он генерирует простую форму в соответствии с тем, о чем вы говорили, затем просматривает таблицу окружения, переданную в Ruby веб-сервером, сортирует по ключам и выводит таблицу в отсортированном порядке. Большинство полей напрямую относятся либо к самому веб-серверу, либо к CGI, например к запросу, отправляемому браузером, вместе с его заголовками, отправляемыми на сервер с указанием его возможностей:
#!/usr/bin/env ruby
puts "Content-Type: text/html"
puts
puts "<html><head><style type='text/css'>body{font-family: monospace;}</style></head><body>"
puts "<form name='foo' action='test_cgi.rb'>"
puts "<input type='textinput' name='inputbox'></input><br />"
puts "<textarea name='textareabox'></textarea><br />"
puts "<input type='submit'></input>"
puts "</form>"
puts "<h4>ENVIRONMENT:</h4>"
puts "<table>"
ENV.keys.sort.each do |k|
puts "<tr><td>#{k}</td><td>#{ENV[k]}</td></tr>"
end
puts "</table>"
puts "</body></html>"
Скопируйте этот код, сохраните его в Ruby-файле с именем test_cgi.rb
, а затем установите исполняемый бит для файла. Переместите этот файл в каталог cgi-bin
вашего веб-сервера на вашем компьютере. Используйте свой браузер для доступа к файлу (http://localhost:8080/cgi-bin/test_cgi.rb
или что-то похожее) и наблюдайте, как выходные данные в таблице изменяются, когда вы вводите в форму разные значения и отправляете их.
Как только вы поймете, что обход от сервера к браузеру и серверу вам пригодится, вы узнаете, как Sinatra опирается на Rack для более простого предоставления большего количества функций, чем все это самостоятельно с помощью CGI.