class DeeBee::FileRotation

Attributes

days_to_keep_daily_files[R]
directory[R]
file_prefix[R]

Public Class Methods

new(configuration = DeeBee::Configuration.new) click to toggle source
# File lib/dee_bee/file_rotation.rb, line 7
def initialize (configuration = DeeBee::Configuration.new)
  @directory =  configuration.settings['file_rotation']['directory']
  @file_prefix =  configuration.settings['file_rotation']['file_prefix']
  @days_to_keep_daily_files = configuration.settings['file_rotation']['days_to_keep_daily_files'] || DEFAULT_DAYS_TO_KEEP_DAILY_FILES
end

Public Instance Methods

execute() click to toggle source
# File lib/dee_bee/file_rotation.rb, line 13
def execute
  validate_settings

  puts "\nRotating files..."
  time_elapsed_for("Rotate files") do
    puts "  Copy monthly files into /monthly"
    copy_files_of_pattern_to_directoy :directory => directory,
      :pattern        => "#{file_prefix}*[0-9][0-9][0-9][0-9][0-9][0-9]01_[0-9][0-9][0-9][0-9][0-9][0-9].sql.gz",
      :new_directory => File.join([directory, 'monthly'])

    puts "  Copy all files into /daily"
    move_files_of_pattern_to_directoy :directory => directory,
      :pattern       => "#{file_prefix}*.sql.gz",
      :new_directory => File.join([directory, 'daily'])

    puts "  Remove /daily files older than #{days_to_keep_daily_files} days"
    remove_files_not_containing_substrings :directory => File.join([directory, 'daily']),
      :substrings => substrings_for_files_to_keep
  end
end

Private Instance Methods

substrings_for_files_to_keep() click to toggle source
# File lib/dee_bee/file_rotation.rb, line 41
def substrings_for_files_to_keep
  (0..(days_to_keep_daily_files - 1)).collect{ |days_ago| (Date.today - days_ago).strftime("%Y%m%d_") }
end
validate_settings() click to toggle source
# File lib/dee_bee/file_rotation.rb, line 36
def validate_settings
  raise "File Rotation Failed: 'directory' setting not found" unless !!directory
  raise "File Rotation Failed: 'file_prefix' setting not found" unless !!file_prefix
end