无法从Sinatra连接到Redis

时间:2012-09-04 00:16:56

标签: ruby heroku sinatra redis redistogo

我正在尝试将redis连接到我正在构建的Sinatra应用程序:

require 'rubygems'
require 'sinatra'
#require 'sinatra/synchrony'
require 'redis'
require 'mongo_mapper'

require './startup'

def stats_connect
 uri = URI.parse('redis://redistogo:xxxxxxxxxxxxxxxxxx@barb.redistogo.com:1337/')
 puts 'connecting to... ' + uri.to_s
 redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
 puts "Statistics connected >> OK" if redis
 return redis
end

stats = stats_connect

post('/') do
 #...
end

如果我与领班运行以下应用程序,我会收到此错误:

  • 18:09:02 web.1 |以pid 825开始

  • 18:09:08 web.1 | /Users/vladdypwnz/.rvm/gems/ruby-1.9.2-p180/gems/redis-3.0.1/lib/redis/connection/ruby.rb:113:in `connect_nonblock':无法分配请求的地址 - connect(2) (错误:: EADDRNOTAVAIL)

  • 18:09:08 web.1 |从 /Users/vladdypwnz/.rvm/gems/ruby-1.9.2-p180/gems/redis-3.0.1/lib/redis/connection/ruby.rb:113:in `'连接

当我推送到heroku时,错误更改为:

/app/vendor/bundle/ruby/1.9.1/gems/redis-3.0.1/lib/redis/client.rb:260:in,buin in establish_connection':超时连接到Redis barb.redistogo.com:0(Redis :: CannotConnectError)

如果我弹出IRB,需要redis并使用我创建的完全相同的stats_connect()方法,redis工作正常,我可以访问所有内容并创建密钥。

发生了什么事?我完全难过了。

1 个答案:

答案 0 :(得分:4)

你确定你的redis在barb.redistogo.com:1337上运行吗? 几周前,我使用redis将应用程序部署到heroku并使用了此配置:

uri = URI.parse(ENV["REDISTOGO_URL"])
redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

在本地运行它我做了:

redis = Redis.new(:host => "localhost", :port => 6379)
相关问题