Class: Mys3ql::S3

Inherits:
Object
  • Object
show all
Includes:
Shell
Defined in:
lib/mys3ql/s3.rb

Instance Method Summary collapse

Methods included from Shell

#log, #run

Constructor Details

#initialize(config) ⇒ S3



8
9
10
# File 'lib/mys3ql/s3.rb', line 8

def initialize(config)
  @config = config
end

Instance Method Details

#delete_bin_logsObject



22
23
24
25
26
27
# File 'lib/mys3ql/s3.rb', line 22

def delete_bin_logs
  each_bin_log do |file|
    file.delete
    log "s3: deleted #{file.key}"
  end
end

#each_bin_log(after = nil, &block) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/mys3ql/s3.rb', line 29

def each_bin_log(after = nil, &block)
  if after && after !~ /^\d{6}$/
    puts 'Binary log file number must be 6 digits.'
    exit 1
  end

  bucket.objects(prefix: bin_logs_prefix)
        .sort_by { |file| file.key[/\d+/].to_i }
        .select  { |file| after.nil? || (file.key[/\d+/].to_i > after.to_i) }
        .each do |file|
    yield file
  end
end

#retrieve(s3_file, local_file) ⇒ Object



43
44
45
46
# File 'lib/mys3ql/s3.rb', line 43

def retrieve(s3_file, local_file)
  key = (s3_file == :latest) ? key_for(:latest) : s3_file.key
  get key, local_file
end

#store(file, dump = true) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/mys3ql/s3.rb', line 12

def store(file, dump = true)
  key = key_for(dump ? :dump : :bin_log, file)
  s3_file = save file, key
  if dump && s3_file
    copy_key = key_for :latest
    s3_file.copy_to bucket: bucket_name, key: copy_key
    log "s3: copied #{key} to #{copy_key}"
  end
end