Module: FilePipeline
- Defined in:
- lib/file_pipeline.rb,
lib/file_pipeline/errors.rb,
lib/file_pipeline/pipeline.rb,
lib/file_pipeline/versions.rb,
lib/file_pipeline/versioned_file.rb,
lib/file_pipeline/file_operations.rb,
lib/file_pipeline/versions/history.rb,
lib/file_pipeline/file_operations/results.rb,
lib/file_pipeline/errors/source_file_error.rb,
lib/file_pipeline/errors/source_directory_error.rb,
lib/file_pipeline/file_operations/file_operation.rb,
lib/file_pipeline/file_operations/log_data_parser.rb,
lib/file_pipeline/errors/failed_modification_error.rb,
lib/file_pipeline/file_operations/exif_manipulable.rb,
lib/file_pipeline/errors/missing_version_file_error.rb,
lib/file_pipeline/file_operations/captured_data_tags.rb,
lib/file_pipeline/file_operations/default_operations/scale.rb,
lib/file_pipeline/file_operations/default_operations/exif_recovery.rb,
lib/file_pipeline/file_operations/default_operations/exif_redaction.rb,
lib/file_pipeline/file_operations/default_operations/exif_restoration.rb,
lib/file_pipeline/file_operations/default_operations/ptiff_conversion.rb
Overview
Module that contains classes to build a file processing pipeline that applies a defined batch of file operations non-destructively to a VersionedFile.
Defined Under Namespace
Modules: Errors, FileOperations, Versions Classes: Pipeline, VersionedFile
Constant Summary collapse
- DEFAULT_DIR =
Constant for the defualt directory for file operations.
'file_pipeline/file_operations/default_operations'
Class Method Summary collapse
-
.<<(directory) ⇒ Object
Adds directory to the Array of #source_directories which will be searched for source files when loading file operations.
-
.load(file_operation) ⇒ Object
Returns the constant for the file_operation class.
-
.load_file(src_file) ⇒ Object
Will search for src_file in .source_directories and require the file if.
-
.new_basename(kind = :timestamp) ⇒ Object
Creates a file basename consisting of either a timestamp or a UUID, depending on the kind argument (
:timestamp
or:random
; default::timestamp
). -
.path(dir, filename) ⇒ Object
Returns a String with the /directory/filename.
-
.source_directories ⇒ Object
Returns an array of directory paths that may contain source files for file operation classes.
-
.source_path(file) ⇒ Object
Searches .source_directories and for file, and returns the full path (directory and filename) for the first match or nil if the file is nowhere found.
Class Method Details
.<<(directory) ⇒ Object
Adds directory to the Array of #source_directories which will be searched for source files when loading file operations. directory will be prepended. Therefore, directories will be searcherd in reverse order of them being added.
21 22 23 24 25 26 27 28 29 |
# File 'lib/file_pipeline.rb', line 21 def self.<<(directory) directory_path = File. directory return source_directories if source_directories.include? directory_path no_dir = !File.directory?(directory_path) raise Errors::SourceDirectoryError, dir: directory if no_dir @src_directories.prepend directory_path end |
.load(file_operation) ⇒ Object
Returns the constant for the file_operation class. If the constant is not defined, will try to require the source file.
33 34 35 36 37 38 39 40 |
# File 'lib/file_pipeline.rb', line 33 def self.load(file_operation) const = file_operation.split('_').map(&:capitalize).join FilePipeline.load_file(file_operation) unless const_defined? const const_get 'FileOperations::' + const rescue NameError # TODO: implement autogenerating module names from file_operation src path const_get const end |
.load_file(src_file) ⇒ Object
Will search for src_file in .source_directories and require the file if.
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/file_pipeline.rb', line 44 def self.load_file(src_file) src_file += '.rb' unless src_file.end_with? '.rb' src_path = FilePipeline.source_path src_file if src_path.nil? raise Errors::SourceFileError, file: src_file, directories: FilePipeline.source_directories end require src_path end |
.new_basename(kind = :timestamp) ⇒ Object
Creates a file basename consisting of either a timestamp or a UUID, depending on the kind argument (:timestamp
or :random
; default: :timestamp
)
58 59 60 61 62 63 64 65 |
# File 'lib/file_pipeline.rb', line 58 def self.new_basename(kind = :timestamp) case kind when :random SecureRandom.uuid when :timestamp Time.now.strftime('%Y-%m-%dT%H:%M:%S.%N') end end |
.path(dir, filename) ⇒ Object
Returns a String with the /directory/filename.
68 69 70 |
# File 'lib/file_pipeline.rb', line 68 def self.path(dir, filename) File.join dir, filename end |
.source_directories ⇒ Object
Returns an array of directory paths that may contain source files for file operation classes.
74 75 76 77 78 |
# File 'lib/file_pipeline.rb', line 74 def self.source_directories return @src_directories if @src_directories @src_directories = [FilePipeline.path(__dir__, DEFAULT_DIR)] end |
.source_path(file) ⇒ Object
Searches .source_directories and for file, and returns the full path (directory and filename) for the first match or nil if the file is nowhere found. Since directories are added in reverse order (see .<<) this will give redefinitions of file operations in custom directories precedence over the default directory, thus allowing overriding of file operation definitions.
86 87 88 89 90 91 92 |
# File 'lib/file_pipeline.rb', line 86 def self.source_path(file) FilePipeline.source_directories.each do |dir| full_path = FilePipeline.path(dir, file) return full_path if File.exist? full_path end nil end |