conventional_extensions 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: