В Ruby чувствительна к регистру, я бы попытался заменить REDIS.SET на REDIS.set и REDIS.GET на REDIS.get. Вы можете найти документацию по клиенту Redis здесь:
https://github.com/ezmobius/redis-rb
Я протестировал ваш пример с ruby 1.8.7. (по умолчанию на моей коробке Linux).
После установки гемов sinatra, haml, redis и hiredis я изменил код следующим образом:
<code>require 'rubygems'
require 'sinatra'
require 'redis'
require 'uri'
configure do
REDISTOGO_URL = "redis://localhost:6379/"
uri = URI.parse(REDISTOGO_URL)
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
end
get '/' do
"Hello"
haml :index
end
post '/shorten' do
a = rand(9999)
REDIS.set(a.to_s, "http://"+params[:long])
"<pre>http://localhost:4567/get/#{a}
»
конец
get '/ get /: url' do
перенаправить REDIS.get (params [: url])
конец
Я добавил следующий шаблон в views / index.haml.
!!!
%html
%head
%title My Sinatra Website
%body
%h1 Welcome
%p
Welcome to my website made with Sinatra and HAML
%form{ :action => "/shorten", :method=>"POST" }
%fieldset
%input{ :type =>"text", :name=>"long" }
%input{ :type =>"submit" }
Как только Redis запущен на порту 6379 и sinatra на порту 4567, он работает как чудо.
Я предлагаю вам проверить вашу установку ruby и попытаться получить доступ к Redis из ruby с помощью простого сценария не sinatra.
UPDATE:
Сообщение об ошибке является своеобразным, потому что обычно, когда неизвестная команда отправляется на сервер, предоставляется неисправная команда:
ERR unknown command 'dummy'
пока у вас просто есть:
ERR unknown command
На самом деле это конкретное исправление было представлено на сервере Redis более 2 лет назад (в декабре 2009 года) - вечность для Redis.
https://github.com/antirez/redis/commit/2c14807b2dd5c15f1471bec32a7c6dbb077720ee
Другими словами, вы пытаетесь использовать очень старую (т.е. до 1-3) версию сервера Redis с последней версией клиента Redis ruby gem, который, вероятно, больше не поддерживает первоначальный протокол. Возможно, вы захотите скомпилировать и установить последнюю версию сервера Redis (это легко), она должна работать лучше.