Class: Database::Local
Constant Summary
Constants inherited from Base
Base::DBCONFIG_BEGIN_FLAG, Base::DBCONFIG_END_FLAG
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #dump ⇒ Object
-
#initialize(cap_instance) ⇒ Local
constructor
A new instance of Local.
-
#load(file, cleanup) ⇒ Object
cleanup = true removes the mysqldump file after loading, false leaves it in db/.
- #upload ⇒ Object
Methods inherited from Base
#compressor, #credentials, #current_time, #database, #mysql?, #postgresql?
Constructor Details
#initialize(cap_instance) ⇒ Local
Returns a new instance of Local.
152 153 154 155 156 157 158 159 160 161 |
# File 'lib/capistrano-db-tasks/database.rb', line 152 def initialize(cap_instance) super(cap_instance) @cap.info "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 |
Instance Method Details
#dump ⇒ Object
177 178 179 180 |
# File 'lib/capistrano-db-tasks/database.rb', line 177 def dump execute "#{dump_cmd} | #{compressor.compress('-', output_file)}" self end |
#load(file, cleanup) ⇒ Object
cleanup = true removes the mysqldump file after loading, false leaves it in db/
164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/capistrano-db-tasks/database.rb', line 164 def load(file, cleanup) unzip_file = File.join(File.dirname(file), File.basename(file, ".#{compressor.file_extension}")) @cap.info "executing local: #{compressor.decompress(file)} && #{import_cmd(unzip_file)}" execute("#{compressor.decompress(file)} && #{import_cmd(unzip_file)}") if cleanup @cap.info "removing #{unzip_file}" File.unlink(unzip_file) else @cap.info "leaving #{unzip_file} (specify :db_local_clean in deploy.rb to remove)" end @cap.info "Completed database import" end |
#upload ⇒ Object
182 183 184 185 |
# File 'lib/capistrano-db-tasks/database.rb', line 182 def upload remote_file = "#{@cap.current_path}/#{output_file}" @cap.upload! output_file, remote_file end |