Resque n'est pas ramasser le Redis paramètres de configuration
Je vais avoir des imprévus et des problèmes importants en essayant d'obtenir une application Rails, l'exécution en vertu de la Licorne, pour se connecter à un mot de passe protégé Redis serveur.
À l'aide de bundle exec rails c production
sur la ligne de commande, je peux émettre des commandes à travers Resque.redis. Cependant, il semble que ma configuration est perdu quand il est fourchue en vertu de la Licorne.
À l'aide d'un non-mot de passe-protégés Redis serveur Fonctionne, tout Simplement. Cependant, j'ai l'intention d'exécuter les travailleurs sur d'autres serveurs que celui où le Redis serveur de vie, donc j'ai besoin de cela pour être protégé par mot de passe.
J'ai aussi eu du succès en utilisant un mot de passe protégé (en utilisant la même technique) mais en utilisant des Passagers plutôt que de Licorne.
J'ai la configuration suivante:
# config/resque.yml
development: localhost:6379
test: localhost:6379
production: redis://user:[email protected]:6379
.
# config/initializers/redis.rb
rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..'
rails_env = ENV['RAILS_ENV'] || 'development'
$resque_config = YAML.load_file(rails_root + '/config/resque.yml')
uri = URI.parse($resque_config[rails_env])
Resque.redis = Redis.new(host: uri.host, port: uri.port, password: uri.password)
.
# unicorn.rb bootup file
preload_app true
before_fork do |server, worker|
Redis.current.quit
end
after_fork do |server, worker|
Redis.current.quit
end
.
Vous devez vous connecter pour publier un commentaire.
Mis à JOUR idée Complètement différente basée sur @lmarlow commentaire un resque problème.
Je parie que ça casse l'endroit d'où vous Redis ~>3 (je veux dire le ruby version du client, pas la version serveur).
De cette écriture, Resque besoins Redis ~>2, mais ne spécifie pas que dans son gemspec. Par conséquent, vous devez l'aider à sortir en ajoutant ceci à votre Gemfile:
Aussi, assurez-vous que bundler est utilisé partout. Sinon, si votre système a une nouvelle version de la Redis gem, il va s'habituer et Resque échouera comme avant.
Enfin, un cosmétique remarque... vous pouvez simplifier la configuration pour l':
et puis
Resque.redis = "redis://user:[email protected]:6379"
mais hélas, sans succès. Resque les travailleurs, les Rails web app ne parvient pas à l'utiliser. Si je change le port, les travailleurs de cette piste, l'app ne fonctionne pas.Resque.redis
?Resque.redis.quit
suivie par le mêmeResque.redis = "url"
commande fonctionne à partir de la console.Ok, pour le bien d'autres personnes qui pourraient être googler ce problème, j'ai résolu ce problème pour moi au moins
Problème de base est l'appel de Redis.nouveau autres endroits dans le code ,par exemple dans votre geocoder de l'installation ou de la licorne fichier de config.
assurez-vous que chaque fois que vous appelez initialiser le Redis vous passez dans les valeurs appropriées
par exemple, quelque chose comme
partout et vous ne devriez jamais avoir
que sa valeur par défaut est localhost et le port par défaut
Cela a été utile pour moi:
source: https://github.com/redis/redis-rb/blob/master/examples/unicorn/unicorn.rb
Ce qui a fonctionné pour moi a été la licorne config ici: https://stackoverflow.com/a/14636024/18706
Je pense que le problème était avec Resque-web. Son fichier de configuration, ils en ont fixé maintenant. Dans la version 0.0.11, ils mentionnent dans un commentaire ainsi : https://github.com/resque/resque-web/blob/master/config/initializers/resque_config.rb#L3
Plus tôt, leur fichier ressemble à ceci : https://github.com/resque/resque-web/blob/v0.0.9/config/initializers/resque_config.rb
Et, si, en raison de toutes les raisons, vous ne pouvez pas mettre à niveau, puis essayez plutôt de définir la variable env
RAILS_RESQUE_REDIS=<host>:<port>
au lieu de cela, comme les Initialiseurs de chargement après le il essaie de se connecter redis(et échoue).