class-table-inheritance 1.3.1 → 1.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a95bda292c5e755340b27be9fd90f957b01ecc47b73c89c177f572596a2f129
4
- data.tar.gz: bd126cd28e8a4f7211d610c8316e50f76936db8cb0cc5204941292d1d4dc514f
3
+ metadata.gz: 8e27e0105847bc9bf4b3be11d2908984c1a74537c25d677552cc14308e7c4090
4
+ data.tar.gz: 90a3df095f9c9a177aceea9654950c461d3f17d9752267ad450478c1b1e779a0
5
5
  SHA512:
6
- metadata.gz: 74c2e34b1409d158dde93426294e15bea61cad76ed8e7855b39041350b5e7e5cff0e2a180d9e087fbf9244c8b5d282c2d3b35a882c842e055dde8c09e85383dc
7
- data.tar.gz: 1d2bfb4824571a4dcf873846c07693f8ba949d5b580ba8327a8cd57135a0a5c6d57c62d81861aab15e3d6015553174b6de488e2c76ac2f0ca04ab57587d321a9
6
+ metadata.gz: c8d85a2ec1e415c425c589355647d48c63fdf2029a97c3b8274a0d89f291c17cff381d32d1e6d231a35e540a55e4322c325a1ffad168828c4cb3bdced88eceb2
7
+ data.tar.gz: 7be4ebbb05a2544cc7a9797fc152324995b274c5835bc014935f3bc804df20a4961b6155bcb6514be3443ce587e4fc7207b6ada990f524722044c940cd4d7f88
@@ -1,6 +1,14 @@
1
+ [![Build Status](https://travis-ci.org/brunofrank/class-table-inheritance.svg?branch=master)](https://travis-ci.org/brunofrank/class-table-inheritance)
2
+
1
3
  Change log
2
4
  ----------
3
5
 
6
+ ### 1.4.0
7
+
8
+ * Add ActiveRecord 5.2 support
9
+ * Require Ruby 2.2 or newer.
10
+
11
+
4
12
  ### 1.3.1
5
13
 
6
14
  * Removed 'set_primary_key' deprecation warning
@@ -41,7 +49,7 @@ Example
41
49
  ```ruby
42
50
  create_table :products do |t|
43
51
  t.string :description, :null => false
44
- t.string :subtype # Only if you need access of both side see example
52
+ t.string :subtype # Only if you need access of both side see example
45
53
  t.decimal :price
46
54
  t.timestamps
47
55
  end
@@ -60,7 +68,7 @@ Example
60
68
 
61
69
  ```ruby
62
70
  class Product < ActiveRecord::Base
63
- acts_as_superclass # only if you want top-down access.
71
+ acts_as_superclass # only if you want top-down access.
64
72
  end
65
73
 
66
74
  class Book < ActiveRecord::Base
@@ -19,7 +19,9 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_runtime_dependency 'activerecord', '>=4', '<5.1'
22
+ s.required_ruby_version = '~> 2.2'
23
+
24
+ s.add_runtime_dependency 'activerecord', '>=4', '<6'
23
25
 
24
26
  s.add_development_dependency 'minitest-reporters','~>1.1'
25
27
  s.add_development_dependency 'rake', '>=11'
@@ -51,15 +51,12 @@ class ActiveRecord::Base
51
51
  self.primary_key = "#{association_id}_id"
52
52
 
53
53
 
54
- # Autobuild method to make a instance of association
55
- define_method("#{association_id}_with_autobuild") do
56
- send("#{association_id}_without_autobuild") || send("build_#{association_id}")
54
+ # Autobuild method to make an instance of association
55
+ m = const_set("#{association_id.to_s.camelize}Builder", Module.new)
56
+ m.send(:define_method, association_id) do
57
+ super() || send("build_#{association_id}")
57
58
  end
58
-
59
-
60
- # Set a method chain whith autobuild.
61
- alias_method_chain association_id, :autobuild
62
-
59
+ prepend(m)
63
60
 
64
61
  # bind the before save, this method call the save of association, and
65
62
  # get our generated ID an set to association_id field.
@@ -106,9 +103,9 @@ class ActiveRecord::Base
106
103
  # if the field is ID than i only bind that with the association field.
107
104
  # this is needed to bypass the overflow problem when the ActiveRecord
108
105
  # try to get the id to find the association.
109
- if name == 'id'
106
+ if name == 'id'
110
107
  self["#{association_id}_id"]
111
- else
108
+ else
112
109
  assoc = send(association_id)
113
110
  assoc.send(name)
114
111
  end
@@ -119,9 +116,9 @@ class ActiveRecord::Base
119
116
  # if the field is ID than i only bind that with the association field.
120
117
  # this is needed to bypass the overflow problem when the ActiveRecord
121
118
  # try to get the id to find the association.
122
- if name == 'id'
119
+ if name == 'id'
123
120
  self["#{association_id}_id"] = new_value
124
- else
121
+ else
125
122
  assoc = send(association_id)
126
123
  assoc.send("#{name}=", new_value)
127
124
  end
@@ -1,17 +1,9 @@
1
-
2
- module InheritsMigration
3
-
4
- def self.included(base)
5
- base.class_eval do
6
- alias_method_chain :create_table , :inherits
7
- end
8
- end
9
-
1
+ module InheritsMigration
10
2
  # Generate the association field.
11
- def create_table_with_inherits(table_name, options = {}, &block)
3
+ def create_table(table_name, options = {}, &block)
12
4
  options[:id] ||= false if options[:inherits]
13
5
 
14
- create_table_without_inherits(table_name, options) do |table_defintion|
6
+ super(table_name, options) do |table_defintion|
15
7
  if options[:inherits]
16
8
  if options[:inherits].kind_of?(String)
17
9
  column_to_create = options[:inherits].gsub(/::/, '_').downcase
@@ -32,5 +24,4 @@ module InheritsMigration
32
24
  end
33
25
  end
34
26
 
35
- ActiveRecord::Base
36
- ActiveRecord::ConnectionAdapters::SchemaStatements::send(:include, InheritsMigration)
27
+ ActiveRecord::ConnectionAdapters::SchemaStatements.prepend(InheritsMigration)
@@ -1,3 +1,3 @@
1
1
  class ClassTableInheritance
2
- VERSION = "1.3.1"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -9,7 +9,7 @@ Minitest::Reporters.use!
9
9
 
10
10
  database = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
11
11
  ActiveRecord::Base.establish_connection(database['sqlite3'])
12
- load(File.dirname(__FILE__) + "/schema.rb") if !File.exists?(database['sqlite3'][:database])
12
+ load(File.dirname(__FILE__) + "/schema.rb") if !File.exist?(database['sqlite3'][:database])
13
13
 
14
14
  require 'models/product'
15
15
  require 'models/book'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: class-table-inheritance
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno Frank
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '4'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5.1'
22
+ version: '6'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '4'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5.1'
32
+ version: '6'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: minitest-reporters
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +82,7 @@ files:
82
82
  - ".gitignore"
83
83
  - ".travis.yml"
84
84
  - Gemfile
85
- - README.markdown
85
+ - README.md
86
86
  - Rakefile
87
87
  - class-table-inheritance.gemspec
88
88
  - init.rb
@@ -109,9 +109,9 @@ require_paths:
109
109
  - lib
110
110
  required_ruby_version: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - ">="
112
+ - - "~>"
113
113
  - !ruby/object:Gem::Version
114
- version: '0'
114
+ version: '2.2'
115
115
  required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="