/
Evorunner
/
ruby_labs
Обзор
Документация
Войти
/
Evorunner
/
ruby_labs
Код
Запросы
4
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
kurs_project
bin/server
63 строки
2 KB
Иван
файл сервера переписан под WEBrick
10 июн 2026, 01:17
10 июн 2026, 01:17
ea808d3
Код
Авторство
О чём код?
#!/usr/bin/env ruby # frozen_string_literal: true require 'webrick' require 'rack' require 'stringio' require_relative '../lib/journal' PORT = (ARGV[0] || 9292).to_i HOST = 'localhost' PUBLIC_DIR = File.expand_path('../public', __dir__) rack_app = Rack::Builder.new do run Journal::HTTP::App.new end.to_app server = WEBrick::HTTPServer.new( BindAddress: HOST, Port: PORT, Logger: WEBrick::Log.new($stdout), AccessLog: [[$stdout, WEBrick::AccessLog::COMBINED_LOG_FORMAT]] ) server.mount('/css', WEBrick::HTTPServlet::FileHandler, File.join(PUBLIC_DIR, 'css')) server.mount_proc('/') do |req, res| env = { 'REQUEST_METHOD' => req.request_method, 'SCRIPT_NAME' => '', 'PATH_INFO' => req.path, 'QUERY_STRING' => req.query_string.to_s, 'SERVER_NAME' => HOST, 'SERVER_PORT' => PORT.to_s, 'CONTENT_TYPE' => req['content-type'].to_s, 'CONTENT_LENGTH' => req['content-length'].to_s, 'rack.input' => StringIO.new(req.body.to_s), 'rack.errors' => $stderr, 'rack.url_scheme' => 'http', 'rack.multithread' => false, 'rack.multiprocess' => false, 'rack.run_once' => false, } req.header.each do |key, val| env['HTTP_' + key.upcase.tr('-', '_')] ||= val.join(', ') end status, headers, body = rack_app.call(env) res.status = status headers.each { |k, v| res[k] = v } res.body = body.map(&:to_s).join end puts "Электронный журнал запущен: http://#{HOST}:#{PORT}" puts "Статика: #{PUBLIC_DIR}" puts "Для остановки нажмите Ctrl+C" trap('INT') { server.shutdown } trap('TERM') { server.shutdown } server.start