class ActiveRecord::Base

Public Class Methods

acts_as_distributed(partition_column:) click to toggle source
# File lib/citus-rails-4.2/acts_as_distributed.rb, line 2
def self.acts_as_distributed(partition_column:)
  check_citus_compatibility
  @partition_column = partition_column
end
copy_from_client(columns, &block) click to toggle source
# File lib/citus-rails-4.2/copy_from_client.rb, line 18
def self.copy_from_client(columns, &block)
  conn         = connection.raw_connection
  column_types = columns.map { |c| columns_hash[c.to_s] }
  helper = CopyFromClientHelper.new(conn, column_types)
  conn.copy_data %{COPY #{quoted_table_name}("#{columns.join('","')}") FROM STDIN}, PG::TextEncoder::CopyRow.new do
    block.call helper
  end
  helper.count
end

Private Class Methods

check_citus_compatibility() click to toggle source
# File lib/citus-rails-4.2/acts_as_distributed.rb, line 13
def self.check_citus_compatibility
  if primary_keys && primary_keys.include?('id')
    suggested_name = name.underscore + '_id'
    fail format("citus-rails currently does not support models with 'id' as one of multiple primary keys - please name your id column '%s'", suggested_name)
  end
end

Public Instance Methods

partition_column() click to toggle source
# File lib/citus-rails-4.2/acts_as_distributed.rb, line 7
def partition_column
  @partition_column
end