class Database::Local
Public Class Methods
new(cap_instance)
click to toggle source
Calls superclass method
Database::Base::new
# File lib/capistrano-db-tasks/database.rb, line 156 def initialize(cap_instance) super(cap_instance) puts "Loading local database config" command = "#{Dir.pwd}/bin/rails runner \"puts '#{DBCONFIG_BEGIN_FLAG}' + ActiveRecord::Base.connection.instance_variable_get(:@config).to_yaml + '#{DBCONFIG_END_FLAG}'\"" stdout, status = Open3.capture2(command) raise "Error running command (status=#{status}): #{command}" if status != 0 config_content = stdout.match(/#{DBCONFIG_BEGIN_FLAG}(.*?)#{DBCONFIG_END_FLAG}/m)[1] @config = YAML.load(config_content).each_with_object({}) { |(k, v), h| h[k.to_s] = v } end
Public Instance Methods
dump()
click to toggle source
# File lib/capistrano-db-tasks/database.rb, line 181 def dump execute "#{dump_cmd} | #{compressor.compress('-', output_file)}" self end
load(file, cleanup)
click to toggle source
cleanup = true removes the mysqldump file after loading, false leaves it in db/
# File lib/capistrano-db-tasks/database.rb, line 168 def load(file, cleanup) unzip_file = File.join(File.dirname(file), File.basename(file, ".#{compressor.file_extension}")) puts "executing local: #{compressor.decompress(file)} && #{import_cmd(unzip_file)}" execute("#{compressor.decompress(file)} && #{import_cmd(unzip_file)}") if cleanup puts "removing #{unzip_file}" File.unlink(unzip_file) else puts "leaving #{unzip_file} (specify :db_local_clean in deploy.rb to remove)" end puts "Completed database import" end
upload()
click to toggle source
# File lib/capistrano-db-tasks/database.rb, line 186 def upload remote_file = "#{@cap.current_path}/#{output_file}" @cap.upload! output_file, remote_file end
Private Instance Methods
execute(cmd)
click to toggle source
# File lib/capistrano-db-tasks/database.rb, line 193 def execute(cmd) result = system cmd @cap.error "Failed to execute the local command: #{cmd}" unless result result end