diff --git a/app/models/concerns/fluentd/setting_archive/archivable.rb b/app/models/concerns/fluentd/setting_archive/archivable.rb new file mode 100644 index 0000000..db34798 --- /dev/null +++ b/app/models/concerns/fluentd/setting_archive/archivable.rb @@ -0,0 +1,36 @@ +class Fluentd + module SettingArchive + module Archivable + attr_accessor :file_path + + def file_id + @file_id ||= with_file { name.gsub(/#{self.class::FILE_EXTENSION}\Z/,'') } + end + + def name + @name ||= with_file { File.basename(file_path) } + end + + def content + @content ||= with_file { File.open(file_path, "r") { |f| f.read } } + end + + def ctime + with_file { File.ctime(file_path) } + end + + private + + def file_path_of(dir, id) + file_path = Pathname.new(dir).join("#{id}#{self.class::FILE_EXTENSION}") + raise "No such a file #{file_path}" unless File.exist?(file_path) + file_path + end + + def with_file + return nil unless file_path && File.exist?(file_path) + yield + end + end + end +end diff --git a/app/models/fluentd/setting_archive/backup_file.rb b/app/models/fluentd/setting_archive/backup_file.rb index 6ee72a7..3b0e2cb 100644 --- a/app/models/fluentd/setting_archive/backup_file.rb +++ b/app/models/fluentd/setting_archive/backup_file.rb @@ -1,41 +1,17 @@ class Fluentd module SettingArchive class BackupFile - attr_accessor :file_path + include Archivable + + FILE_EXTENSION = ".conf".freeze def self.find_by_file_id(backup_dir, file_id) - file_path = Pathname.new(backup_dir).join("#{file_id}.conf") - raise "No such a file #{file_path}" unless File.exist?(file_path) - - new(file_path) + new(file_path_of(backup_dir, file_id)) end def initialize(file_path) @file_path = file_path end - - def file_id - @file_id ||= with_file { name.gsub(/.conf\Z/,'') } - end - - def name - @name ||= with_file { File.basename(file_path) } - end - - def content - @content ||= with_file { File.open(file_path, "r") { |f| f.read } } - end - - def ctime - with_file { File.ctime(file_path) } - end - - private - - def with_file - return nil unless file_path && File.exist?(file_path) - yield - end end end end