簡體   English   中英

無法從Sinatra連接到Redis

[英]Can't connect to Redis from Sinatra

我正在嘗試將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)(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,buin in establish_connection':在barb.redistogo.com上超時連接到Redis: 0(Redis :: CannotConnectError)

如果我彈出IRB,需要redis並使用我創建的完全相同的stats_connect()方法,redis工作正常,我可以訪問所有內容並創建密鑰。

這是怎么回事? 我完全難過了。

你確定你的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM