Sha256: 84b13586ae09b060351850ac3abe87863b4102522a7fc8ca4ddd9b0bf7577c0c
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
module RailsConnector # A binary containing the blob data of a Content or CMS management # data of Attribute (fields), ObjClass (object classes), for example. class Blob < CmsBaseModel self.primary_key = "blob_name" class << self # Does not retrieve the column blob_data. def find_with_excluded_blob_data(primary_key) select(:blob_name, :blob_length).find(primary_key) end alias_method_chain :find, :excluded_blob_data end def length blob_length end def data @data ||= self.class.find_without_excluded_blob_data(id).blob_data end def path_of_stored_data(use_cached_file_if_older_than = Time.now) store_data if !File.exists?(path) || use_cached_file_if_older_than > File.mtime(path) path end def self.cache_dir Configuration.blob_cache_dir || File.join(Rails.root, %w(tmp cache)) end def self.initialize_blob_streaming_for(adapter_name) # Redefines store_data: case adapter_name when /mysql$/i raise "Adapter 'mysql' no longer supported. " + "Please change adapter in your database.yml to 'mysql2'." when /mysql2/i require "rails_connector/blob_mysql" include BlobMysql when /oracle/i require "rails_connector/blob_oracle" include BlobOracle end end private def path "#{Blob.cache_dir}/#{id}" end def store_data store_data_atomically do |f| f << data end end def store_data_atomically(&block) tmp_file = "#{path}.#{Process.pid}" File.open(tmp_file, "wb", &block) File.rename(tmp_file, path) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
infopark_fiona_connector-6.10.0.beta1 | lib/rails_connector/blob.rb |