2011-10-28 8 views
2

J'ai récemment déployé des expériences de test A/B en utilisant vanity dans mon instance heroku. Cependant, chaque fois que j'accéder au tableau de bord à savoir/vanité L'erreur suivante apparaît dans les journauxVanity n'utilisant pas le serveur Redis to Go sur Heroku

- ActionView::Template::Error (Connection refused - Unable to connect to Redis on 127.0.0.1:6379): 
-  1: <ul class="experiments"> 
-  2: <% experiments.sort_by { |id, experiment| experiment.created_at }.reverse.each do |id, experiment| %> 
-  3:  <li class="experiment <%= experiment.type %>" id="experiment_<%=vanity_h id.to_s %>"> 
-  4:  <%= render :file => Vanity.template("_experiment"), :locals => { :id => id, :experiment => experiment } %> 
-  5:  </li> 
- 

Cependant, la Redis aller url semble être configuré correctement et la vanité semble être en mesure d'y accéder par exemple

irb(main):011:0> Vanity.playground.connection 
=> redis://bluegill.redistogo.com:9231/0 

Quelqu'un sait ce que je pourrais faire mal?

my vanity.rb config file is fairly standard 

    development: 
     adapter: redis 
     connection: redis://localhost:6379/0 
    qa: 
     adapter: redis 
     connection: <%= ENV["REDISTOGO_URL"] %> 
    staging: 
     adapter: redis 
     connection: <%= ENV["REDISTOGO_URL"] %> 
    production: 
     adapter: redis 
     connection: <%= ENV["REDISTOGO_URL"] %> 

et aussi la ENV [ « REDISTOGO_URL »] semble correct

irb(main):012:0> ENV["REDISTOGO_URL"] 
=> "redis://redistogo:[email protected]:9231/" 

Et je peux accéder Redis du reste de l'application, il semble juste que la vanité ne le ramasser pour ce modèle ..

Répondre

3

Ok, j'ai compris celui-ci. Lorsque nous nous sommes croisés avec une licorne, je ne me suis pas reconnecté au bon serveur redis et à la place par défaut à l'hôte local. Cet extrait de code dans unicorn.rb le sort. Je suis sûr que c'est similaire pour d'autres serveurs forking aussi.

+0

peut-être que cette ligne pourrait être plus robuste Vanity.playground.reconnect! si Vanity.playground.collecting? – reillyse

+0

Comment dites-vous à Vanity d'utiliser un objet de connexion $ redis existant? Mon application utilise Redis et mon Redis a une limite de 10 connexions. J'ai Unicorn avec 3 travailleurs et 2 dynos, donc c'est 6 connexions pour mon application. Quand Vanity essaie de se connecter, il en utilise 6 autres! C'est 12 au total mais seulement 10 disponibles. Je voudrais passer dans l'objet $ redis existant et l'utiliser pour la connexion. – Chloe