class Saviour::LifeCycle::FileUpdater
Public Class Methods
new(current_path, file, column, connection)
click to toggle source
# File lib/saviour/life_cycle.rb, line 31 def initialize(current_path, file, column, connection) @file = file @column = column @current_path = current_path @connection = connection end
Public Instance Methods
upload()
click to toggle source
# File lib/saviour/life_cycle.rb, line 38 def upload dup_temp_path = SecureRandom.hex dup_file = proc do uploader.storage.cp @current_path, dup_temp_path DbHelpers.run_after_commit(@connection) do uploader.storage.delete dup_temp_path end DbHelpers.run_after_rollback(@connection) do uploader.storage.mv dup_temp_path, @current_path end end @new_path = @file.write( before_write: ->(path) { dup_file.call if @current_path == path } ) return unless @new_path if @current_path && @current_path != @new_path DbHelpers.run_after_commit(@connection) do uploader.storage.delete(@current_path) end end # Delete the newly uploaded file only if it's an update in a different path if @current_path.nil? || @current_path != @new_path DbHelpers.run_after_rollback(@connection) do uploader.storage.delete(@new_path) end end [@column, @new_path] end
uploader()
click to toggle source
# File lib/saviour/life_cycle.rb, line 75 def uploader @file.uploader end