Class: Production

Inherits:
Object
  • Object
show all
Extended by:
ClassMethods
Defined in:
lib/production.rb,
lib/production/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
"0.0.2"

Class Method Summary collapse

Methods included from ClassMethods

const_missing

Class Method Details

.connectionObject



29
30
31
# File 'lib/production.rb', line 29

def self.connection
  @connection || :production
end

.connection=(conn) ⇒ Object



33
34
35
# File 'lib/production.rb', line 33

def self.connection=(conn)
  @connection = conn
end

.pull_to_development(*classes) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# 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) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 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) ⇒ Object



37
38
39
# File 'lib/production.rb', line 37

def self.wrap(klass)
  Class.new(klass).tap { |c| c.establish_connection(connection) }
end