diff --git a/app/controllers/hangar/records_controller.rb b/app/controllers/hangar/records_controller.rb index 0120f40..d7c5fb2 100644 --- a/app/controllers/hangar/records_controller.rb +++ b/app/controllers/hangar/records_controller.rb @@ -1,8 +1,11 @@ module Hangar class RecordsController < ActionController::Base def delete - DatabaseCleaner.clean_with Hangar.clean_strategy, except: Hangar.do_not_delete - head :no_content, content_type: "text/html" + Hangar.created_data.each do |key, value| + value.constantize.delete(key) + end + Hangar.created_data.clear + render json: {"delete": "success"}.to_json, status: 200 end end end diff --git a/app/controllers/hangar/resources_controller.rb b/app/controllers/hangar/resources_controller.rb index d096bc9..a5a72a2 100644 --- a/app/controllers/hangar/resources_controller.rb +++ b/app/controllers/hangar/resources_controller.rb @@ -5,6 +5,7 @@ class ResourcesController < ActionController::Base def create created = FactoryBot.create resource, *traits, resource_attributes + Hangar.created_data[created.id.to_s] = created.model_name.to_s render json: created.as_json(include: includes) end diff --git a/lib/hangar.rb b/lib/hangar.rb index 99bc846..fcd190c 100644 --- a/lib/hangar.rb +++ b/lib/hangar.rb @@ -6,10 +6,11 @@ module Hangar BadEnvironmentError = Class.new(StandardError) mattr_writer :do_not_delete, :route_namespace - mattr_accessor :clean_strategy + mattr_accessor :clean_strategy, :created_data self.clean_strategy = :deletion self.route_namespace = nil + self.created_data = Hash.new def self.do_not_delete Array.wrap(@@do_not_delete) @@ -28,7 +29,7 @@ def self.route_namespace end def validate_environment - Rails.env.test? or raise BadEnvironmentError, "Hangar should not be used in the #{Rails.env} environment" + Rails.env.test? || Rails.env.development? or raise BadEnvironmentError, "Hangar should not be used in the #{Rails.env} environment" end module_function :validate_environment end