From e85df170f229cbb33587a3ba97b543de70fc0d28 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Fri, 24 Nov 2023 17:08:31 +0200 Subject: [PATCH] fix connection to DB URL with underscores --- config/boot.rb | 14 ++++++++++++++ config/database.yml | 9 ++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/config/boot.rb b/config/boot.rb index a10c1c60..481cacb7 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -24,5 +24,19 @@ if ENV['RAILS_ENV'] == 'production' && ENV['SECRET_KEY_BASE'].to_s.empty? ENV['DATABASE_URL'] = ENV['DATABASE_URL'].to_s.empty? ? database_url : ENV.fetch('DATABASE_URL', nil) end +if ENV['DATABASE_URL'].to_s.split('@').last.to_s.split('/').first.to_s.include?('_') + require 'addressable' + + url = Addressable::URI.parse(ENV.fetch('DATABASE_URL', '')) + + ENV['DATABASE_HOST'] = url.host + ENV['DATABASE_PORT'] = (url.port || 5432).to_s + ENV['DATABASE_USER'] = url.user + ENV['DATABASE_PASSWORD'] = url.password + ENV['DATABASE_NAME'] = url.path.to_s.delete_prefix('/') + + ENV.delete('DATABASE_URL') +end + require 'bundler/setup' # Set up gems listed in the Gemfile. require 'bootsnap/setup' # Speed up boot time by caching expensive operations. diff --git a/config/database.yml b/config/database.yml index 6e9b1f24..a4c503ab 100644 --- a/config/database.yml +++ b/config/database.yml @@ -12,7 +12,14 @@ test: database: docuseal_test production: -<% if ENV['DATABASE_URL'].to_s.empty? %> +<% if !ENV['DATABASE_HOST'].to_s.empty? %> + <<: *default + host: <%= ENV['DATABASE_HOST'] %> + port: <%= ENV['DATABASE_PORT'] %> + username: <%= ENV['DATABASE_USER'] %> + password: <%= ENV['DATABASE_PASSWORD'] %> + database: <%= ENV['DATABASE_NAME'] %> +<% elsif ENV['DATABASE_URL'].to_s.empty? %> adapter: sqlite3 database: <%= ENV['WORKDIR'] || '.' %>/db.sqlite3 <% elsif ENV['DATABASE_URL'].match?(/\Apostgres/) %>