descendants_describable 0.0.6 → 0.0.7
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 +4 -4
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/README.md +6 -0
- data/lib/descendants_describable/version.rb +1 -1
- data/lib/descendants_describable.rb +35 -3
- metadata +5 -4
- data/.rvmrc +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 75e1789e4082b1a6239f9bad3fb497729c83bc08
|
|
4
|
+
data.tar.gz: c08b66a1c6d403021970aafc5ec179514b911582
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8277354cf0644d64455e0ec8f8cee4ffb4194418c185bca4aa43d59382329357bf3f468ab6d95eca8e169665ea896cb9879c6ac1fff2d7132e7cd4859b9ac148
|
|
7
|
+
data.tar.gz: 995a75860c2d8855682339b9b84d63acb3c55120642a2b8e45518b30f8da74d6701d42d69782a2a1b4f03bafb3087a173033403a1ab2af2cd35fb2c9014926cc
|
data/.ruby-gemset
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
descendants_describable --create
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.4.1
|
data/README.md
CHANGED
|
@@ -97,6 +97,12 @@ end
|
|
|
97
97
|
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
+
## Note
|
|
101
|
+
|
|
102
|
+
You should put any calls to `describe_descendants_with` somewhere where it will only be executed
|
|
103
|
+
once per boot of your app (including code reloading), such as an initializer(s). This is because
|
|
104
|
+
each time you call `describe_descendants_with`, a hook is registered with Rails via
|
|
105
|
+
`ActiveSupport::Reloader.to_run`; you don't want to register duplicate reload hooks.
|
|
100
106
|
|
|
101
107
|
## Contributing
|
|
102
108
|
|
|
@@ -5,7 +5,10 @@ module DescendantsDescribable
|
|
|
5
5
|
|
|
6
6
|
module ClassMethods
|
|
7
7
|
def describe_descendants_with(description_module, &block)
|
|
8
|
-
DescendantsDescriptor.new(self, description_module
|
|
8
|
+
descriptor = DescendantsDescriptor.new(self, description_module, block)
|
|
9
|
+
descriptor.describe_descendants
|
|
10
|
+
descriptor.register_reload_hook
|
|
11
|
+
descriptor
|
|
9
12
|
end
|
|
10
13
|
end
|
|
11
14
|
|
|
@@ -14,10 +17,38 @@ module DescendantsDescribable
|
|
|
14
17
|
|
|
15
18
|
attr_accessor :new_class
|
|
16
19
|
|
|
17
|
-
def initialize(parent, description_module)
|
|
20
|
+
def initialize(parent, description_module, description_proc)
|
|
18
21
|
@common_modules = []
|
|
22
|
+
@descendant_names = []
|
|
19
23
|
@parent = parent
|
|
20
24
|
@description_module = description_module
|
|
25
|
+
@description_proc = description_proc
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def describe_descendants
|
|
29
|
+
instance_exec(&@description_proc)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def undefine_descendants
|
|
33
|
+
@descendant_names.each do |descendant_name|
|
|
34
|
+
Object.send(:remove_const, descendant_name) if Object.const_defined?(descendant_name)
|
|
35
|
+
end
|
|
36
|
+
@descendant_names = []
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def reload_parent
|
|
40
|
+
parent_name = @parent.name.to_sym
|
|
41
|
+
Object.send(:remove_const, parent_name) if Object.const_defined?(parent_name)
|
|
42
|
+
@parent = ActiveSupport::Dependencies.load_missing_constant(Object, parent_name)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def register_reload_hook
|
|
46
|
+
descriptor = self
|
|
47
|
+
ActiveSupport::Reloader.to_run do
|
|
48
|
+
descriptor.undefine_descendants
|
|
49
|
+
descriptor.reload_parent
|
|
50
|
+
descriptor.describe_descendants
|
|
51
|
+
end
|
|
21
52
|
end
|
|
22
53
|
|
|
23
54
|
def add_module(mod)
|
|
@@ -31,6 +62,7 @@ module DescendantsDescribable
|
|
|
31
62
|
rescue NameError
|
|
32
63
|
new_class = Class.new(@parent)
|
|
33
64
|
Object.const_set(name.to_s.camelize, new_class)
|
|
65
|
+
@descendant_names << name.to_s.camelize.to_sym
|
|
34
66
|
new_class
|
|
35
67
|
end
|
|
36
68
|
|
|
@@ -55,4 +87,4 @@ module DescendantsDescribable
|
|
|
55
87
|
@description_module.const_get(method.to_s.camelize) rescue false
|
|
56
88
|
end
|
|
57
89
|
end
|
|
58
|
-
end
|
|
90
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: descendants_describable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- winfred
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-06-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -117,7 +117,8 @@ extensions: []
|
|
|
117
117
|
extra_rdoc_files: []
|
|
118
118
|
files:
|
|
119
119
|
- ".gitignore"
|
|
120
|
-
- ".
|
|
120
|
+
- ".ruby-gemset"
|
|
121
|
+
- ".ruby-version"
|
|
121
122
|
- Gemfile
|
|
122
123
|
- LICENSE.txt
|
|
123
124
|
- README.md
|
|
@@ -148,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
148
149
|
version: '0'
|
|
149
150
|
requirements: []
|
|
150
151
|
rubyforge_project:
|
|
151
|
-
rubygems_version: 2.
|
|
152
|
+
rubygems_version: 2.6.12
|
|
152
153
|
signing_key:
|
|
153
154
|
specification_version: 4
|
|
154
155
|
summary: Turn a module of behavioral concerns into a DSL for describing a large set
|
data/.rvmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
rvm ruby-2.1.1@descendants_describable --create
|