Set config.cache_store in environments file. (#3219)
* Set config.cache_store in application.rb * Set config.cache_store in environments. * fix code format.
This commit is contained in:
		@@ -13,6 +13,8 @@ require_relative '../lib/mastodon/version'
 | 
			
		||||
 | 
			
		||||
Dotenv::Railtie.load
 | 
			
		||||
 | 
			
		||||
require_relative '../lib/mastodon/redis_config'
 | 
			
		||||
 | 
			
		||||
module Mastodon
 | 
			
		||||
  class Application < Rails::Application
 | 
			
		||||
    # Settings in config/environments/* take precedence over those specified here.
 | 
			
		||||
 
 | 
			
		||||
@@ -50,6 +50,9 @@ Rails.application.configure do
 | 
			
		||||
  # Use a different logger for distributed setups.
 | 
			
		||||
  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
 | 
			
		||||
 | 
			
		||||
  # Use a different cache store in production.
 | 
			
		||||
  config.cache_store = :redis_store, ENV['REDIS_URL'], REDIS_CACHE_PARAMS
 | 
			
		||||
 | 
			
		||||
  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
 | 
			
		||||
  # config.action_controller.asset_host = 'http://assets.example.com'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,30 +1,14 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
if ENV['REDIS_URL'].blank?
 | 
			
		||||
  password = ENV.fetch('REDIS_PASSWORD') { '' }
 | 
			
		||||
  host     = ENV.fetch('REDIS_HOST') { 'localhost' }
 | 
			
		||||
  port     = ENV.fetch('REDIS_PORT') { 6379 }
 | 
			
		||||
  db       = ENV.fetch('REDIS_DB') { 0 }
 | 
			
		||||
 | 
			
		||||
  ENV['REDIS_URL'] = "redis://#{password.blank? ? '' : ":#{password}@"}#{host}:#{port}/#{db}"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
redis_connection = Redis.new(
 | 
			
		||||
  url: ENV['REDIS_URL'],
 | 
			
		||||
  driver: :hiredis
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
cache_params = { expires_in: 10.minutes }
 | 
			
		||||
 | 
			
		||||
namespace = ENV.fetch('REDIS_NAMESPACE') { nil }
 | 
			
		||||
 | 
			
		||||
if namespace
 | 
			
		||||
  Redis.current = Redis::Namespace.new(namespace, redis: redis_connection)
 | 
			
		||||
  cache_params[:namespace] = namespace + '_cache'
 | 
			
		||||
else
 | 
			
		||||
  Redis.current = redis_connection
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Rails.application.configure do
 | 
			
		||||
  config.cache_store = :redis_store, ENV['REDIS_URL'], cache_params
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								lib/mastodon/redis_config.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								lib/mastodon/redis_config.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
if ENV['REDIS_URL'].blank?
 | 
			
		||||
  password = ENV.fetch('REDIS_PASSWORD') { '' }
 | 
			
		||||
  host     = ENV.fetch('REDIS_HOST') { 'localhost' }
 | 
			
		||||
  port     = ENV.fetch('REDIS_PORT') { 6379 }
 | 
			
		||||
  db       = ENV.fetch('REDIS_DB') { 0 }
 | 
			
		||||
 | 
			
		||||
  ENV['REDIS_URL'] = "redis://#{password.blank? ? '' : ":#{password}@"}#{host}:#{port}/#{db}"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
namespace = ENV.fetch('REDIS_NAMESPACE') { nil }
 | 
			
		||||
cache_namespace = namespace ? namespace + '_cache' : 'cache'
 | 
			
		||||
REDIS_CACHE_PARAMS = {
 | 
			
		||||
  expires_in: 10.minutes,
 | 
			
		||||
  namespace: cache_namespace,
 | 
			
		||||
}.freeze
 | 
			
		||||
		Reference in New Issue
	
	Block a user