Сначала вот как создать простую загрузку файлов с помощью sinatra: Загрузка файлов с помощью Sinatra
Итак, теперь для запуска веб-сервера с thin можно сделать это в своем коде:
class MyWebApp < Sinatra::Base
# here goes the sinatra app code
post '/something' do
# ...
end
end
EM::run do
Thin::Server.start('0.0.0.0', 8000) do
map('/'){ run MyWebApp.new }
end
end
thin использует eventmachine для внутренних целей, я полагаю, webrick использует потоки, но, честно говоря, я никогда не задумывался об этом.
Вы должны использовать apache или nginx перед процессом ruby, по крайней мере, для файлазагрузить (я думаю, что веб-сокеты не будут работать через него).Я могу включить простую конфигурацию nginx, если вам нужно (просто нужно найти ее на моем диске xD).
Редактировать: Другое решение - использовать Голиафа в качестве веб-сервера, у вас есть пример здесь: https://github.com/postrank-labs/goliath/blob/master/examples/async_upload.rb Если вам не нужно отображать процесс загрузки, вам следует использовать sinatra + nginx / apache.