metasploit-concern 0.3.1 → 0.4.0.pre.app.pre.concerns.pre.eager.pre.load
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/metasploit/concern.rb +7 -0
- data/lib/metasploit/concern/engine.rb +13 -9
- data/lib/metasploit/concern/error.rb +8 -0
- data/lib/metasploit/concern/error/base.rb +4 -0
- data/lib/metasploit/concern/error/eager_load.rb +17 -0
- data/lib/metasploit/concern/error/skip_autoload.rb +15 -0
- data/lib/metasploit/concern/version.rb +4 -2
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d39b6b285869860965908a82e66258700a373784
|
4
|
+
data.tar.gz: cb60d58aad9d081456a98d239684155b0e3a08e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 417e9ed3422d57aab511209eec4abbcb61b2987b8a1fc73ee1f129b56807e56a3fd5d11a947ceb5d3f61f619bb321ca3bffb0918778b34968dd38eff3b147b61
|
7
|
+
data.tar.gz: b2f650eaed33a42f1790e881b980908915fcf09001d4ca82bb9ff757f4675a0376ffe99a04765fbf4fbcefd3004769b387cd67ac3aad1b400db7cf00a69e9910
|
data/lib/metasploit/concern.rb
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
# `String#underscore``
|
6
6
|
require 'active_support/core_ext/string/inflections'
|
7
|
+
# `ActiveSupport::Autoload`
|
8
|
+
require 'active_support/dependencies/autoload'
|
7
9
|
# `ActiveSupport.run_load_hooks`
|
8
10
|
require 'active_support/lazy_load_hooks'
|
9
11
|
|
@@ -77,6 +79,11 @@ module Metasploit
|
|
77
79
|
# end
|
78
80
|
# end
|
79
81
|
module Concern
|
82
|
+
extend ActiveSupport::Autoload
|
83
|
+
|
84
|
+
autoload :Error
|
85
|
+
autoload :EagerLoadError
|
86
|
+
|
80
87
|
# @note If `Rails` is loaded and {Metasploit::Concern::Engine} is defined, just use
|
81
88
|
# `Metasploit::Concern::Engine.root`.
|
82
89
|
#
|
@@ -30,17 +30,21 @@ module Metasploit
|
|
30
30
|
concerns_path = engine.paths['app/concerns']
|
31
31
|
|
32
32
|
if concerns_path
|
33
|
+
if concerns_path.eager_load?
|
34
|
+
raise Metasploit::Concern::Error::EagerLoad, engine
|
35
|
+
end
|
36
|
+
|
37
|
+
unless concerns_path.autoload?
|
38
|
+
raise Metasploit::Concern::Error::SkipAutoload, engine
|
39
|
+
end
|
40
|
+
|
33
41
|
concerns_directories = concerns_path.existent_directories
|
34
|
-
else
|
35
|
-
# app/concerns is not set, so just derive it from root. Cannot
|
36
|
-
# derive from app because it will glob app/models too
|
37
|
-
concerns_directories = [engine.root.join('app', 'concerns').to_path]
|
38
|
-
end
|
39
42
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
43
|
+
concerns_directories.each do |concerns_directory|
|
44
|
+
concerns_pathname = Pathname.new(concerns_directory)
|
45
|
+
loader = Metasploit::Concern::Loader.new(root: concerns_pathname)
|
46
|
+
loader.register
|
47
|
+
end
|
44
48
|
end
|
45
49
|
end
|
46
50
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Exception raised when a `Rails::Engine` has left its `'app/concerns'` path as `eager_load: true`
|
2
|
+
class Metasploit::Concern::Error::EagerLoad < Metasploit::Concern::Error::Base
|
3
|
+
# @param engine [Rails::Engine] `Rails::Engine` where `engine.paths['app/concerns'].eager_load?` is `true`.
|
4
|
+
def initialize(engine)
|
5
|
+
@engine = engine
|
6
|
+
|
7
|
+
super(
|
8
|
+
"#{engine}'s `app/concerns` is marked as `eager_load: true`. This will cause circular dependency " \
|
9
|
+
"errors when the concerns are loaded. Declare `app/concerns` to stop it from inheriting `eager_load: true` " \
|
10
|
+
"from `app`: \n" \
|
11
|
+
"\n" \
|
12
|
+
" class #{engine} < Rails::Engine\n" \
|
13
|
+
" config.paths.add 'app/concerns', autoload: true\n" \
|
14
|
+
" end\n"
|
15
|
+
)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Exception raised when a `Rails::Engine` has left its `'app/concerns'` path as `autoload_load: false`
|
2
|
+
class Metasploit::Concern::Error::SkipAutoload < Metasploit::Concern::Error::Base
|
3
|
+
# @param engine [Rails::Engine] `Rails::Engine` where `engine.paths['app/concerns'].autoload?` is `false`.
|
4
|
+
def initialize(engine)
|
5
|
+
@engine = engine
|
6
|
+
|
7
|
+
super(
|
8
|
+
"#{engine}'s `app/concerns` is marked as `autoload: false`. Declare `app/concerns` as autoloading:\n" \
|
9
|
+
"\n" \
|
10
|
+
" class #{engine} < Rails::Engine\n" \
|
11
|
+
" config.paths.add 'app/concerns', autoload: true\n" \
|
12
|
+
" end\n"
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
@@ -5,9 +5,11 @@ module Metasploit
|
|
5
5
|
# The major version number.
|
6
6
|
MAJOR = 0
|
7
7
|
# The minor version number, scoped to the {MAJOR} version number.
|
8
|
-
MINOR =
|
8
|
+
MINOR = 4
|
9
9
|
# The patch number, scoped to the {MAJOR} and {MINOR} version numbers.
|
10
|
-
PATCH =
|
10
|
+
PATCH = 0
|
11
|
+
# The prerelease version, scoped to the {MAJOR}, {MINOR}, and {PATCH} version numbers.
|
12
|
+
PRERELEASE = 'app-concerns-eager-load'
|
11
13
|
|
12
14
|
# The full version string, including the {MAJOR}, {MINOR}, {PATCH}, and optionally, the `PRERELEASE` in the
|
13
15
|
# {http://semver.org/spec/v2.0.0.html semantic versioning v2.0.0} format.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metasploit-concern
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0.pre.app.pre.concerns.pre.eager.pre.load
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Imhoff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -60,6 +60,10 @@ files:
|
|
60
60
|
- app/models/metasploit/concern/loader.rb
|
61
61
|
- lib/metasploit/concern.rb
|
62
62
|
- lib/metasploit/concern/engine.rb
|
63
|
+
- lib/metasploit/concern/error.rb
|
64
|
+
- lib/metasploit/concern/error/base.rb
|
65
|
+
- lib/metasploit/concern/error/eager_load.rb
|
66
|
+
- lib/metasploit/concern/error/skip_autoload.rb
|
63
67
|
- lib/metasploit/concern/version.rb
|
64
68
|
- lib/tasks/yard.rake
|
65
69
|
- spec/support/shared/examples/metasploit/concern/run.rb
|
@@ -78,9 +82,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
78
82
|
version: '2.1'
|
79
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
84
|
requirements:
|
81
|
-
- - "
|
85
|
+
- - ">"
|
82
86
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
87
|
+
version: 1.3.1
|
84
88
|
requirements: []
|
85
89
|
rubyforge_project:
|
86
90
|
rubygems_version: 2.4.3
|