module DirModel::Export::Files::ClassMethods

Public Instance Methods

define_extension_method(file_name) click to toggle source

Safe to override

Define default extension method for defined file @param file_name [Symbol] the file: name

# 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) click to toggle source

Safe to override

Define default file method for defined file @param file_name [Symbol] the file: name

# 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) click to toggle source

Safe to override

Define default skip method for a file @param file_name [Symbol] the file: name

# 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

Protected Instance Methods

file(file_name, options={}) click to toggle source
Calls superclass method
# File lib/dir_model/export/files.rb, line 63
def file(file_name, options={})
  super

  define_file_method(file_name)
  define_skip_method(file_name)
  define_extension_method(file_name)
end