class InterviewFilesCollectionService def initialize(files, folder_name) @files = files @folder_name = folder_name end def build Dir.mktmpdir { |dir| files.each do |file| open("#{dir}/#{file.filename}", 'wb') do |tmp_file| tmp_file << open(file.service_url.to_s).read end end read_files = Dir.entries("#{dir}/").select { |f| !File.directory? f } raise StandardError.new "Files not found." unless read_files.any? yield(dir, read_files) } end private attr_reader :files, :folder_name end