我正在尝试将 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':无法分配请求的地址 -连接(2) (Errno::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 `connect'
当我推送到 heroku 时,错误变为:
/app/vendor/bundle/ruby/1.9.1/gems/redis-3.0.1/lib/redis/client.rb:260:in `rescue inestablish_connection':连接到 barb.redistogo.com 上的 Redis 时超时: 0 (Redis::CannotConnectError)
如果我进入 IRB,需要 redis 并使用我创建的完全相同的 stats_connect() 方法,redis 工作得很好,我可以访问所有内容并创建密钥。
这是怎么回事?我完全被难住了。