Class: DeeBee::FileRotation

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/dee_bee/file_rotation.rb

Constant Summary

Constants included from Helpers

Helpers::DEFAULT_DAYS_TO_KEEP_DAILY_FILES, Helpers::DEFAULT_DAYS_TO_KEEP_ORPHANS, Helpers::ONE_MONTH

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#age_in_days, #copy_files_of_pattern_to_directoy, #move_files_of_pattern_to_directoy, #remove_files_not_containing_substrings, #run_command, #symbolize_keys, #time_elapsed_for

Constructor Details

#initialize(configuration = DeeBee::Configuration.new) ⇒ FileRotation

Returns a new instance of FileRotation.



7
8
9
10
11
# 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

Instance Attribute Details

#days_to_keep_daily_filesObject (readonly)

Returns the value of attribute days_to_keep_daily_files.



5
6
7
# File 'lib/dee_bee/file_rotation.rb', line 5

def days_to_keep_daily_files
  @days_to_keep_daily_files
end

#directoryObject (readonly)

Returns the value of attribute directory.



5
6
7
# File 'lib/dee_bee/file_rotation.rb', line 5

def directory
  @directory
end

#file_prefixObject (readonly)

Returns the value of attribute file_prefix.



5
6
7
# File 'lib/dee_bee/file_rotation.rb', line 5

def file_prefix
  @file_prefix
end

Instance Method Details

#executeObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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