Replace Makara with an initial Rails 6 role based splitting method.
This commit is contained in:
committed by
admin
parent
31922ea58b
commit
473c48b2aa
@@ -6,21 +6,24 @@ default: &default
|
||||
sslmode: <%= ENV['DB_SSLMODE'] || "prefer" %>
|
||||
|
||||
development:
|
||||
<<: *default
|
||||
adapter: postgresql_makara
|
||||
prepared_statements: false
|
||||
database: <%= ENV['DB_NAME'] || 'gabsocial_development' %>
|
||||
username: <%= ENV['DB_USER'] %>
|
||||
password: <%= ENV['DB_PASS'] %>
|
||||
host: <%= ENV['DB_HOST'] %>
|
||||
port: <%= ENV['DB_PORT'] %>
|
||||
makara:
|
||||
id: postgres
|
||||
sticky: true
|
||||
connections:
|
||||
- role: master
|
||||
blacklist_duration: 0
|
||||
- role: slave
|
||||
master:
|
||||
adapter: postgresql
|
||||
url: <%= ENV['DB_MASTER_URL'] %>
|
||||
pool: <%= ENV['DB_POOL'] %>
|
||||
timeout: 5000
|
||||
encoding: unicode
|
||||
slave1:
|
||||
adapter: postgresql
|
||||
url: <%= ENV['DB_SLAVE1_URL'] %>
|
||||
pool: <%= ENV['DB_POOL'] %>
|
||||
timeout: 5000
|
||||
encoding: unicode
|
||||
slave2:
|
||||
adapter: postgresql
|
||||
url: <%= ENV['DB_SLAVE1_URL'] %>
|
||||
pool: <%= ENV['DB_POOL'] %>
|
||||
timeout: 5000
|
||||
encoding: unicode
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
@@ -33,12 +36,34 @@ test:
|
||||
host: <%= ENV['DB_HOST'] %>
|
||||
port: <%= ENV['DB_PORT'] %>
|
||||
|
||||
production:
|
||||
<<: *default
|
||||
database: <%= ENV['DB_NAME'] || 'gabsocial_production' %>
|
||||
username: <%= ENV['DB_USER'] || 'gabsocial' %>
|
||||
password: <%= ENV['DB_PASS'] || '' %>
|
||||
host: <%= ENV['DB_HOST'] || 'localhost' %>
|
||||
port: <%= ENV['DB_PORT'] || 5432 %>
|
||||
prepared_statements: <%= ENV['PREPARED_STATEMENTS'] || 'true' %>
|
||||
#production:
|
||||
# <<: *default
|
||||
# database: <%= ENV['DB_NAME'] || 'gabsocial_production' %>
|
||||
# username: <%= ENV['DB_USER'] || 'gabsocial' %>
|
||||
# password: <%= ENV['DB_PASS'] || '' %>
|
||||
# host: <%= ENV['DB_HOST'] || 'localhost' %>
|
||||
# port: <%= ENV['DB_PORT'] || 5432 %>
|
||||
# prepared_statements: <%= ENV['PREPARED_STATEMENTS'] || 'true' %>
|
||||
|
||||
production:
|
||||
master:
|
||||
adapter: postgresql
|
||||
url: <%= ENV['DB_MASTER_URL'] %>
|
||||
pool: <%= ENV['DB_POOL'] %>
|
||||
timeout: 5000
|
||||
encoding: unicode
|
||||
slave1:
|
||||
adapter: postgresql
|
||||
url: <%= ENV['DB_SLAVE1_URL'] %>
|
||||
pool: <%= ENV['DB_POOL'] %>
|
||||
timeout: 5000
|
||||
encoding: unicode
|
||||
slave2:
|
||||
adapter: postgresql
|
||||
url: <%= ENV['DB_SLAVE1_URL'] %>
|
||||
pool: <%= ENV['DB_POOL'] %>
|
||||
timeout: 5000
|
||||
encoding: unicode
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ Rails.application.configure do
|
||||
# DatabaseSelector middleware is designed as such you can define your own
|
||||
# strategy for connection switching and pass that into the middleware through
|
||||
# these configuration options.
|
||||
# config.active_record.database_selector = { delay: 2.seconds }
|
||||
# config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
|
||||
# config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
|
||||
config.active_record.database_selector = { delay: 2.seconds }
|
||||
config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
|
||||
config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
|
||||
end
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
Warden::Manager.after_set_user except: :fetch do |user, warden|
|
||||
if user.session_active?(warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'])
|
||||
session_id = warden.cookies.signed['_session_id'] || warden.raw_session['auth_id']
|
||||
else
|
||||
session_id = user.activate_session(warden.request)
|
||||
session_id = nil
|
||||
ActiveRecord::Base.connected_to(role: :writing) do
|
||||
if user.session_active?(warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'])
|
||||
session_id = warden.cookies.signed['_session_id'] || warden.raw_session['auth_id']
|
||||
else
|
||||
session_id = user.activate_session(warden.request)
|
||||
end
|
||||
end
|
||||
|
||||
warden.cookies.signed['_session_id'] = {
|
||||
@@ -14,17 +17,20 @@ Warden::Manager.after_set_user except: :fetch do |user, warden|
|
||||
end
|
||||
|
||||
Warden::Manager.after_fetch do |user, warden|
|
||||
if user.session_active?(warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'])
|
||||
warden.cookies.signed['_session_id'] = {
|
||||
value: warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'],
|
||||
expires: 1.year.from_now,
|
||||
httponly: true,
|
||||
secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
|
||||
}
|
||||
else
|
||||
warden.logout
|
||||
throw :warden, message: :unauthenticated
|
||||
ActiveRecord::Base.connected_to(role: :writing) do
|
||||
if user.session_active?(warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'])
|
||||
warden.cookies.signed['_session_id'] = {
|
||||
value: warden.cookies.signed['_session_id'] || warden.raw_session['auth_id'],
|
||||
expires: 1.year.from_now,
|
||||
httponly: true,
|
||||
secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
|
||||
}
|
||||
else
|
||||
warden.logout
|
||||
throw :warden, message: :unauthenticated
|
||||
end
|
||||
end
|
||||
warden.cookies.signed['_session_id']
|
||||
end
|
||||
|
||||
Warden::Manager.before_logout do |_, warden|
|
||||
|
||||
@@ -16,9 +16,6 @@ Rails.application.routes.draw do
|
||||
mount PgHero::Engine, at: 'pghero', as: :pghero
|
||||
end
|
||||
|
||||
Doorkeeper::AccessToken.connection.stick_to_master!
|
||||
Doorkeeper::AccessGrant.connection.stick_to_master!
|
||||
SessionActivation.connection.stick_to_master!
|
||||
SessionActivation.record_timestamps = false
|
||||
|
||||
use_doorkeeper do
|
||||
|
||||
Reference in New Issue
Block a user