Sha256: 3b7e8c8895e0b641eb8586ba15af5208fa426959c5b0fc8f6a787c842fdf101a

Contents?: true

Size: 723 Bytes

Versions: 11

Compression:

Stored size: 723 Bytes

Contents

module RailsConnector
  module BlobOracle
    def self.included(base)
      base.instance_eval do
        define_method :store_data do
          store_data_atomically { |f| fetch_into_file(f) }
        end
      end
    end

    def fetch_into_file(file)
      blob = blob_handle
      while data = blob.read(buff_size ||= 1.megabyte)
        file <<  data
        data = nil
        GC.start
      end
    ensure
      blob&.close
    end

    private

    def sql
      %(
        SELECT blob_data
        FROM #{self.class.table_name}
        WHERE #{self.class.primary_key} = :1
      )
    end

    def blob_handle
      con = self.class.connection.raw_connection
      con.exec(sql, id).fetch.first
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
infopark_fiona_connector-7.0.1.6.1.6.rc4 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.6.1.6.rc3 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.6.1.6.rc2 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.6.1.6.rc1 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.5.2.7.rc1 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.5.2.4.rc2 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.5.2.4.rc1 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.5.2.3.rc8 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.5.2.3.rc7 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.5.2.3.rc6 lib/rails_connector/blob_oracle.rb
infopark_fiona_connector-7.0.1.5.2.3.rc5 lib/rails_connector/blob_oracle.rb