Вот рабочий пример, я удалил sinatra / sinatra, потому что я не чувствую, что это необходимо, и я не мог заставить его работать:
Gemfile:
source :rubygems
gem 'thin'
gem 'rack-fiber_pool'
gem 'hiredis'
gem 'sinatra'
gem 'em-synchrony'
gem 'redis'
config.ru:
require 'rubygems'
require 'bundler/setup'
require 'sinatra/base'
require 'redis/connection/synchrony'
require 'redis'
require 'rack/fiber_pool'
class App < Sinatra::Base
set :template_path, '/tmp'
def initialize
super
@redis = EventMachine::Synchrony::ConnectionPool.new(size: 2) do
Redis.new
end
end
get '/' do
@redis.multi do |r|
r.set('v', "value2")
r.set('v2', '43')
end
@redis.get('v')
end
end
use Rack::FiberPool
use Rack::CommonLogger
run App
И запустить его с (в той же папке):
* * 1010
В реальном приложении вы бы удалили код приложения из файла config.ru и добавили требование, но, по крайней мере, оно дает вам начало:)