Module: DirModel::Export::Files::ClassMethods

Defined in:
lib/dir_model/export/files.rb

Instance Method Summary collapse

Instance Method Details

#define_extension_method(file_name) ⇒ Object

Safe to override

Define default extension method for defined file

Parameters:

  • file_name (Symbol)

    the file: name



54
55
56
57
58
59
# File 'lib/dir_model/export/files.rb', line 54

def define_extension_method(file_name)
  define_method("#{file_name}_extension") do
    return unless self.public_send(file_name).respond_to?(:extension)
    self.public_send(file_name).extension # Carrierwave Uploader
  end
end

#define_file_method(file_name) ⇒ Object

Safe to override

Define default file method for defined file

Parameters:

  • file_name (Symbol)

    the file: name



40
41
42
43
44
45
46
47
48
# File 'lib/dir_model/export/files.rb', line 40

def define_file_method(file_name)
  define_method(file_name) do
    file = file_or_uploader = source_model.public_send(file_name)
    if file_or_uploader.respond_to?(:file) # Carrierwave Uploader
      file = file_or_uploader.file
    end
    file
  end
end

#define_skip_method(file_name) ⇒ Object

Safe to override

Define default skip method for a file

Parameters:

  • file_name (Symbol)

    the file: name



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/dir_model/export/files.rb', line 18

def define_skip_method(file_name)
  define_method(:skip?) do
    _file = self.public_send(file_name)

    return true if _file.nil?
    if _file.respond_to?(:exists?) # Carrierwave with remote file
      return true unless _file.exists?
    else
      if _file.respond_to?(:path) # Locale file
        return true unless File.exists?(_file.path)
      end
    end
    return true unless _file.respond_to?(:read)

    false
  end
end