ignorable 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/ignorable.rb +42 -36
  2. metadata +36 -4
@@ -1,46 +1,52 @@
1
+ require 'active_record'
2
+
1
3
  module Ignorable
2
- def columns
3
- @columns ||= super.reject do |col|
4
- self.ignored_column?(col)
5
- end
4
+ extend ActiveSupport::Concern
5
+
6
+ def attribute_names # :nodoc:
7
+ super.reject{|col| self.class.ignored_column?(col)}
6
8
  end
7
9
 
8
- attr_reader :ignored_columns
10
+ module ClassMethods
11
+ def columns # :nodoc:
12
+ @columns ||= super.reject{|col| ignored_column?(col)}
13
+ end
9
14
 
10
- # Prevent Rails from loading a table column.
11
- # Useful for legacy database schemas with problematic column names,
12
- # like 'class' or 'attributes'.
13
- #
14
- # class Topic < ActiveRecord::Base
15
- # ignore_columns :attributes, :class
16
- # end
17
- #
18
- # Topic.new.respond_to?(:attributes) => false
19
- def ignore_columns *columns
20
- @ignored_columns ||= []
21
- @ignored_columns += columns.map(&:to_s)
22
- reset_column_information
23
- @ignored_columns.tap(&:uniq!)
24
- end
25
- alias ignore_column ignore_columns
15
+ attr_reader :ignored_columns
26
16
 
27
- # Has a column been ignored?
28
- # Accepts both ActiveRecord::ConnectionAdapter::Column objects,
29
- # and actual column names ('title')
30
- def ignored_column? column
31
- ignored_columns.present? && ignored_columns.include?(
32
- column.respond_to?(:name) ? column.name : column.to_s
33
- )
34
- end
17
+ # Prevent Rails from loading a table column.
18
+ # Useful for legacy database schemas with problematic column names,
19
+ # like 'class' or 'attributes'.
20
+ #
21
+ # class Topic < ActiveRecord::Base
22
+ # ignore_columns :attributes, :class
23
+ # end
24
+ #
25
+ # Topic.new.respond_to?(:attributes) => false
26
+ def ignore_columns(*columns)
27
+ @ignored_columns ||= []
28
+ @ignored_columns += columns.map(&:to_s)
29
+ reset_column_information
30
+ @ignored_columns.tap(&:uniq!)
31
+ end
32
+ alias ignore_column ignore_columns
33
+
34
+ # Has a column been ignored?
35
+ # Accepts both ActiveRecord::ConnectionAdapter::Column objects,
36
+ # and actual column names ('title')
37
+ def ignored_column?(column)
38
+ ignored_columns.present? && ignored_columns.include?(
39
+ column.respond_to?(:name) ? column.name : column.to_s
40
+ )
41
+ end
35
42
 
36
- def reset_ignored_columns
37
- @ignored_columns = []
38
- reset_column_information
43
+ def reset_ignored_columns
44
+ @ignored_columns = []
45
+ reset_column_information
46
+ end
39
47
  end
40
48
  end
41
49
 
42
- require 'rails'
43
-
44
- if defined?(ActiveRecord::Base)
45
- ActiveRecord::Base.send :extend, Ignorable
50
+ if defined?(ActiveRecord::Base) && !ActiveRecord::Base.include?(Ignorable)
51
+ ActiveRecord::Base.send :include, Ignorable
46
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ignorable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,10 +10,10 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-22 00:00:00.000000000 Z
13
+ date: 2013-05-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: rails
16
+ name: activerecord
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
@@ -28,6 +28,38 @@ dependencies:
28
28
  - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
30
  version: '3'
31
+ - !ruby/object:Gem::Dependency
32
+ name: sqlite3
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 2.0.0
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: 2.0.0
31
63
  description: Ignore problematic column names (like 'attributes' or 'class') in ActiveRecord
32
64
  models for legacy database schemas
33
65
  email:
@@ -59,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
91
  version: 1.3.6
60
92
  requirements: []
61
93
  rubyforge_project: ignorable
62
- rubygems_version: 1.8.24
94
+ rubygems_version: 1.8.25
63
95
  signing_key:
64
96
  specification_version: 3
65
97
  summary: Ignore columns in ActiveRecord models