diff --git a/README.md b/README.md index 0230429..734a45d 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ heroku git:remote -r staging -a your-staging-app heroku git:remote -r production -a your-production-app ``` * There is a `config/database.yml` file that can be parsed as YAML for - `['development']['database']`. + `['development']['database']` or `['development']['url']`. Pipelines --------- diff --git a/lib/parity/backup.rb b/lib/parity/backup.rb index 45c870b..d81ab47 100644 --- a/lib/parity/backup.rb +++ b/lib/parity/backup.rb @@ -6,6 +6,7 @@ class Backup DATABASE_YML_RELATIVE_PATH = "config/database.yml".freeze DEVELOPMENT_ENVIRONMENT_KEY_NAME = "development".freeze DATABASE_KEY_NAME = "database".freeze + DATABASE_URL_KEY_NAME = "url".freeze def initialize(args) @from, @to = args.values_at(:from, :to) @@ -108,9 +109,14 @@ def remote_db_backup_url end def development_db - YAML.load(database_yaml_file). - fetch(DEVELOPMENT_ENVIRONMENT_KEY_NAME). - fetch(DATABASE_KEY_NAME) + environment_block = YAML.safe_load(database_yaml_file). + fetch(DEVELOPMENT_ENVIRONMENT_KEY_NAME) + if environment_block.key?(DATABASE_KEY_NAME) + environment_block.fetch(DATABASE_KEY_NAME) + elsif environment_block.key?(DATABASE_URL_KEY_NAME) + url = environment_block.fetch(DATABASE_URL_KEY_NAME) + URI(url).path.tr("/", "") + end end def database_yaml_file