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