stimpack 1.0.0.alpha3 → 1.0.0.alpha4
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/lib/stimpack.rb +0 -17
- data/lib/stimpack/packs.rb +19 -4
- data/lib/stimpack/settings.rb +16 -23
- data/lib/stimpack/stim.rb +8 -14
- data/lib/stimpack/version.rb +1 -1
- metadata +1 -5
- data/lib/stimpack/autoloaders.rb +0 -11
- data/lib/stimpack/kernel.rb +0 -11
- data/lib/stimpack/require.rb +0 -47
- data/lib/stimpack/zeitwerk_proxy.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64cf8eebac14e77ccb68d74b80daf0e76184388a2da40a42934322f640b774e2
|
4
|
+
data.tar.gz: 9b48e360e8e8e60f0213c33bcbe192c5267474b9ee6aebc1d223228225d7835f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3f9a50ff656ff1104daee1f0a5b9c22cb107c7341094a2198eac38262ae46ec685ca83bcbd3b5ce2ab7d0fca4a78aca87e447f0f534483ad3334be659ca7e6e
|
7
|
+
data.tar.gz: 062c344182ceabbe779d1504c9baba9226334df3ce067a0c821e604172c74c55f72e19cdf452fef790f70cfb4476c364ecbf69c1c637c8d9af7589ffdb4ad95a
|
data/lib/stimpack.rb
CHANGED
@@ -4,14 +4,11 @@ require "rails"
|
|
4
4
|
module Stimpack
|
5
5
|
extend ActiveSupport::Autoload
|
6
6
|
|
7
|
-
# autoload :Require
|
8
|
-
autoload :Autoloaders
|
9
7
|
autoload :Integrations
|
10
8
|
autoload :Packs
|
11
9
|
autoload :Railtie
|
12
10
|
autoload :Settings
|
13
11
|
autoload :Stim
|
14
|
-
autoload :ZeitwerkProxy
|
15
12
|
|
16
13
|
class Error < StandardError; end
|
17
14
|
|
@@ -19,9 +16,6 @@ module Stimpack
|
|
19
16
|
def start!
|
20
17
|
@started = @started ? return : true
|
21
18
|
|
22
|
-
# Override Rails' autoloader accessors.
|
23
|
-
# Rails::Autoloaders.singleton_class.prepend(Autoloaders)
|
24
|
-
|
25
19
|
Packs.resolve
|
26
20
|
|
27
21
|
install_integrations
|
@@ -29,15 +23,6 @@ module Stimpack
|
|
29
23
|
|
30
24
|
def finalize!
|
31
25
|
@finalized = @finalized ? return : true
|
32
|
-
|
33
|
-
# Require.setup
|
34
|
-
end
|
35
|
-
|
36
|
-
def autoloader(original)
|
37
|
-
return original if @finalized
|
38
|
-
|
39
|
-
@autoloader_proxies ||= {}
|
40
|
-
@autoloader_proxies[original] ||= ZeitwerkProxy.new(original)
|
41
26
|
end
|
42
27
|
|
43
28
|
def [](name)
|
@@ -54,5 +39,3 @@ module Stimpack
|
|
54
39
|
end
|
55
40
|
|
56
41
|
require "stimpack/railtie"
|
57
|
-
# require "stimpack/require"
|
58
|
-
# require "stimpack/kernel"
|
data/lib/stimpack/packs.rb
CHANGED
@@ -5,19 +5,21 @@ require "rails"
|
|
5
5
|
module Stimpack
|
6
6
|
module Packs
|
7
7
|
PATH = Pathname.new("packs").freeze
|
8
|
+
PACK_CLASS = "Pack".freeze
|
8
9
|
|
9
10
|
class << self
|
10
11
|
def resolve
|
11
|
-
PATH.glob("**/#{Settings::
|
12
|
+
PATH.glob("**/#{Settings::PACK_CONFIG}").each do |path|
|
12
13
|
path = path.dirname
|
13
14
|
create(path.relative_path_from(PATH).to_s, path.expand_path)
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
18
|
def create(name, path)
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
settings = Settings.new(name, path)
|
20
|
+
namespace = create_namespace(settings.engine? ? Object : self, name)
|
21
|
+
stim = Stim.new(settings, namespace)
|
22
|
+
@packs[name] = namespace.const_set(PACK_CLASS, Class.new(Rails::Engine)).include(stim)
|
21
23
|
end
|
22
24
|
|
23
25
|
def find(path)
|
@@ -35,6 +37,19 @@ module Stimpack
|
|
35
37
|
def each(*args, &block)
|
36
38
|
@packs.each_value(*args, &block)
|
37
39
|
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def create_namespace(base, name)
|
44
|
+
namespace = ActiveSupport::Inflector.camelize(name)
|
45
|
+
namespace.split("::").reduce(base) do |current_base, mod|
|
46
|
+
if current_base.const_defined?(mod)
|
47
|
+
current_base.const_get(mod)
|
48
|
+
else
|
49
|
+
current_base.const_set(mod, Module.new)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
38
53
|
end
|
39
54
|
|
40
55
|
@packs = {}
|
data/lib/stimpack/settings.rb
CHANGED
@@ -2,39 +2,32 @@
|
|
2
2
|
|
3
3
|
module Stimpack
|
4
4
|
class Settings
|
5
|
-
|
5
|
+
PACK_CONFIG = "package.yml"
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
attr_reader :name
|
8
|
+
attr_reader :path
|
9
9
|
|
10
|
-
|
11
|
-
@
|
12
|
-
|
13
|
-
|
14
|
-
def path
|
15
|
-
@pack.called_from
|
10
|
+
def initialize(name, path)
|
11
|
+
@name = name
|
12
|
+
@path = path
|
16
13
|
end
|
17
14
|
|
18
15
|
def relative_path
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
def name
|
23
|
-
@name ||= ActiveSupport::Inflector.underscore(namespace.name)
|
16
|
+
Rails.root.relative_path_from(@path)
|
24
17
|
end
|
25
18
|
|
26
|
-
def
|
27
|
-
|
19
|
+
def engine
|
20
|
+
config.fetch("engine", false)
|
28
21
|
end
|
22
|
+
alias_method :engine?, :engine
|
29
23
|
|
30
|
-
|
31
|
-
# @config.fetch("implicit_namespace", true)
|
32
|
-
# end
|
33
|
-
# alias_method :implicit_namespace?, :implicit_namespace
|
24
|
+
private
|
34
25
|
|
35
|
-
def
|
36
|
-
@config
|
26
|
+
def config
|
27
|
+
@config ||= begin
|
28
|
+
package_config = YAML.load_file(path.join(PACK_CONFIG))
|
29
|
+
package_config.fetch("metadata", {}).freeze
|
30
|
+
end
|
37
31
|
end
|
38
|
-
alias_method :isolate_namespace?, :isolate_namespace
|
39
32
|
end
|
40
33
|
end
|
data/lib/stimpack/stim.rb
CHANGED
@@ -1,32 +1,26 @@
|
|
1
1
|
module Stimpack
|
2
2
|
class Stim < Module
|
3
|
-
def initialize(
|
4
|
-
@
|
3
|
+
def initialize(settings, namespace)
|
4
|
+
@settings = settings
|
5
|
+
@namespace = namespace
|
5
6
|
super()
|
6
7
|
end
|
7
8
|
|
8
9
|
def included(engine)
|
9
|
-
engine.
|
10
|
+
engine.attr_accessor(:settings)
|
11
|
+
engine.settings = @settings
|
12
|
+
engine.called_from = @settings.path
|
10
13
|
engine.extend(ClassMethods)
|
11
|
-
settings = engine.settings
|
12
14
|
|
13
|
-
if settings.
|
14
|
-
engine.isolate_namespace(
|
15
|
+
if @settings.engine?
|
16
|
+
engine.isolate_namespace(@namespace)
|
15
17
|
end
|
16
|
-
|
17
|
-
# if settings.implicit_namespace?
|
18
|
-
# engine.paths["lib"].skip_load_path!
|
19
|
-
# end
|
20
18
|
end
|
21
19
|
|
22
20
|
module ClassMethods
|
23
21
|
def find_root(_from)
|
24
22
|
called_from
|
25
23
|
end
|
26
|
-
|
27
|
-
def settings
|
28
|
-
@settings ||= Stimpack::Settings.new(self)
|
29
|
-
end
|
30
24
|
end
|
31
25
|
end
|
32
26
|
end
|
data/lib/stimpack/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stimpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.alpha4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ngan Pham
|
@@ -63,18 +63,14 @@ files:
|
|
63
63
|
- bin/console
|
64
64
|
- bin/setup
|
65
65
|
- lib/stimpack.rb
|
66
|
-
- lib/stimpack/autoloaders.rb
|
67
66
|
- lib/stimpack/integrations.rb
|
68
67
|
- lib/stimpack/integrations/factory_bot.rb
|
69
68
|
- lib/stimpack/integrations/rspec.rb
|
70
|
-
- lib/stimpack/kernel.rb
|
71
69
|
- lib/stimpack/packs.rb
|
72
70
|
- lib/stimpack/railtie.rb
|
73
|
-
- lib/stimpack/require.rb
|
74
71
|
- lib/stimpack/settings.rb
|
75
72
|
- lib/stimpack/stim.rb
|
76
73
|
- lib/stimpack/version.rb
|
77
|
-
- lib/stimpack/zeitwerk_proxy.rb
|
78
74
|
homepage: https://github.com/Gusto/stimpack
|
79
75
|
licenses: []
|
80
76
|
metadata:
|
data/lib/stimpack/autoloaders.rb
DELETED
data/lib/stimpack/kernel.rb
DELETED
data/lib/stimpack/require.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Stimpack
|
4
|
-
class Require
|
5
|
-
IGNORED_PATH_PREFIXES = ["/", "./"].freeze
|
6
|
-
RUBY_EXTENSION = ".rb"
|
7
|
-
|
8
|
-
include Singleton
|
9
|
-
|
10
|
-
attr_accessor :enabled
|
11
|
-
|
12
|
-
def self.resolve(path)
|
13
|
-
instance.resolve(path)
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.setup
|
17
|
-
instance.setup
|
18
|
-
end
|
19
|
-
|
20
|
-
def initialize
|
21
|
-
@packs = {}
|
22
|
-
end
|
23
|
-
|
24
|
-
def setup
|
25
|
-
@setup = @setup ? return : true
|
26
|
-
|
27
|
-
Packs.each do |pack|
|
28
|
-
if pack.settings.implicit_namespace?
|
29
|
-
@packs["#{pack.settings.name}/"] = "#{pack.paths["lib"].first}/"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def resolve(path)
|
35
|
-
path = path.to_s
|
36
|
-
return if path.start_with?(*IGNORED_PATH_PREFIXES)
|
37
|
-
|
38
|
-
@packs.find do |pack_path, full_path|
|
39
|
-
if path.start_with?(pack_path)
|
40
|
-
full_pack_path = path.sub(pack_path, full_path)
|
41
|
-
full_pack_path.concat(RUBY_EXTENSION) unless full_pack_path.end_with?(RUBY_EXTENSION)
|
42
|
-
return File.exist?(full_pack_path) && full_pack_path
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require "active_support"
|
2
|
-
|
3
|
-
module Stimpack
|
4
|
-
class ZeitwerkProxy
|
5
|
-
delegate_missing_to :@loader
|
6
|
-
|
7
|
-
def initialize(loader)
|
8
|
-
@loader = loader
|
9
|
-
end
|
10
|
-
|
11
|
-
def push_dir(path, namespace: Object)
|
12
|
-
@loader.push_dir(path, namespace: _resolve_namespace(path) || namespace)
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def _resolve_namespace(path)
|
18
|
-
pack = Packs.find(path)
|
19
|
-
return unless pack
|
20
|
-
|
21
|
-
pack.settings.namespace if pack.settings.implicit_namespace?
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|