Acabei de mudar de cookie usando o armazenamento de sessão para redis. A configuração é como abaixo:
# Gemfile
gem "redis-rails", group: :production
# config/initializers/session_store.rb
if ENV["RAILS_ENV"] == "production"
Rails.application.config.session_store :redis_store, redis_server: ENV["REDISCLOUD_URL"], expires_in: 60.minutes
else
Rails.application.config.session_store :cookie_store, key: "_marketplace_session"
end
No entanto, lembro-me que, ao configurar o unicórnio, tenho que cuidar da conexão externa. Este é um exemplo de Resque
before_fork do |server, worker|
# If you are using Redis but not Resque, change this
if defined?(Resque)
Resque.redis.quit
Rails.logger.info("Disconnected from Redis")
end
end
after_fork do |server, worker|
# If you are using Redis but not Resque, change this
if defined?(Resque)
Resque.redis = ENV["<REDIS_URI>"]
Rails.logger.info("Connected to Redis")
end
end
Eu também tenho que desconectar e reconectar do Redis na configuração do Unicorn? Eu só uso o Redis como armazenamento de sessão e nada mais.
Qualquer entrada é apreciada.
Respostas:
1 para resposta № 1Como o redis-store usa o redis-rb, você precisa criar a conexão após os garfos do Unicorn. Então você tem que fazer algo parecido com o que você faz com o Resque se a conexão já estiver aberta.
Aqui está um exemplo de código:
after_fork do |server, worker|
# Anything else you may have
# ...
Rails.cache.reconnect
end
Essa chamada para reconectar garantirá que cada processo use seu próprio cliente Redis.