diff options
author | Guilherme Mansur <guilherme.mansur@shopify.com> | 2019-06-10 16:22:29 -0400 |
---|---|---|
committer | Guilherme Mansur <guilherme.mansur@shopify.com> | 2019-06-17 14:00:53 -0400 |
commit | fe30211574648fa21bff958a3cf952fd0c20c3b1 (patch) | |
tree | d0f4c8b65fadf52ea0b0474c7b646b216e5b4a9f /activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | |
parent | c65acad0df6b332324c24e725c7d581bd76f9760 (diff) | |
download | rails-fe30211574648fa21bff958a3cf952fd0c20c3b1.tar.gz rails-fe30211574648fa21bff958a3cf952fd0c20c3b1.tar.bz2 rails-fe30211574648fa21bff958a3cf952fd0c20c3b1.zip |
Add database_exists? method to connection adapters
When SQLite connects it will silently create a database if the database does not
exist. This behaviour causes different issues because of inconsistent behaviour
between adapters: #36383, #32914. This commit adds a `database_exists?` method
as a way to check the database without creating it. This is a stepping stone to
fully resolving the above issues.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index e6302112de..3a1edfc855 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -98,6 +98,16 @@ module ActiveRecord configure_connection end + def self.database_exists?(config) + config = config.symbolize_keys + if config[:database] == ":memory:" + return true + else + database_file = defined?(Rails.root) ? File.expand_path(config[:database], Rails.root) : config[:database] + File.exist?(database_file) + end + end + def supports_ddl_transactions? true end |