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