drawers 0.9.0 → 1.0.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 +4 -4
- data/README.md +10 -2
- data/lib/drawers/active_support/dependency_extensions.rb +25 -8
- data/lib/drawers/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 547bbfdc39e1cc5b38254434164b02117a230183
|
4
|
+
data.tar.gz: fc3935786da5d374eea5396f311b38013e8270cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5306dd6851fc5657187a102ab3440e479ceb4aec382a965014515b73afed89d4bbfd94f510296f0a43b07d5ae2d7147a097320364f8472a4ad45b94ffd02414
|
7
|
+
data.tar.gz: 374d3683b4ff1d5defe22d287e60ad73e42099bbc38c78224395dafd9c3a63162f7590b36322c0bca5a74250afb84713ac8e07971a08ba50fe259d94de4c236a
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
#
|
2
|
-
Group
|
1
|
+
# Drawers
|
2
|
+
Group related classes together. No more silos.
|
3
3
|
|
4
4
|
[](https://badge.fury.io/rb/drawers)
|
5
5
|
[](https://travis-ci.org/NullVoxPopuli/drawers)
|
@@ -127,3 +127,11 @@ Sets the folder for the new structure to be in the `app/pods` directory if you w
|
|
127
127
|
Feel free to open an issue, or fork and make a pull request.
|
128
128
|
|
129
129
|
All discussion is welcome :-)
|
130
|
+
|
131
|
+
|
132
|
+
---------------
|
133
|
+
|
134
|
+
The gem name 'Drawers' was provided by @bartboy011.
|
135
|
+
Thanks @bartboy011!
|
136
|
+
|
137
|
+
The previous name of this gem was Rails Module Unification -- which, while a homage to its inspiration, Ember's Module Unification app architecture, it's quite a mouthful, and doesn't exactly make for a good gem name.
|
@@ -3,6 +3,7 @@ module Drawers
|
|
3
3
|
module DependencyExtensions
|
4
4
|
RESOURCE_SUFFIX_NAMES = %w(
|
5
5
|
Controller
|
6
|
+
Form
|
6
7
|
Serializer
|
7
8
|
Operations
|
8
9
|
Presenters
|
@@ -11,6 +12,8 @@ module Drawers
|
|
11
12
|
Services
|
12
13
|
).freeze
|
13
14
|
|
15
|
+
ERROR_CIRCULAR_DEPENDENCY = 'Circular dependency detected while autoloading constant'
|
16
|
+
|
14
17
|
# Join all the suffix names together with an "OR" operator
|
15
18
|
RESOURCE_SUFFIXES = /(#{RESOURCE_SUFFIX_NAMES.join('|')})/
|
16
19
|
|
@@ -21,16 +24,14 @@ module Drawers
|
|
21
24
|
expanded = File.expand_path(file_path)
|
22
25
|
expanded.sub!(/\.rb\z/, '')
|
23
26
|
|
24
|
-
if loading.include?(expanded)
|
25
|
-
raise "Circular dependency detected while autoloading constant #{qualified_name}"
|
26
|
-
else
|
27
|
-
require_or_load(expanded, qualified_name)
|
28
|
-
unless from_mod.const_defined?(const_name, false)
|
29
|
-
raise LoadError, "Unable to autoload constant #{qualified_name}, expected #{file_path} to define it"
|
30
|
-
end
|
27
|
+
raise "#{ERROR_CIRCULAR_DEPENDENCY} #{qualified_name}" if loading.include?(expanded)
|
31
28
|
|
32
|
-
|
29
|
+
require_or_load(expanded, qualified_name)
|
30
|
+
unless from_mod.const_defined?(const_name, false)
|
31
|
+
raise LoadError, "Unable to autoload constant #{qualified_name}, expected #{file_path} to define it"
|
33
32
|
end
|
33
|
+
|
34
|
+
from_mod.const_get(const_name)
|
34
35
|
end
|
35
36
|
|
36
37
|
# A look for the possible places that various qualified names could be
|
@@ -105,9 +106,25 @@ module Drawers
|
|
105
106
|
break if file_path.present?
|
106
107
|
end
|
107
108
|
|
109
|
+
# Note that sometimes, the resource_type path may only be defined in a
|
110
|
+
# resource type folder
|
111
|
+
# So, look for the first file within the resource type folder
|
112
|
+
# because of ruby namespacing conventions if there is a file in the folder,
|
113
|
+
# it MUST define the namespace
|
114
|
+
file_path = path_for_first_file_in(path_options.last) unless file_path
|
115
|
+
|
108
116
|
file_path
|
109
117
|
end
|
110
118
|
|
119
|
+
def path_for_first_file_in(path)
|
120
|
+
return if path.blank?
|
121
|
+
|
122
|
+
path_in_app = "#{Rails.root}/app/resources/#{path.pluralize}"
|
123
|
+
return unless File.directory?(path_in_app)
|
124
|
+
|
125
|
+
Dir.glob("#{path_in_app}/*.rb").first
|
126
|
+
end
|
127
|
+
|
111
128
|
def to_path(*args)
|
112
129
|
args.flatten.reject(&:blank?).map(&:underscore).join('/')
|
113
130
|
end
|
data/lib/drawers/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drawers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- L. Preston Sego III
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
-
description: Group
|
139
|
+
description: Group related classes together. No more silos.
|
140
140
|
email: LPSego3+dev@gmail.com
|
141
141
|
executables: []
|
142
142
|
extensions: []
|
@@ -172,8 +172,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
172
|
version: '0'
|
173
173
|
requirements: []
|
174
174
|
rubyforge_project:
|
175
|
-
rubygems_version: 2.5.
|
175
|
+
rubygems_version: 2.5.2
|
176
176
|
signing_key:
|
177
177
|
specification_version: 4
|
178
|
-
summary: Drawers-0.
|
178
|
+
summary: Drawers-1.0.0
|
179
179
|
test_files: []
|