Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update retrieving database config hash for Rails >= 6.1 #70

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions lib/database_rewinder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def database_configuration
end

def create_cleaner(connection_name)
config = database_configuration[connection_name] or raise %Q[Database configuration named "#{connection_name}" is not configured.]
config = get_config_from(connection_name) or raise %Q[Database configuration named "#{connection_name}" is not configured.]

Cleaner.new(config: config, connection_name: connection_name, only: @only, except: @except).tap {|c| @cleaners << c}
end
Expand Down Expand Up @@ -82,16 +82,28 @@ def all_table_names(connection)
end
end

def get_config_from(connection_name)
if Gem::Version.new(Rails.version) >= Gem::Version.new("6.0.0")
database_configuration.configs_for(env_name: connection_name).first.configuration_hash
Comment on lines +86 to +87
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

configs_for is available on Rails 6.0 but configuration_hash is only available on Rails 6.1. This causes the error on the build.

else
database_configuration[connection_name]
end
end

def get_cache_key(connection_pool)
if connection_pool.respond_to?(:db_config) # ActiveRecord >= 6.1
connection_pool.db_config.config
if Gem::Version.new(Rails.version) >= Gem::Version.new("6.0.0")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this check? The line above already checks for ActiveRecord >= 6.1. In any case, configuration_hash is only available on Rails 6.1.

connection_pool.db_config.configuration_hash
else
connection_pool.db_config.config
end
else
connection_pool.spec.config
end
end
end

private_class_method :get_cache_key
private_class_method :get_config_from, :get_cache_key
end

begin
Expand Down
2 changes: 1 addition & 1 deletion lib/database_rewinder/cleaner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def initialize(config: nil, connection_name: nil, only: nil, except: nil)
end

def db
config['database']
config.fetch('database') { config[:database] }
end

def clean(multiple: true)
Expand Down