Sha256: 3760c9a09b1172c35f359e131ef7a00e9c9a677c23153694acbd772168a7fccb

Contents?: true

Size: 810 Bytes

Versions: 17

Compression:

Stored size: 810 Bytes

Contents

# frozen_string_literal: true

require "active_support/concern"

module Decidim
  # A concern to help when the file needs to be available locally.
  # For example, we need to download file first if it is in AWS S3 bucket
  # or somewhere else than locally in the server.
  module ProcessesFileLocally
    extend ActiveSupport::Concern

    private

    def process_file_locally(blob)
      if ActiveStorage::Blob.service.respond_to? :path_for
        yield ActiveStorage::Blob.service.path_for(blob.key)
      else
        begin
          tempfile = Tempfile.new
          tempfile.binmode
          blob.download { |chunk| tempfile.write(chunk) }
          tempfile.flush
          tempfile.rewind
          yield tempfile.path
        ensure
          tempfile.close!
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc2 lib/decidim/processes_file_locally.rb
decidim-core-0.30.0.rc1 lib/decidim/processes_file_locally.rb
decidim-core-0.29.2 lib/decidim/processes_file_locally.rb
decidim-core-0.28.5 lib/decidim/processes_file_locally.rb
decidim-core-0.29.1 lib/decidim/processes_file_locally.rb
decidim-core-0.28.4 lib/decidim/processes_file_locally.rb
decidim-core-0.29.0 lib/decidim/processes_file_locally.rb
decidim-core-0.28.3 lib/decidim/processes_file_locally.rb
decidim-core-0.29.0.rc4 lib/decidim/processes_file_locally.rb
decidim-core-0.29.0.rc3 lib/decidim/processes_file_locally.rb
decidim-core-0.29.0.rc2 lib/decidim/processes_file_locally.rb
decidim-core-0.29.0.rc1 lib/decidim/processes_file_locally.rb
decidim-core-0.28.2 lib/decidim/processes_file_locally.rb
decidim-core-0.28.1 lib/decidim/processes_file_locally.rb
decidim-core-0.28.0 lib/decidim/processes_file_locally.rb
decidim-core-0.28.0.rc5 lib/decidim/processes_file_locally.rb
decidim-core-0.28.0.rc4 lib/decidim/processes_file_locally.rb