rails_module_unification 0.7.0 → 0.7.1

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
  SHA1:
3
- metadata.gz: 242883465990fa99744ab5d34a36edbb481b404a
4
- data.tar.gz: 77eeaecbb970da8cd11b089791cadc7bd8d1cf51
3
+ metadata.gz: 369fdde3d87f5a85780905994dbdf681cd649355
4
+ data.tar.gz: 81611173e795da1a64bd7427984dd3cfecd822af
5
5
  SHA512:
6
- metadata.gz: 96c5446792bc5a2f236c06ef57e991e686894a0d8258961bafc3d177b06161172e7cab5cf2c263725bf4aff58d9243b04f2fa83b453851adfac1de3f2c339711
7
- data.tar.gz: 3d2d4e0b01b3f04038ac2876b4a4d05e6d6b06b4014a81f27ed2f06091194f93884fd2aa5758da01b1b40f50df5c088df9aebbecdba308ea02c2a5f75469243b
6
+ metadata.gz: d9ee53bbd5e68def83faa2787ad9618869ed49537d6cbf57938a27d96aee4e7de442ba426faf98e5de97d1ae364e1bc9a9f7d7d9bd8080e3ef254517d2644579
7
+ data.tar.gz: 477a3e292c488bda8a1a458f2328bac4f754e85ed51a56f370527b906cc56f758d2cd44409bfad5e378f36fb00c6c1736c986ae079283be19332fc36e5c476e3
data/README.md CHANGED
@@ -14,6 +14,10 @@ With large rails application, the default architecture can result in a resource'
14
14
 
15
15
  This gem provides a way to re-structure your app so that like-objects are grouped together.
16
16
 
17
+ All this gem does is add some new autoloading / path resolution logic. This gem does not provide any service/operation/policy/etc functionality.
18
+
19
+ **All of this is optional, and can be slowly migrated to over time. Adding this gem does not force you to change your app.**
20
+
17
21
  ### The new structure
18
22
 
19
23
  ```
@@ -42,8 +46,37 @@ app/
42
46
 
43
47
  ```
44
48
 
49
+ Does this new structure mean you have to change the class names of all your classes? Nope. In the above example file structure, `app/resources/posts/controller.rb` _still_ defines `class PostsController < ApplicationController`
50
+
45
51
  [Checkout the sample rails app in the tests directory.](https://github.com/NullVoxPopuli/rails_module_unification/tree/master/spec/support/rails_app/app)
46
52
 
53
+ ### The Convention
54
+
55
+ Say, for example, you have _any_ class/module defined as:
56
+
57
+ ```ruby
58
+ module Api # {namespace
59
+ module V3 # namespace}
60
+ module UserServices # {resource_name}{resource_type}
61
+ module Authentication # {class_path
62
+ class OAuth2 # class_path/file_name}
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ ```
69
+
70
+ As long as some part of the fully qualified class name (in this example: `Api::V3::UserServices::Authentication::OAuth2`) contains any of the [defined keywords](https://github.com/NullVoxPopuli/rails_module_unification/blob/master/lib/rails_module_unification/active_support/dependency_extensions.rb#L4), the file will be found at `app/resources/api/v3/users/services/authentication/oauth2.rb`.
71
+
72
+ The pattern for this is: `app/resources/:namespace/:resource_name/:resource_type/:class_path` where:
73
+ - `:namespace` is the namespace/parents of the `UserService`
74
+ - `:resource_type` is a suffix that may be inferred by checking of the inclusion of the defined keywords (linked above)
75
+ - `:resource_name` is the same module/class as what the `resource_type` is derived from, sans the `resource_type`
76
+ - `:class_path` is the remaining namespaces and eventually the class that the target file defines.
77
+
78
+ So... what if you have a set of classes that don't fit the pattern exactly? You can leave those files where they are currently, or move them to `app/resources`, if it makes sense to do so. Feel free to open an issue / PR if you feel the list of resource types needs updating.
79
+
47
80
  ## Usage
48
81
 
49
82
  ```ruby
@@ -13,32 +13,5 @@ module RailsModuleUnification
13
13
  super(path)
14
14
  @path = path
15
15
  end
16
-
17
- # def find_templates(name, prefix, partial, details)
18
- # binding.pry
19
- # super(name, prefix, partial, details)
20
- # end
21
- #
22
- # def build_query(path, details)
23
- #
24
- # query = @pattern.dup
25
- #
26
- # binding.pry
27
- # prefix = path.prefix.empty? ? '' : "#{escape_entry(path.prefix)}\\1"
28
- # query.gsub!(/:prefix(\/)?/, prefix)
29
- #
30
- # partial = escape_entry(path.partial? ? "_#{path.name}" : path.name)
31
- # query.gsub!(/:action/, partial)
32
- #
33
- # details.each do |ext, candidates|
34
- # if ext == :variants && candidates == :any
35
- # query.gsub!(/:#{ext}/, "*")
36
- # else
37
- # query.gsub!(/:#{ext}/, "{#{candidates.compact.uniq.join(',')}}")
38
- # end
39
- # end
40
- # puts File.expand_path(query, @path)
41
- # File.expand_path(query, @path)
42
- # end
43
16
  end
44
17
  end
@@ -8,6 +8,7 @@ module RailsModuleUnification
8
8
  Presenters
9
9
  Policy
10
10
  Policies
11
+ Services
11
12
  ).freeze
12
13
 
13
14
  # Join all the suffix names together with an "OR" operator
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module RailsModuleUnification
3
- VERSION = '0.7.0'
3
+ VERSION = '0.7.1'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_module_unification
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - L. Preston Sego III
@@ -189,5 +189,5 @@ rubyforge_project:
189
189
  rubygems_version: 2.6.7
190
190
  signing_key:
191
191
  specification_version: 4
192
- summary: RailsModuleUnification-0.7.0
192
+ summary: RailsModuleUnification-0.7.1
193
193
  test_files: []