Skip to content

Instantly share code, notes, and snippets.

@seth-macpherson
Created March 2, 2018 18:27
Show Gist options
  • Save seth-macpherson/513f8ac14173e2809031ad9ba5c0e3e4 to your computer and use it in GitHub Desktop.
Save seth-macpherson/513f8ac14173e2809031ad9ba5c0e3e4 to your computer and use it in GitHub Desktop.
Validate changes made to database.yml
# To validate the changes I made to database config I ran the following under Rails console
original = YAML.load(ERB.new(File.read("#{Rails.root}/config/database.yml")).result)
new_config = YAML.load(ERB.new(File.read("#{Rails.root}/config/database_new.yml")).result)
# require 'pp'
# pp original ->
{"local"=>
{"adapter"=>"mysql2",
"encoding"=>"utf8",
"database"=>"connect",
"username"=>"root",
"password"=>"development"},
"test"=>
{"adapter"=>"mysql2",
"encoding"=>"utf8",
"database"=>"connect_test",
"username"=>"root",
"password"=>"development"},
"dev"=>
{"adapter"=>"mysql2",
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"encoding"=>"utf8",
"database"=>"connect_dev",
"username"=>"connect_dev",
"password"=>nil,
"host"=>"connect-preprod.c90ubbnnizhv.us-west-2.rds.amazonaws.com",
"port"=>3306},
"testing"=>
{"adapter"=>"mysql2",
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"encoding"=>"utf8",
"database"=>"connect",
"username"=>"connect_testing",
"password"=>nil,
"host"=>"connect-testing.c90ubbnnizhv.us-west-2.rds.amazonaws.com",
"port"=>3306},
"staging"=>
{"adapter"=>"mysql2",
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"encoding"=>"utf8",
"database"=>"connect",
"username"=>"connect_staging",
"password"=>nil,
"host"=>"connect-staging.c90ubbnnizhv.us-west-2.rds.amazonaws.com",
"port"=>3306},
"demo"=>
{"adapter"=>"mysql2",
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"encoding"=>"utf8",
"database"=>"connect_demo",
"username"=>"connect_demo",
"password"=>nil,
"host"=>"connect-staging.c90ubbnnizhv.us-west-2.rds.amazonaws.com",
"port"=>3306},
"integration"=>
{"adapter"=>"mysql2",
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"encoding"=>"utf8",
"database"=>"connect",
"username"=>"connect_int",
"password"=>nil,
"host"=>"connect-integration.c90ubbnnizhv.us-west-2.rds.amazonaws.com",
"port"=>3306},
"preproduction"=>
{"adapter"=>"mysql2",
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"encoding"=>"utf8",
"database"=>"connect",
"username"=>"connect_preprod",
"password"=>nil,
"host"=>"connect-preprod.c90ubbnnizhv.us-west-2.rds.amazonaws.com",
"port"=>3306},
"production"=>
{"adapter"=>"mysql2",
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"encoding"=>"utf8",
"database"=>"connect",
"username"=>"connect_prod",
"password"=>nil,
"host"=>"connect.c90ubbnnizhv.us-west-2.rds.amazonaws.com",
"port"=>3306}}
# require 'pp'
# pp new_config ->
{"local"=>
{"adapter"=>"mysql2",
"database"=>"connect",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"root",
"password"=>nil},
"test"=>
{"adapter"=>"mysql2",
"database"=>"connect_test",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"root",
"password"=>nil},
"dev"=>
{"adapter"=>"mysql2",
"database"=>"connect_dev",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"connect_dev",
"password"=>nil,
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"host"=>"connect-preprod.c90ubbnnizhv.us-west-2.rds.amazonaws.com"},
"testing"=>
{"adapter"=>"mysql2",
"database"=>"connect",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"connect_testing",
"password"=>nil,
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"host"=>"connect-testing.c90ubbnnizhv.us-west-2.rds.amazonaws.com"},
"staging"=>
{"adapter"=>"mysql2",
"database"=>"connect",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"connect_staging",
"password"=>nil,
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"host"=>"connect-staging.c90ubbnnizhv.us-west-2.rds.amazonaws.com"},
"demo"=>
{"adapter"=>"mysql2",
"database"=>"connect_demo",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"connect_demo",
"password"=>nil,
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"host"=>"connect-staging.c90ubbnnizhv.us-west-2.rds.amazonaws.com"},
"integration"=>
{"adapter"=>"mysql2",
"database"=>"connect",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"connect_int",
"password"=>nil,
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"host"=>"connect-integration.c90ubbnnizhv.us-west-2.rds.amazonaws.com"},
"preproduction"=>
{"adapter"=>"mysql2",
"database"=>"connect",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"connect_preprod",
"password"=>nil,
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"host"=>"connect-preprod.c90ubbnnizhv.us-west-2.rds.amazonaws.com"},
"production"=>
{"adapter"=>"mysql2",
"database"=>"connect",
"encoding"=>"utf8",
"port"=>3306,
"username"=>"connect_prod",
"password"=>nil,
"sslca"=>"/var/www/connect/deploy-scripts/certs/rds-ca-2015-us-west-2.pem",
"host"=>"connect.c90ubbnnizhv.us-west-2.rds.amazonaws.com"}}
# Perform deep diff showing differences between a and b if there are any
def deep_diff(a, b)
(a.keys | b.keys).each_with_object({}) do |k, diff|
if a[k] != b[k]
if a[k].is_a?(Hash) && b[k].is_a?(Hash)
diff[k] = deep_diff(a[k], b[k])
else
diff[k] = [a[k], b[k]]
end
end
diff
end
end
# pp deep_diff(new_config, original) ->
# The final is that we have a port and ENV['DB_PASSWORD'] supplied to :local and :test environments
{
"local"=>{"port"=>[3306, nil], "password"=>[nil, "development"]},
"test"=>{"port"=>[3306, nil], "password"=>[nil, "development"]}
}
@chunpan
Copy link

chunpan commented Mar 2, 2018

Can you also test with not-nil ENV values for DB_DATABASE, DB_USERNAME and DB_PASSWORD?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment