class Fourchette::Pgbackups
Public Class Methods
new()
click to toggle source
# File lib/fourchette/pgbackups.rb, line 5 def initialize @heroku = Fourchette::Heroku.new end
Public Instance Methods
copy(from, to)
click to toggle source
# File lib/fourchette/pgbackups.rb, line 9 def copy(from, to) ensure_pgbackups_is_present(from) ensure_pgbackups_is_present(to) from_url, from_name = pg_details_for(from) to_url, to_name = pg_details_for(to) @client = Heroku::Client::Pgbackups.new pgbackup_url(from) + '/api' @client.create_transfer(from_url, from_name, to_url, to_name) end
Private Instance Methods
ensure_pgbackups_is_present(heroku_app_name)
click to toggle source
# File lib/fourchette/pgbackups.rb, line 22 def ensure_pgbackups_is_present(heroku_app_name) unless existing_backups?(heroku_app_name) logger.info "Adding pgbackups to #{heroku_app_name}" @heroku.client.addon.create(heroku_app_name, { plan: 'pgbackups' }) end end
existing_backups?(heroku_app_name)
click to toggle source
# File lib/fourchette/pgbackups.rb, line 29 def existing_backups?(heroku_app_name) @heroku.client.addon.list(heroku_app_name).any? do |addon| addon['name'] == 'pgbackups' end end
pg_details_for(app_name)
click to toggle source
# File lib/fourchette/pgbackups.rb, line 35 def pg_details_for(app_name) @heroku.config_vars(app_name).each do |key, value| if key.start_with?('HEROKU_POSTGRESQL_') && key.end_with?('_URL') return [value, key] end end end
pgbackup_url(app_name)
click to toggle source
# File lib/fourchette/pgbackups.rb, line 43 def pgbackup_url(app_name) @heroku.config_vars(app_name).each do |k, v| return v if k == 'PGBACKUPS_URL' end end