Created
May 13, 2016 23:10
-
-
Save derwiki/81ea11ffd8dd23d9cae7b706dea2dbc1 to your computer and use it in GitHub Desktop.
`postdeploy` script for Heroku Review Apps that replaces the default Postgres DB with a MySQL DB from ClearDB.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/app/bin/ruby | |
require 'platform-api' | |
cleardb_url = ENV['CLEARDB_DATABASE_URL'] | |
if cleardb_url.nil? || cleardb_url == '' | |
puts "Error: CLEARDB_DATABASE_URL not set" | |
exit -1 | |
end | |
target_app = ENV['HEROKU_APP_NAME'] | |
puts "target_app: #{ target_app }" | |
mysql_url = cleardb_url.sub('mysql', 'mysql2') | |
puts "mysql_url: #{ mysql_url }" | |
heroku = PlatformAPI.connect_oauth('REDACTED') | |
postgres_addon = heroku.addon.list_by_app(target_app).find do |addon| | |
addon.dig('addon_service', 'name') == "heroku-postgresql" | |
end | |
puts "Postgres addon: '#{ postgres_addon.inspect }'" | |
if postgres_addon | |
puts "Deleting postgres addon..." | |
heroku.addon.delete(target_app, postgres_addon["id"]) | |
end | |
puts "Promoting '#{ mysql_url }' to DATABASE_URL for '#{ target_app }'..." | |
begin | |
heroku.config_var.update(target_app, { 'DATABASE_URL' => mysql_url }) | |
rescue Excon::Errors::UnprocessableEntity => e | |
puts "#{ e.class }: #{ e.message }" | |
exit (-1) | |
end | |
puts "1 DATABASE_URL: #{ ENV['DATABASE_URL'] }" | |
`export DATABASE_URL='#{ mysql_url }'` | |
puts "2 DATABASE_URL: #{ ENV['DATABASE_URL'] }" | |
ENV['DATABASE_URL'] = mysql_url | |
puts "3 DATABASE_URL: #{ ENV['DATABASE_URL'] }" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment