active_record_include 0.1.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 +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +69 -0
- data/License +18 -0
- data/Rakefile +6 -0
- data/Readme.md +149 -0
- data/active_record_include.gemspec +40 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/active_record_include.rb +7 -0
- data/lib/active_record_include/version.rb +5 -0
- data/lib/active_record_include/when_connected.rb +68 -0
- data/lib/active_record_include/when_inherited.rb +54 -0
- data/lib/active_record_text_columns.rb +28 -0
- data/lib/normalize_text_columns.rb +10 -0
- metadata +204 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 30de7b63680167a66f60ec0f0e62341dd070dd72
|
4
|
+
data.tar.gz: 6d1a4b3d921cb01d3a05dbf08944cf6906b6a6fc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 46f8afba0e9307c161b502f944cfbcd6388d93c6baf3e902ff5ca9fea7ab01a63e275f4ee7acb7fc15b9f98cbcaa22716934ac0cad409dfbf2d2ac56e1dc6209
|
7
|
+
data.tar.gz: 771dd3d979e25060b286694b0b3e770edeee511c3d4e8ffe07a930d56c13a3b6925f634c250c3cc6fa31b3d4b74b7db93f220ac0a26d96093cefa91aeffab160
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
active_record_include (0.1.0)
|
5
|
+
activerecord (>= 4.2, < 5.3)
|
6
|
+
activesupport (>= 4.2, < 5.3)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
activemodel (5.2.1)
|
12
|
+
activesupport (= 5.2.1)
|
13
|
+
activerecord (5.2.1)
|
14
|
+
activemodel (= 5.2.1)
|
15
|
+
activesupport (= 5.2.1)
|
16
|
+
arel (>= 9.0)
|
17
|
+
activesupport (5.2.1)
|
18
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
19
|
+
i18n (>= 0.7, < 2)
|
20
|
+
minitest (~> 5.1)
|
21
|
+
tzinfo (~> 1.1)
|
22
|
+
arel (9.0.0)
|
23
|
+
byebug (10.0.2)
|
24
|
+
coderay (1.1.2)
|
25
|
+
concurrent-ruby (1.1.3)
|
26
|
+
diff-lcs (1.3)
|
27
|
+
i18n (1.1.1)
|
28
|
+
concurrent-ruby (~> 1.0)
|
29
|
+
method_source (0.9.2)
|
30
|
+
minitest (5.11.3)
|
31
|
+
normalizy (1.2.0)
|
32
|
+
activerecord (>= 4.1, < 6)
|
33
|
+
pry (0.12.2)
|
34
|
+
coderay (~> 1.1.0)
|
35
|
+
method_source (~> 0.9.0)
|
36
|
+
rake (10.5.0)
|
37
|
+
rspec (3.8.0)
|
38
|
+
rspec-core (~> 3.8.0)
|
39
|
+
rspec-expectations (~> 3.8.0)
|
40
|
+
rspec-mocks (~> 3.8.0)
|
41
|
+
rspec-core (3.8.0)
|
42
|
+
rspec-support (~> 3.8.0)
|
43
|
+
rspec-expectations (3.8.2)
|
44
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
45
|
+
rspec-support (~> 3.8.0)
|
46
|
+
rspec-mocks (3.8.0)
|
47
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
48
|
+
rspec-support (~> 3.8.0)
|
49
|
+
rspec-support (3.8.0)
|
50
|
+
sqlite3 (1.3.13)
|
51
|
+
thread_safe (0.3.6)
|
52
|
+
tzinfo (1.2.5)
|
53
|
+
thread_safe (~> 0.1)
|
54
|
+
|
55
|
+
PLATFORMS
|
56
|
+
ruby
|
57
|
+
|
58
|
+
DEPENDENCIES
|
59
|
+
active_record_include!
|
60
|
+
bundler (~> 1.17)
|
61
|
+
byebug
|
62
|
+
normalizy
|
63
|
+
pry
|
64
|
+
rake (~> 10.0)
|
65
|
+
rspec (~> 3.0)
|
66
|
+
sqlite3
|
67
|
+
|
68
|
+
BUNDLED WITH
|
69
|
+
1.17.1
|
data/License
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Copyright (c) 2018 Tyler Rick
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
4
|
+
associated documentation files (the "Software"), to deal in the Software without restriction,
|
5
|
+
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
6
|
+
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
7
|
+
furnished to do so, subject to the following conditions:
|
8
|
+
|
9
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial
|
10
|
+
portions of the Software.
|
11
|
+
|
12
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
13
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
14
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
15
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
16
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
17
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
18
|
+
SOFTWARE.
|
data/Rakefile
ADDED
data/Readme.md
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
# ActiveRecordInclude
|
2
|
+
|
3
|
+
Have you ever wanted to make a module get included into *all* of your models so that you don't have
|
4
|
+
to remember to include in each individual model?
|
5
|
+
|
6
|
+
Sure, if all you need is for some methods to be *available* in all your models, then you can just
|
7
|
+
include the module in your `ApplicationRecord` and all subclasses of `ApplicationRecord` will have
|
8
|
+
access to those methods by inheritance.
|
9
|
+
|
10
|
+
But if it's a `ActiveSupport::Concern` with a `included` blocks or similar that needs to do
|
11
|
+
something specific for each individual model subclass, then that approach doesn't work.
|
12
|
+
|
13
|
+
You can do something like this to automatically include `MyConcern` into all subclasses of
|
14
|
+
`ApplicationRecord`:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
module MyExtensions
|
18
|
+
module ClassMethods
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
# These extensions aren't on (or can't be on) Base itself but on every model (every subclass of
|
23
|
+
# Base)
|
24
|
+
def inherited(subclass)
|
25
|
+
super
|
26
|
+
subclass.class_eval do
|
27
|
+
include MyConcern
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class ApplicationRecord < ActiveRecord::Base
|
34
|
+
include MyExtensions
|
35
|
+
end
|
36
|
+
```
|
37
|
+
|
38
|
+
Or you could use this gem and just write:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
class ApplicationRecord < ActiveRecord::Base
|
42
|
+
include_when_inherited MyConcern
|
43
|
+
end
|
44
|
+
```
|
45
|
+
|
46
|
+
However, even that doesn't always work. If we try to connect to a table from `MyConcern` that way,
|
47
|
+
we'll end up getting an error like this:
|
48
|
+
|
49
|
+
```
|
50
|
+
PG::UndefinedTable: ERROR: relation "application_records" does not exist
|
51
|
+
```
|
52
|
+
|
53
|
+
Model extensions/concerns that require an database connection (such as those that get a list of columns for
|
54
|
+
the model) can't be automatically included from `inherited()` because that's too early (`inherited`
|
55
|
+
gets called the moment it hits the `class Model < ApplicationRecord` line), *before* the body of the class
|
56
|
+
definition has been evaluated, and thus before the model (or its ancestors) has had a chance to
|
57
|
+
configure itself with `self.abstract_class=` or `self.table_name=` yet, for example.
|
58
|
+
|
59
|
+
Do this to have it include the given module in all (non-abstract) model subclasses as soon as that model
|
60
|
+
has connected to its database:
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
class ApplicationRecord < ActiveRecord::Base
|
64
|
+
self.abstract_class = true
|
65
|
+
include_when_connected NormalizeTextColumns
|
66
|
+
end
|
67
|
+
```
|
68
|
+
|
69
|
+
By default, it includes the module into all subclasses. If you *don't* want it to include the module into subclasses, pass `recursive: false`.
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
class SomeModel < ActiveRecord::Base
|
73
|
+
include_when_connected MyConcern, recursive: false
|
74
|
+
end
|
75
|
+
```
|
76
|
+
|
77
|
+
|
78
|
+
## Limitations
|
79
|
+
|
80
|
+
### `ActiveSupport::Concern` modules are only included if the module is not already an ancestor
|
81
|
+
|
82
|
+
This means that the order you include concerns matters.
|
83
|
+
|
84
|
+
If you have `AA < A < ApplicationRecord` and you include the concern into `A` and then `AA`, when
|
85
|
+
you include it into `AA` the `included` block will not be run for `AA`, because it has already been
|
86
|
+
run for an ancestor of `AA`, namely `A`.
|
87
|
+
|
88
|
+
If on the other hand you somehow managed to include the concern into `AA` *before* it got included
|
89
|
+
into `A`, you *can* get it include the `included` block of the concern for both `AA` *and* `A`. But
|
90
|
+
this is easier said then done, because `A` needs to be defined first before you can
|
91
|
+
subclass it, and usually they are in different files so it would get included into `A` as soon as
|
92
|
+
the file for `A` was loaded. You would have to be very, very intentional about it, and reopen `A`,
|
93
|
+
like this:
|
94
|
+
|
95
|
+
```
|
96
|
+
class A < ApplicationRecord
|
97
|
+
end
|
98
|
+
class AA < A
|
99
|
+
include MyConcern
|
100
|
+
end
|
101
|
+
class A
|
102
|
+
include MyConcern
|
103
|
+
end
|
104
|
+
```
|
105
|
+
|
106
|
+
This is a limitation of `ActiveSupport::Concern`, not of this gem. (`include_when_inherited` calls
|
107
|
+
`include` to include the concern, but it has no effect.)
|
108
|
+
|
109
|
+
Often this limitation isn't a problem, because all of your models are direct descendents of
|
110
|
+
`ApplicationRecord` and you don't need to *also* include the concern into `ApplicationRecord`, for
|
111
|
+
example.
|
112
|
+
|
113
|
+
But if you really need a module's features to be appended (its `included` code) into both a model
|
114
|
+
and its superclass, one way to work around this limitation is to define your own `included`
|
115
|
+
callback, like we did in
|
116
|
+
[`spec/support/models/concerns/creature_self_identification.rb`](spec/support/models/concerns/creature_self_identification.rb):
|
117
|
+
|
118
|
+
```ruby
|
119
|
+
def self.included(base)
|
120
|
+
base.class_eval do
|
121
|
+
puts "#{self}: included CreatureSelfIdentification"
|
122
|
+
extend ClassMethods
|
123
|
+
define_identity_methods
|
124
|
+
end
|
125
|
+
end
|
126
|
+
```
|
127
|
+
|
128
|
+
Then you can call `include_recursively` from the base class of the class hierarchy you want to
|
129
|
+
include the module in, and it will append its features to *all* of its descendents:
|
130
|
+
|
131
|
+
```ruby
|
132
|
+
class Creature < ApplicationRecord
|
133
|
+
include CreatureConcern
|
134
|
+
include_recursively CreatureSelfIdentification
|
135
|
+
end
|
136
|
+
```
|
137
|
+
|
138
|
+
|
139
|
+
## Installation
|
140
|
+
|
141
|
+
Add this line to your application's Gemfile:
|
142
|
+
|
143
|
+
```ruby
|
144
|
+
gem 'active_record_include'
|
145
|
+
```
|
146
|
+
|
147
|
+
## Contributing
|
148
|
+
|
149
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/TylerRick/active_record_include.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "active_record_include/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "active_record_include"
|
7
|
+
spec.version = ActiveRecordInclude.version
|
8
|
+
spec.authors = ["Tyler Rick"]
|
9
|
+
spec.email = ["tyler@tylerrick.com"]
|
10
|
+
spec.license = "MIT"
|
11
|
+
|
12
|
+
spec.summary = %q{Makes it easy to have specific concern modules included into all of your models after the model has connected to the database}
|
13
|
+
spec.description = spec.summary
|
14
|
+
spec.homepage = "http://github.com/TylerRick/active_record_include"
|
15
|
+
|
16
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
17
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
18
|
+
spec.metadata["changelog_uri"] = "TODO: Put your gem's Changelog.md URL here."
|
19
|
+
|
20
|
+
# Specify which files should be added to the gem when it is released.
|
21
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
22
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
23
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
|
+
end
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.required_ruby_version = ">= 2.3.0"
|
30
|
+
spec.add_dependency "activesupport", [">= 4.2", "< 5.3"]
|
31
|
+
spec.add_dependency "activerecord", [">= 4.2", "< 5.3"]
|
32
|
+
|
33
|
+
spec.add_development_dependency "bundler", "~> 1.17"
|
34
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
35
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
36
|
+
spec.add_development_dependency "sqlite3"
|
37
|
+
spec.add_development_dependency "normalizy"
|
38
|
+
spec.add_development_dependency "pry"
|
39
|
+
spec.add_development_dependency "byebug"
|
40
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "active_record_include"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
module ActiveRecordInclude::WhenConnected
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
mattr_accessor :verbose, instance_accessor: false
|
5
|
+
@@verbose = false
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def include_when_connected(mod, **options)
|
9
|
+
self.class_eval do
|
10
|
+
unless defined?(modules_to_include_when_connected)
|
11
|
+
class_attribute :modules_to_include_when_connected
|
12
|
+
end
|
13
|
+
end
|
14
|
+
#puts %(#{self}.modules_to_include_when_connected=#{self.modules_to_include_when_connected.inspect})
|
15
|
+
if options[:recursive] == false
|
16
|
+
options[:into_classes] ||= [self]
|
17
|
+
end
|
18
|
+
self.modules_to_include_when_connected ||= []
|
19
|
+
self.modules_to_include_when_connected |= [{mod => options}]
|
20
|
+
unless self < OnConnect
|
21
|
+
include OnConnect
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module OnConnect
|
27
|
+
extend ActiveSupport::Concern
|
28
|
+
|
29
|
+
module ClassMethods
|
30
|
+
def connection(*)
|
31
|
+
super.tap do
|
32
|
+
self.modules_to_include_when_connected.each do |config|
|
33
|
+
config.each do |(mod, options)|
|
34
|
+
self.singleton_class.class_eval do
|
35
|
+
attr_accessor :modules_already_included_when_connected
|
36
|
+
end
|
37
|
+
self.modules_already_included_when_connected ||= []
|
38
|
+
next if self.modules_already_included_when_connected.include?(mod)
|
39
|
+
|
40
|
+
match = (
|
41
|
+
if options[:into_classes]
|
42
|
+
self.in? options[:into_classes]
|
43
|
+
else
|
44
|
+
self < ActiveRecord::Base && !self.abstract_class?
|
45
|
+
end
|
46
|
+
)
|
47
|
+
#puts %(Include #{mod} into #{self} (#{options.inspect})? #{match})
|
48
|
+
if match
|
49
|
+
puts "Including #{mod} into #{self}" if ActiveRecordInclude::WhenConnected.verbose
|
50
|
+
modules_already_included_when_connected << mod
|
51
|
+
class_eval do
|
52
|
+
include mod
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
ActiveSupport.on_load(:active_record) do
|
64
|
+
ActiveRecord::Base.class_eval do
|
65
|
+
include ActiveRecordInclude::WhenConnected
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module ActiveRecordInclude::WhenInherited
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
mattr_accessor :verbose, instance_accessor: false
|
5
|
+
@@verbose = false
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def include_when_inherited(mod)
|
9
|
+
self.class_eval do
|
10
|
+
unless defined?(modules_to_include_when_inherited)
|
11
|
+
class_attribute :modules_to_include_when_inherited
|
12
|
+
end
|
13
|
+
end
|
14
|
+
#puts %(#{self}.modules_to_include_when_inherited=#{self.modules_to_include_when_inherited.inspect})
|
15
|
+
self.modules_to_include_when_inherited ||= []
|
16
|
+
self.modules_to_include_when_inherited |= [mod]
|
17
|
+
unless self < OnInherit
|
18
|
+
include OnInherit
|
19
|
+
end
|
20
|
+
end
|
21
|
+
alias_method :include_in_subclasses, :include_when_inherited
|
22
|
+
|
23
|
+
def include_recursively(mod)
|
24
|
+
include mod
|
25
|
+
include_in_subclasses mod
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module OnInherit
|
30
|
+
extend ActiveSupport::Concern
|
31
|
+
|
32
|
+
module ClassMethods
|
33
|
+
private
|
34
|
+
def inherited(subclass)
|
35
|
+
super.tap do
|
36
|
+
subclass.modules_to_include_when_inherited.each do |mod|
|
37
|
+
if subclass < ActiveRecord::Base && !subclass.abstract_class?
|
38
|
+
puts "Including #{mod} into #{subclass}#{' (already an ancestor)' if self < mod}" if ActiveRecordInclude::WhenInherited.verbose
|
39
|
+
subclass.class_eval do
|
40
|
+
include mod
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
ActiveSupport.on_load(:active_record) do
|
51
|
+
ActiveRecord::Base.class_eval do
|
52
|
+
include ActiveRecordInclude::WhenInherited
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'active_support/core_ext/object/inclusion'
|
2
|
+
|
3
|
+
module ActiveRecordTextColumns
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
puts "#{self}: included ActiveRecordTextColumns" if ActiveRecordInclude::WhenInherited.verbose
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
def text_columns
|
12
|
+
columns.
|
13
|
+
select {|_| _.type.in? [:string, :text, :citext]}.
|
14
|
+
reject {|_| _.name.to_sym.in? text_columns_not_treated_as_text.map(&:to_sym) if respond_to?(:text_columns_not_treated_as_text) }
|
15
|
+
end
|
16
|
+
def text_column_names
|
17
|
+
text_columns.map(&:name).map(&:to_sym)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Get a list of text_column_names for every model
|
22
|
+
def self.text_column_names_by_model
|
23
|
+
::ActiveRecord::Base.descendants.each_with_object({}) do |model, hash|
|
24
|
+
next if model.abstract_class?
|
25
|
+
hash[model.name] = model.text_column_names
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: active_record_include
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tyler Rick
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-11-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.3'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '4.2'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.3'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: activerecord
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '4.2'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '5.3'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '4.2'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '5.3'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: bundler
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.17'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '1.17'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rake
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '10.0'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '10.0'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rspec
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - "~>"
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '3.0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - "~>"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '3.0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: sqlite3
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: normalizy
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
type: :development
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: pry
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: byebug
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
type: :development
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
description: Makes it easy to have specific concern modules included into all of your
|
152
|
+
models after the model has connected to the database
|
153
|
+
email:
|
154
|
+
- tyler@tylerrick.com
|
155
|
+
executables: []
|
156
|
+
extensions: []
|
157
|
+
extra_rdoc_files: []
|
158
|
+
files:
|
159
|
+
- ".gitignore"
|
160
|
+
- ".rspec"
|
161
|
+
- ".travis.yml"
|
162
|
+
- Gemfile
|
163
|
+
- Gemfile.lock
|
164
|
+
- License
|
165
|
+
- Rakefile
|
166
|
+
- Readme.md
|
167
|
+
- active_record_include.gemspec
|
168
|
+
- bin/console
|
169
|
+
- bin/setup
|
170
|
+
- lib/active_record_include.rb
|
171
|
+
- lib/active_record_include/version.rb
|
172
|
+
- lib/active_record_include/when_connected.rb
|
173
|
+
- lib/active_record_include/when_inherited.rb
|
174
|
+
- lib/active_record_text_columns.rb
|
175
|
+
- lib/normalize_text_columns.rb
|
176
|
+
homepage: http://github.com/TylerRick/active_record_include
|
177
|
+
licenses:
|
178
|
+
- MIT
|
179
|
+
metadata:
|
180
|
+
homepage_uri: http://github.com/TylerRick/active_record_include
|
181
|
+
source_code_uri: http://github.com/TylerRick/active_record_include
|
182
|
+
changelog_uri: 'TODO: Put your gem''s Changelog.md URL here.'
|
183
|
+
post_install_message:
|
184
|
+
rdoc_options: []
|
185
|
+
require_paths:
|
186
|
+
- lib
|
187
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: 2.3.0
|
192
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
requirements: []
|
198
|
+
rubyforge_project:
|
199
|
+
rubygems_version: 2.6.11
|
200
|
+
signing_key:
|
201
|
+
specification_version: 4
|
202
|
+
summary: Makes it easy to have specific concern modules included into all of your
|
203
|
+
models after the model has connected to the database
|
204
|
+
test_files: []
|