Вы можете запустить две разные копии приложения, используя одну и ту же базу данных:
ruby myapp.rb -p 80 &
ruby myapp.rb -p 4567 &
Они будут выполняться в двух отдельных процессах Ruby, что может вызвать или не вызвать проблему (в зависимости от того, храните ли вы какую-либо информацию в процессе). Однако сеансы на основе файлов cookie по умолчанию работают даже между процессами:
require 'sinatra'
enable :sessions
get '/in/:msg' do
session[:msg] = params[:msg]
"I stored #{session[:msg]}"
end
get '/out' do
"Here you go: #{session[:msg]}"
end
В действии:
phrogz$ ruby sessions.rb -p 3000 &
[1] 58698
phrogz$ ruby sessions.rb -p 3001 &
[1] 58699
phrogz$ curl -b cookies.txt -c cookies.txt http://localhost:3000/in/foo
I stored foo
phrogz$ curl -b cookies.txt -c cookies.txt http://localhost:3000/out
Here you go: foo
phrogz$ curl -b cookies.txt -c cookies.txt http://localhost:3001/out
Here you go: foo