Sha256: d34b9fffb3e6cc81619947e377d772e68714dc6f79e3854bb70f2febd6f52d85

Contents?: true

Size: 1.63 KB

Versions: 3

Compression:

Stored size: 1.63 KB

Contents

require 'cassandra/0.7'
require 'set'

require 'cassandra_object/log_subscriber'

module CassandraObject
  class Base
    class_inheritable_accessor :connection
    class_inheritable_writer :connection_class

    def self.connection_class
      read_inheritable_attribute(:connection_class) || Cassandra
    end

    module ConnectionManagement
      def establish_connection(*args)
        self.connection = connection_class.new(*args)
      end
    end
    extend ConnectionManagement

    module Naming
      def column_family=(column_family)
        @column_family = column_family
      end

      def column_family
        @column_family || name.pluralize
      end
    end
    extend Naming

    class << self
      def base_class
        klass = self
        while klass.superclass != Base
          klass = klass.superclass
        end
        klass
      end
    end

    extend ActiveModel::Naming
    extend ActiveSupport::DescendantsTracker
    
    include Callbacks
    include Identity
    include Attributes
    include Persistence
    include Indexes
    include Dirty
    include Validation
    include Associations
    include FindEach
    include FindWithIds

    attr_reader :attributes
    attr_accessor :key

    include Serialization
    include Migrations
    include Mocking

    def initialize(attributes={})
      @key = attributes.delete(:key)
      @new_record = true
      @destroyed = false
      @attributes = {}.with_indifferent_access
      self.attributes = attributes
      @schema_version = self.class.current_schema_version
    end

    def to_model
      self
    end
  end
end

require 'cassandra_object/type_registration'

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gotime-cassandra_object-0.9.1 lib/cassandra_object/base.rb
gotime-cassandra_object-0.9.0 lib/cassandra_object/base.rb
gotime-cassandra_object-0.8.7 lib/cassandra_object/base.rb