diff options
Diffstat (limited to 'app/models/referential_cloning.rb')
| -rw-r--r-- | app/models/referential_cloning.rb | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/app/models/referential_cloning.rb b/app/models/referential_cloning.rb index 5bf283814..d4b74bd52 100644 --- a/app/models/referential_cloning.rb +++ b/app/models/referential_cloning.rb @@ -2,14 +2,33 @@ class ReferentialCloning < ActiveRecord::Base include AASM belongs_to :source_referential, class_name: 'Referential' belongs_to :target_referential, class_name: 'Referential' - after_commit :perform_clone, :on => :create + after_commit :clone, on: :create - private - def perform_clone + def clone ReferentialCloningWorker.perform_async(id) - # ReferentialCloningWorker.new.perform(id) end + def clone_with_status! + run! + clone! + successful! + rescue Exception => e + Rails.logger.error "Clone failed : #{e}" + Rails.logger.error e.backtrace.join('\n') + failed! + end + + def clone! + report = Benchmark.measure do + AF83::SchemaCloner + .new(source_referential.slug, target_referential.slug) + .clone_schema + end + target_referential.check_migration_count(report) + end + + private + aasm column: :status do state :new, :initial => true state :pending |
