class Production

Constants

VERSION

Public Class Methods

connection() click to toggle source
# File lib/production.rb, line 29
def self.connection
  @connection || :production
end
connection=(conn) click to toggle source
# File lib/production.rb, line 33
def self.connection=(conn)
  @connection = conn
end
pull_to_development(*classes) click to toggle source
# File lib/production.rb, line 56
def self.pull_to_development(*classes)
  classes.flatten.each do |klass|
    prod_klass = wrap(klass)
    cleaner    = DatabaseCleaner::Base.new(:active_record, connection: klass)
    cleaner.clean_with(:truncation, only: [ klass.table_name ])
    klass.transaction do
      prod_klass.find_each do |i|
        klass.new.tap do |j|
          j.assign_attributes(i.attributes, without_protection: true)
        end.save!
      end
    end
  end
end
push_from_development(*classes) click to toggle source
# File lib/production.rb, line 41
def self.push_from_development(*classes)
  classes.flatten.each do |klass|
    prod_klass = wrap(klass)
    cleaner    = DatabaseCleaner::Base.new(:active_record, connection: prod_klass)
    cleaner.clean_with(:truncation, only: [ prod_klass.table_name ])
    prod_klass.transaction do
      klass.find_each do |i|
        prod_klass.new.tap do |j|
          j.assign_attributes(i.attributes, without_protection: true)
        end.save!
      end
    end
  end
end
wrap(klass) click to toggle source
# File lib/production.rb, line 37
def self.wrap(klass)
  Class.new(klass).tap { |c| c.establish_connection(connection) }
end