lib/dir_model/export.rb in dir_model-0.2.0 vs lib/dir_model/export.rb in dir_model-0.3.0

- old
+ new

@@ -1,5 +1,7 @@ +require 'fastimage' + module DirModel module Export attr_reader :source_model, :context @@ -23,19 +25,40 @@ end def generate cleanup if generated? - self.class.files.each do |file_name, options| - dir_path = instance_exec(&options[:path]) - file_path = File.join(dir_path, instance_exec(&options[:name])) + self.class.file_names.each do |file_name| + options = self.class.options(file_name) + dir_path = get_value_of(options[:path]) + file_path = File.join(dir_path, get_value_of(options[:name])) + mkdir { File.join(@root_path, dir_path) } + file_path = ensure_extension(file_path, file_name) + File.open(File.join(@root_path, file_path), 'wb') {|f| f.write(self.public_send(file_name).read) } end ensure @generated = true + end + + def ensure_extension(file_path, file_method_name) + file_path_with_extension = file_path + if File.extname(file_path).blank? + if ext = FastImage.type(self.public_send(file_method_name)) + file_path_with_extension = file_path + '.' + ext.to_s + else + raise StandardError.new("options :name should provid an extension") + end + end + file_path_with_extension + end + + def get_value_of(string_or_proc) + return string_or_proc if string_or_proc.is_a?(String) + instance_exec(&string_or_proc) end def cleanup FileUtils.remove_entry @root_path @generated = false