无法从 Sinatra 连接到 Redis



我正试图将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/rub.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/rub.rb:113:in`连接

当我推到heroku时,错误变为:

/app/vendor/bundle/ruby/1.9.1/gems/redis-3.0.1/lib/redis/client.rb:260:在"建立连接时的救援"中:连接到barb.redistogo.com:0上的redis超时(redis:CannotConnectError)

如果我进入IRB,需要redis并使用与我创建的stats_connect()方法完全相同的方法,redis工作得很好,我可以访问所有内容并创建密钥。

怎么回事?我完全被难住了。

您确定您的redis正在barb.redistogo.com:1337上运行吗?几周前,我在heroku上部署了一个使用redis的应用程序,并使用了以下配置:

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)

相关内容

  • 没有找到相关文章

最新更新