conventional_extensions 0.2.1 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 247b8f8bd45e5773afe0f35f6cf4210321bca59d901637f460e65381e6111711
4
- data.tar.gz: 6dcf112c67bb3ec3df18ac7ff3b8c7c77b11dc513be3da153c4b825ef8de8775
3
+ metadata.gz: 3a9c04f9382953e08d30d29f802edd622ef28f91da4314d77c21d7f0eb09f2fe
4
+ data.tar.gz: b51b6c673302e93aec88613b42e1e7c44a7c0d4055165057ffac546614fd357f
5
5
  SHA512:
6
- metadata.gz: 0cbb425f5eb691dcaaec2755cdd426e4950d0c26fde845739a23e663939899eb1baeb1e4ebb66f761350ada334eb67b96e0fa929671be246c1016b4a7856f983
7
- data.tar.gz: 54dc95e8c7bdc679192b1ca5a2bb7e2d9deb38da220036401a9b34ed6d38e48bda24a5e1db80389ab6287d1d788d89e9f97b59fd2829ebcb86ef4fcddbbaee66
6
+ metadata.gz: ed770c9838eb07f7c752bf2f1973edf9a5ad77511ec6d939600114d203a3e6db9270d5ec8ef3b354c6914728ca0afe259c128d569aef0c9639928c6c4ed36895
7
+ data.tar.gz: d5035eff9ad821562a828dc671927a89fffe2ad1f1fe49d91b3c3147131837ecc9c82caa8adaaf26ab48149bc92a9520a3bce514efdd11380a53ff36fa657b18
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.0] - 2022-09-27
4
+
5
+ - Fixes defining a nested extension, e.g. `Organization::User` with `app/models/organization/user/extensions/`.
6
+ - Removes support for defining a nested extension within the namespace file. I couldn't unify it with the fix above, so it went.
7
+
8
+ ## [0.2.2] - 2022-09-08
9
+
10
+ - Fixes Zeitwerk 2.6.0 compatibility issue where extensions wouldn't load and throw an exception. See https://github.com/kaspth/conventional_extensions/commit/7fc25f1e860637e8df9fd0e81e7ca038c8c34aa0
11
+
3
12
  ## [0.2.1] - 2022-09-07
4
13
 
5
14
  - Fixes `extend ConventionalExtensions.load_on_inherited` not finding the right directory to load extensions from. See https://github.com/kaspth/conventional_extensions/commit/1f6fe9cbf2fe44ed9d699a5dd485eaa366d875a4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- conventional_extensions (0.2.0)
4
+ conventional_extensions (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -5,7 +5,7 @@ require "set"
5
5
  class ConventionalExtensions::Loader
6
6
  def initialize(klass, path)
7
7
  @loaded, @klass, @matcher = Set.new, klass, /\s*class #{klass.name}/
8
- @path_format = File.join File.dirname(path), underscore(klass.name), "extensions", "%s.rb"
8
+ @path_format = File.join path.sub(/\.rb$/, "/extensions/%s.rb")
9
9
  end
10
10
 
11
11
  def load(*extensions)
@@ -14,12 +14,6 @@ class ConventionalExtensions::Loader
14
14
  end
15
15
 
16
16
  private
17
- # Logic borrowed from Active Support:
18
- # https://github.com/rails/rails/blob/a2fc96a80cf26c11df3e86e86c1b2b61736af80c/activesupport/lib/active_support/inflector/methods.rb#L99
19
- def underscore(name)
20
- name.gsub("::", "/").tap { _1.gsub!(/([A-Z]+)(?=[A-Z][a-z])|([a-z\d])(?=[A-Z])/) { ($1 || $2) << "_" } }.tap(&:downcase!)
21
- end
22
-
23
17
  def extension_paths
24
18
  Dir.glob extension_path_for("*")
25
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ConventionalExtensions
4
- VERSION = "0.2.1"
4
+ VERSION = "0.3.0"
5
5
  end
@@ -5,8 +5,8 @@ require_relative "conventional_extensions/version"
5
5
  module ConventionalExtensions
6
6
  Object.extend self # We're enriching object itself, so any object can call `load_extensions`.
7
7
 
8
- def load_extensions(*extensions)
9
- @loader = Loader.new(self, Object.const_source_location(name).first) unless loader_defined_before_entrance = defined?(@loader)
8
+ def load_extensions(*extensions, from: Frame.previous.path)
9
+ @loader = Loader.new(self, from) unless loader_defined_before_entrance = defined?(@loader)
10
10
  @loader.load(*extensions)
11
11
  ensure
12
12
  @loader = nil unless loader_defined_before_entrance
@@ -19,7 +19,13 @@ module ConventionalExtensions
19
19
  module LoadOnInherited
20
20
  def inherited(klass)
21
21
  super
22
- klass.load_extensions
22
+ klass.load_extensions from: Frame.previous.path
23
+ end
24
+ end
25
+
26
+ module Frame
27
+ def self.previous
28
+ caller_locations(2, 1).first # Use 2 instead of 1 so we get the frame of who called us.
23
29
  end
24
30
  end
25
31
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conventional_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kasper Timm Hansen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-07 00:00:00.000000000 Z
11
+ date: 2022-09-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: