Module: Lockbox::ActiveStorageExtensions::Attachment

Defined in:
lib/lockbox/active_storage_extensions.rb

Instance Method Summary collapse

Instance Method Details

#downloadObject



83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/lockbox/active_storage_extensions.rb', line 83

def download
  result = super

  options = Utils.encrypted_options(record, name)
  # only trust the metadata when migrating
  # as earlier versions of Lockbox won't have it
  # and it's not a good practice to trust modifiable data
  encrypted = options && (!options[:migrating] || blob.["encrypted"])
  if encrypted
    result = Utils.decrypt_result(record, name, options, result)
  end

  result
end

#open(**options) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/lockbox/active_storage_extensions.rb', line 99

def open(**options)
  blob.open(**options) do |file|
    options = Utils.encrypted_options(record, name)
    # only trust the metadata when migrating
    # as earlier versions of Lockbox won't have it
    # and it's not a good practice to trust modifiable data
    encrypted = options && (!options[:migrating] || blob.["encrypted"])
    if encrypted
      result = Utils.decrypt_result(record, name, options, file.read)
      file.rewind
      # truncate may not be available on all platforms
      # according to the Ruby docs
      # may need to create a new temp file instead
      file.truncate(0)
      file.write(result)
      file.rewind
    end

    yield file
  end
end