active_null 1.0.0 → 1.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 +5 -5
- data/README.md +15 -0
- data/active_null.gemspec +3 -3
- data/lib/active_null.rb +7 -1
- data/lib/active_null/null_model_builder.rb +13 -3
- data/lib/active_null/version.rb +1 -1
- data/spec/active_null_spec.rb +5 -0
- data/spec/models.rb +2 -0
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 43176e04bb964761222c58d11c0aeef9fcdcbbc11cc67845bbd08867f7ea919a
|
4
|
+
data.tar.gz: 806ba32adadf898cc76a82707fb6f94fc20ed9be961f4322d33e9f87bcd69118
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 457eb6028294ebd1a5c55f11db46a1400cda19dffa12222e73d9007245da2bd600873f0233315d3b0edeafffea3b146032fc43fbd7c2b8705e0696351307fcda
|
7
|
+
data.tar.gz: 465e65a8cf576925d29733a6d857e772b9941741c368d6c2e09be955fe3999a43ba27480c90a6154ab84967308c334ac13227dfd929aaae877c11b16c9ec4cd0
|
data/README.md
CHANGED
@@ -96,6 +96,21 @@ You can then safely do something like:
|
|
96
96
|
@post = Post.find_by(id: 1).decorate
|
97
97
|
```
|
98
98
|
|
99
|
+
You can also define an alias for your `null` method for convenience
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
class User < ActiveRecord::Base
|
103
|
+
extend ActiveNull
|
104
|
+
|
105
|
+
null_model(:guest)
|
106
|
+
end
|
107
|
+
|
108
|
+
User.first # => <User>
|
109
|
+
User.null # => <null:User>
|
110
|
+
User.guest # => <null:User>
|
111
|
+
```
|
112
|
+
|
113
|
+
|
99
114
|
## Contributing
|
100
115
|
|
101
116
|
1. Fork it ( https://github.com/Originate/active_null/fork )
|
data/active_null.gemspec
CHANGED
@@ -7,10 +7,10 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = 'active_null'
|
8
8
|
spec.version = ActiveNull::VERSION
|
9
9
|
spec.authors = ['alexpeachey']
|
10
|
-
spec.email = ['alex.peachey@
|
10
|
+
spec.email = ['alex.peachey@gmail.com']
|
11
11
|
spec.summary = %q{Make ActiveRecord null model aware.}
|
12
12
|
spec.description = %q{Make ActiveRecord null model aware.}
|
13
|
-
spec.homepage = 'https://github.com/
|
13
|
+
spec.homepage = 'https://github.com/alexpeachey/active_null'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency 'rake'
|
25
25
|
spec.add_development_dependency 'rspec'
|
26
26
|
spec.add_development_dependency 'activerecord', '~> 4.2'
|
27
|
-
spec.add_development_dependency 'sqlite3'
|
27
|
+
spec.add_development_dependency 'sqlite3', '~> 1.3.6'
|
28
28
|
spec.add_development_dependency 'draper', '~> 2.1'
|
29
29
|
spec.add_development_dependency 'coveralls'
|
30
30
|
end
|
data/lib/active_null.rb
CHANGED
@@ -14,10 +14,16 @@ module ActiveNull
|
|
14
14
|
@polymorphic_null_defaults || {}
|
15
15
|
end
|
16
16
|
|
17
|
-
def null_model(&block)
|
17
|
+
def null_model(method_name=nil, &block)
|
18
18
|
@null_model_overrides = if block_given?
|
19
19
|
Module.new.tap { |m| m.module_eval(&block) }
|
20
20
|
end
|
21
|
+
|
22
|
+
if method_name
|
23
|
+
singleton_class.class_eval do
|
24
|
+
define_method(method_name) { null }
|
25
|
+
end
|
26
|
+
end
|
21
27
|
end
|
22
28
|
|
23
29
|
def find_by(*args, &block)
|
@@ -92,12 +92,22 @@ module ActiveNull
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def full_name
|
95
|
-
return name if
|
96
|
-
"#{
|
95
|
+
return name if module_parent == Object
|
96
|
+
"#{module_parent_name}::#{name}"
|
97
97
|
end
|
98
98
|
|
99
99
|
def set_null_model(null)
|
100
|
-
|
100
|
+
module_parent.const_set name, null
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
|
105
|
+
def module_parent
|
106
|
+
@module_parent ||= model.try(:module_parent) || model.parent
|
107
|
+
end
|
108
|
+
|
109
|
+
def module_parent_name
|
110
|
+
@module_parent_name ||= model.try(:module_parent_name) || model.parent.name
|
101
111
|
end
|
102
112
|
end
|
103
113
|
end
|
data/lib/active_null/version.rb
CHANGED
data/spec/active_null_spec.rb
CHANGED
@@ -21,6 +21,11 @@ describe ActiveNull do
|
|
21
21
|
specify { expect(Test::TestModel.null).to be_instance_of(Test::NullTestModel) }
|
22
22
|
end
|
23
23
|
|
24
|
+
describe '.guest' do
|
25
|
+
specify { expect(User.null).to be_instance_of(NullUser) }
|
26
|
+
specify { expect(User.guest).to be_instance_of(NullUser) }
|
27
|
+
end
|
28
|
+
|
24
29
|
describe '.null_model' do
|
25
30
|
specify { expect(Post.null.override).to eq 'I am an override.' }
|
26
31
|
end
|
data/spec/models.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_null
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- alexpeachey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: naught
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: sqlite3
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 1.3.6
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 1.3.6
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: draper
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
version: '0'
|
125
125
|
description: Make ActiveRecord null model aware.
|
126
126
|
email:
|
127
|
-
- alex.peachey@
|
127
|
+
- alex.peachey@gmail.com
|
128
128
|
executables: []
|
129
129
|
extensions: []
|
130
130
|
extra_rdoc_files: []
|
@@ -145,7 +145,7 @@ files:
|
|
145
145
|
- spec/null_spec.rb
|
146
146
|
- spec/schema.rb
|
147
147
|
- spec/spec_helper.rb
|
148
|
-
homepage: https://github.com/
|
148
|
+
homepage: https://github.com/alexpeachey/active_null
|
149
149
|
licenses:
|
150
150
|
- MIT
|
151
151
|
metadata: {}
|
@@ -164,8 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
164
|
- !ruby/object:Gem::Version
|
165
165
|
version: '0'
|
166
166
|
requirements: []
|
167
|
-
|
168
|
-
rubygems_version: 2.4.6
|
167
|
+
rubygems_version: 3.0.3
|
169
168
|
signing_key:
|
170
169
|
specification_version: 4
|
171
170
|
summary: Make ActiveRecord null model aware.
|