2012-09-04 138 views
3

我試圖Redis的掛鉤到一個西納特拉的應用程序連接到Redis的我的建築:無法從西納特拉

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

require './startup' 

def stats_connect 
uri = URI.parse('redis://redistogo:[email protected]: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 '連接」

當我推到Heroku的,錯誤更改爲:

/app/vendor/bundle/ruby/1.9.1/gems/redis-3.0.1/lib/redis/client.rb:260:在`rescue in establish_connection'中:在barb.redistogo.com:0(Redis :: CannotConnectError)上超時連接到Redis

如果我彈入IRB,需要redis並使用相同的確切stats_connect()me我創建的方法,redis工作得很好,我可以訪問所有內容並創建密鑰。

發生了什麼事?我完全被難住了。

回答

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) 
+0

得到它排序 - 根據它試圖日誌與barb.redistogo.com:0相連,因爲事實證明,URI解析了端口爲零的地址。不知道爲什麼。 –