Skip to content

Commit

Permalink
getting rid of InstanceMethods anti-pattern...
Browse files Browse the repository at this point in the history
  • Loading branch information
bmabey committed Dec 20, 2011
1 parent 45b2079 commit b3eefb7
Showing 1 changed file with 25 additions and 31 deletions.
56 changes: 25 additions & 31 deletions lib/database_cleaner/generic/truncation.rb
@@ -1,42 +1,36 @@
module DatabaseCleaner
module Generic
module Truncation
def self.included(base)
base.send(:include, InstanceMethods)
end

module InstanceMethods
def initialize(opts={})
if !opts.empty? && !(opts.keys - [:only, :except]).empty?
raise ArgumentError, "The only valid options are :only and :except. You specified #{opts.keys.join(',')}."
end
if opts.has_key?(:only) && opts.has_key?(:except)
raise ArgumentError, "You may only specify either :only or :either. Doing both doesn't really make sense does it?"
end

@only = opts[:only]
@tables_to_exclude = (opts[:except] || []).dup
@tables_to_exclude << migration_storage_name if migration_storage_name
def initialize(opts={})
if !opts.empty? && !(opts.keys - [:only, :except]).empty?
raise ArgumentError, "The only valid options are :only and :except. You specified #{opts.keys.join(',')}."
end

def start
#included for compatability reasons, do nothing if you don't need to
if opts.has_key?(:only) && opts.has_key?(:except)
raise ArgumentError, "You may only specify either :only or :either. Doing both doesn't really make sense does it?"
end

def clean
raise NotImplementedError
end
@only = opts[:only]
@tables_to_exclude = (opts[:except] || []).dup
@tables_to_exclude << migration_storage_name if migration_storage_name
end

private
def tables_to_truncate
raise NotImplementedError
end
def start
#included for compatability reasons, do nothing if you don't need to
end

def clean
raise NotImplementedError
end

private
def tables_to_truncate
raise NotImplementedError
end

# overwrite in subclasses
# default implementation given because migration storage need not be present
def migration_storage_name
nil
end
# overwrite in subclasses
# default implementation given because migration storage need not be present
def migration_storage_name
nil
end
end
end
Expand Down

0 comments on commit b3eefb7

Please sign in to comment.