metasploit-concern 0.3.1 → 0.4.0.pre.app.pre.concerns.pre.eager.pre.load
Sign up to get free protection for your applications and to get access to all the features.
- 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
|