Class: Production
- Inherits:
-
Object
- Object
- Production
- 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
- .connection ⇒ Object
- .connection=(conn) ⇒ Object
- .pull_to_development(*classes) ⇒ Object
- .push_from_development(*classes) ⇒ Object
- .wrap(klass) ⇒ Object
Methods included from ClassMethods
Class Method Details
.connection ⇒ Object
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 |