ignorable 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +6 -0
  3. data/lib/ignorable.rb +15 -13
  4. metadata +15 -50
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7901bf8b68b27166b0643cee147e4c13b1831648
4
+ data.tar.gz: 8464d803ab68abe2327c412271072503133c455e
5
+ SHA512:
6
+ metadata.gz: b1bdc48b499ca3de7c04c2f89ec81e6a36fe1403f71f920868f2d138145551f11a3fde75cd98c288fbe25609d1b914364a216626329ae319f919c33796a3cfb5
7
+ data.tar.gz: 142e290145dcd6047cede93bdd55a420bdb282281066f2de3e559080d86e5f3463678345d2e1960a7e1212ffe35f741c10a6413867eef37445e6f22844033409
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [Donate to charity: water via Gittip](https://www.gittip.com/nthj/)
2
+
1
3
  ignorable
2
4
  =========
3
5
 
@@ -17,3 +19,7 @@ Usage
17
19
  ignore_columns :attributes, :class, :meta_column_used_by_another_app
18
20
  end
19
21
 
22
+ Rails Versions
23
+ ==============
24
+
25
+ Tested on Rails 3.2, Rails 4.1.0.
@@ -1,10 +1,11 @@
1
1
  require 'active_record'
2
+ require 'active_support/core_ext/class/attribute'
2
3
 
3
4
  module Ignorable
4
- extend ActiveSupport::Concern
5
-
6
- def attribute_names # :nodoc:
7
- super.reject{|col| self.class.ignored_column?(col)}
5
+ module InstanceMethods
6
+ def attribute_names # :nodoc:
7
+ super.reject{|col| self.class.ignored_column?(col)}
8
+ end
8
9
  end
9
10
 
10
11
  module ClassMethods
@@ -12,8 +13,6 @@ module Ignorable
12
13
  @columns ||= super.reject{|col| ignored_column?(col)}
13
14
  end
14
15
 
15
- attr_reader :ignored_columns
16
-
17
16
  # Prevent Rails from loading a table column.
18
17
  # Useful for legacy database schemas with problematic column names,
19
18
  # like 'class' or 'attributes'.
@@ -24,10 +23,11 @@ module Ignorable
24
23
  #
25
24
  # Topic.new.respond_to?(:attributes) => false
26
25
  def ignore_columns(*columns)
27
- @ignored_columns ||= []
28
- @ignored_columns += columns.map(&:to_s)
26
+ self.ignored_columns ||= []
27
+ self.ignored_columns += columns.map(&:to_s)
29
28
  reset_column_information
30
- @ignored_columns.tap(&:uniq!)
29
+ descendants.each(&:reset_column_information)
30
+ self.ignored_columns.tap(&:uniq!)
31
31
  end
32
32
  alias ignore_column ignore_columns
33
33
 
@@ -35,18 +35,20 @@ module Ignorable
35
35
  # Accepts both ActiveRecord::ConnectionAdapter::Column objects,
36
36
  # and actual column names ('title')
37
37
  def ignored_column?(column)
38
- ignored_columns.present? && ignored_columns.include?(
38
+ self.ignored_columns.present? && self.ignored_columns.include?(
39
39
  column.respond_to?(:name) ? column.name : column.to_s
40
40
  )
41
41
  end
42
42
 
43
43
  def reset_ignored_columns
44
- @ignored_columns = []
44
+ self.ignored_columns = []
45
45
  reset_column_information
46
46
  end
47
47
  end
48
48
  end
49
49
 
50
- if defined?(ActiveRecord::Base) && !ActiveRecord::Base.include?(Ignorable)
51
- ActiveRecord::Base.send :include, Ignorable
50
+ unless ActiveRecord::Base.include?(Ignorable::InstanceMethods)
51
+ ActiveRecord::Base.send :include, Ignorable::InstanceMethods
52
+ ActiveRecord::Base.send :extend, Ignorable::ClassMethods
53
+ ActiveRecord::Base.send :class_attribute, :ignored_columns
52
54
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ignorable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nathaniel Jones
@@ -10,89 +9,55 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-05-08 00:00:00.000000000 Z
12
+ date: 2015-04-18 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: activerecord
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - ">="
21
19
  - !ruby/object:Gem::Version
22
20
  version: '3'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - ">="
29
26
  - !ruby/object:Gem::Version
30
27
  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
63
28
  description: Ignore problematic column names (like 'attributes' or 'class') in ActiveRecord
64
29
  models for legacy database schemas
65
30
  email:
66
- - hello@nthj.me
31
+ - nj@third.io
67
32
  - ''
68
33
  executables: []
69
34
  extensions: []
70
35
  extra_rdoc_files: []
71
36
  files:
72
- - lib/ignorable.rb
73
37
  - README.md
38
+ - lib/ignorable.rb
74
39
  homepage: http://github.com/nthj/ignorable
75
- licenses: []
40
+ licenses:
41
+ - MIT
42
+ metadata: {}
76
43
  post_install_message:
77
44
  rdoc_options: []
78
45
  require_paths:
79
46
  - lib
80
47
  required_ruby_version: !ruby/object:Gem::Requirement
81
- none: false
82
48
  requirements:
83
- - - ! '>='
49
+ - - ">="
84
50
  - !ruby/object:Gem::Version
85
51
  version: '0'
86
52
  required_rubygems_version: !ruby/object:Gem::Requirement
87
- none: false
88
53
  requirements:
89
- - - ! '>='
54
+ - - ">="
90
55
  - !ruby/object:Gem::Version
91
- version: 1.3.6
56
+ version: '0'
92
57
  requirements: []
93
- rubyforge_project: ignorable
94
- rubygems_version: 1.8.25
58
+ rubyforge_project:
59
+ rubygems_version: 2.4.5
95
60
  signing_key:
96
- specification_version: 3
61
+ specification_version: 4
97
62
  summary: Ignore columns in ActiveRecord models
98
63
  test_files: []