Module: Moargration

Extended by:
Moargration
Included in:
Moargration
Defined in:
lib/moargration.rb

Defined Under Namespace

Classes: Exception

Instance Method Summary collapse

Instance Method Details

#columns_to_ignoreObject



17
18
19
# File 'lib/moargration.rb', line 17

def columns_to_ignore
  @@columns_to_ignore
end

#columns_to_ignore=(columns) ⇒ Object



13
14
15
# File 'lib/moargration.rb', line 13

def columns_to_ignore=(columns)
  @@columns_to_ignore = columns
end

#hack_active_record!Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/moargration.rb', line 34

def hack_active_record!
  ActiveRecord::Base.class_eval do
    class << self
      alias :columns_without_moargration :columns
      def columns
        unless defined?(@cached_moargration_columns) && @cached_moargration_columns
          @cached_moargration_columns = columns_without_moargration.reject do |column|
            (Moargration.columns_to_ignore[table_name] || []).include?(column.name)
          end
        end
        @cached_moargration_columns
      end
    end
  end
end

#ignoring?(table, column) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
# File 'lib/moargration.rb', line 21

def ignoring?(table, column)
  ignored_columns = columns_to_ignore[table.to_s] || []
  ignored_columns.include?(column.to_s)
end

#initObject



6
7
8
9
10
11
# File 'lib/moargration.rb', line 6

def init
  @@columns_to_ignore = {}
  return unless ignore = ENV["MOARGRATION_IGNORE"]
  self.columns_to_ignore = parse(ignore)
  hack_active_record!
end

#parse(text) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/moargration.rb', line 26

def parse(text)
  text.strip.split(" ").inject({}) do |parsed, definition|
    table, fields = definition.split(":", 2)
    parsed[table] = fields.split(",") if fields
    parsed
  end
end