metasploit-concern 0.3.0 → 0.3.1.pre.autoload.pre.compatibility

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
- ---
2
- SHA1:
3
- metadata.gz: 8df0797f09f99a58246f8715fdc70113fa09741c
4
- data.tar.gz: 1cf06def2723c884b0fe81902f75d2d255f8bbd2
5
- SHA512:
6
- metadata.gz: c2f00dc8ad58b4c20549a95ea5c4adda80f12509b90762823e0d64ad0c5bc6989d9fd809f5a44954e2637d4b35619296df7c893b0f77aa57fa37bc66dfc28c8f
7
- data.tar.gz: 7a2fa0b378422d5d6e9f013d3dd0481c1745e511cb816a3ba75c171094ad3148329a5292fbf59846952a9b4ee6dba98398e801c9e9b572a97b49e63ffd18bf3c
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 017a7fc1d13a3b124f775b749720d67838082476
4
+ data.tar.gz: 75025bd466c12c546998f4e1138ed22202c630d5
5
+ SHA512:
6
+ metadata.gz: ad9abfc720058eaa4be0d285ea012c39372c5858a0cc190ada8d640011f96c0e78141b77954c0ba78ba841ebab30434e8ca9acd4e2542ad37092264efde1301c
7
+ data.tar.gz: 27d08e1d509e2677818f88f4b3121d508ecbea809b664b4e8e98bbc2e4e1ce04a712e7deaee11cdaf76d02532096ba1d5e7cc171f52e84904df431cd7cc2c6b2
data/CONTRIBUTING.md CHANGED
@@ -139,7 +139,7 @@ If your changes are incompatible with the previous branch's API, then increment
139
139
  - [ ] Following the rules for [semantic versioning 2.0](http://semver.org/spec/v2.0.0.html), update [`MINOR`](lib/metasploit/concern/version.rb) and [`PATCH`](lib/metasploit/concern/version.rb) and commit the changes.
140
140
 
141
141
  ## MRI Ruby
142
- - [ ] `rvm use ruby-1.9.3@metasploit-concern`
142
+ - [ ] `rvm use ruby-2.1@metasploit-concern`
143
143
  - [ ] `rm Gemfile.lock`
144
144
  - [ ] `bundle install`
145
145
  - [ ] `rake release`
@@ -154,4 +154,4 @@ When releasing new versions, the following projects may need to be updated:
154
154
  * [metasploit-framework](https://github.com/rapid7/metasploit-framework)
155
155
  * [metasploit-pro-ui](https://github.com/rapid7/pro/tree/master/ui)
156
156
  * [metasploit-pro-engine](https://github.com/rapid7/pro/tree/master/engine)
157
- * [firewall_egress](https://github.com/rapid7/pro/tree/master/metamodules/firewall_egress)
157
+ * [firewall_egress](https://github.com/rapid7/pro/tree/master/metamodules/firewall_egress)
@@ -25,14 +25,19 @@ class Metasploit::Concern::Loader
25
25
 
26
26
  # Yields each constant under `parent_pathname`.
27
27
  #
28
+ # @param mechanism [:constantize, :require] `:require` if child pathname should be required so that the constant
29
+ # cannot be unloaded by `ActiveSupport::Dependencies.clear`.
28
30
  # @param parent_pathname [Pathname]
29
31
  # @yield [constant]
30
32
  # @yieldparam constant [Module] constant declared under `parent_pathname`.
31
33
  # @yieldreturn [void]
32
34
  # @return [void]
33
- def each_pathname_constant(parent_pathname)
35
+ def each_pathname_constant(mechanism:, parent_pathname:)
34
36
  parent_pathname.each_child do |child_pathname|
35
- constant = constantize_pathname(child_pathname)
37
+ constant = constantize_pathname(
38
+ mechanism: mechanism,
39
+ pathname: child_pathname
40
+ )
36
41
 
37
42
  if constant
38
43
  yield constant
@@ -82,12 +87,14 @@ class Metasploit::Concern::Loader
82
87
  loader = self
83
88
 
84
89
  ActiveSupport.on_load(on_load_name) do
85
- loader.each_pathname_constant(module_pathname) do |concern|
86
- include concern
90
+ if ActiveSupport::Dependencies.autoloaded? self
91
+ mechanism = :constantize
92
+ else
93
+ mechanism = :require
87
94
  end
88
95
 
89
- if defined?(Rails) && Rails.env.development?
90
- unloadable
96
+ loader.each_pathname_constant(mechanism: mechanism, parent_pathname: module_pathname) do |concern|
97
+ include concern
91
98
  end
92
99
  end
93
100
  end
@@ -97,15 +104,23 @@ class Metasploit::Concern::Loader
97
104
 
98
105
  # Converts `descendant_pathname`, which should be under {#root}, into a constant.
99
106
  #
100
- # @param descendant_pathname [Pathname] a Pathname under {#root}.
107
+ # @param mechanism [:constantize, :require] `:require` if pathname should be required so that the constant cannot be
108
+ # unloaded by `ActiveSupport::Dependencies.clear`.
109
+ # @param pathname [Pathname] a Pathname under {#root}.
101
110
  # @return [Object] if {#pathname_to_constant_name} returns a constant name
102
111
  # @return [nil] otherwise
103
- def constantize_pathname(descendant_pathname)
104
- constant_name = pathname_to_constant_name(descendant_pathname)
112
+ def constantize_pathname(mechanism:, pathname:)
113
+ constant_name = pathname_to_constant_name(pathname)
105
114
 
106
115
  constant = nil
107
116
 
108
117
  if constant_name
118
+ # require before calling constantize so that the constant isn't recorded as unloadable.
119
+ if mechanism == :require
120
+ require pathname
121
+ end
122
+
123
+ # constantize either way as the the constant_name still needs to be converted to Module
109
124
  constant = constant_name.constantize
110
125
  end
111
126
 
@@ -6,8 +6,10 @@ module Metasploit
6
6
  MAJOR = 0
7
7
  # The minor version number, scoped to the {MAJOR} version number.
8
8
  MINOR = 3
9
- # The patch number, scoped to the {MINOR} version number.
10
- PATCH = 0
9
+ # The patch number, scoped to the {MAJOR} and {MINOR} version numbers.
10
+ PATCH = 1
11
+ # The prerelease version, scoped to the {MAJOR}, {MINOR}, and {PATCH} version numbers.
12
+ PRERELEASE = 'autoload-compatibility'
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,49 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: metasploit-concern
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1.pre.autoload.pre.compatibility
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Luke Imhoff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2014-10-03 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
- requirement: &id001 !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ~>
19
- - !ruby/object:Gem::Version
20
- version: "3.0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
21
20
  - - ">="
22
- - !ruby/object:Gem::Version
21
+ - !ruby/object:Gem::Version
23
22
  version: 3.0.0
24
23
  type: :runtime
25
24
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
33
+ - !ruby/object:Gem::Dependency
28
34
  name: railties
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- requirements:
31
- - - <
32
- - !ruby/object:Gem::Version
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "<"
38
+ - !ruby/object:Gem::Version
33
39
  version: 4.0.0
34
40
  type: :runtime
35
41
  prerelease: false
36
- version_requirements: *id002
37
- description: Automatically includes Modules from app/concerns/<module_with_concerns>/<concern>.rb into <module_with_concerns> to ease monkey-patching associations and validations on ActiveRecord::Base descendents from other gems when layering schemas.
38
- email:
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: 4.0.0
47
+ description: Automatically includes Modules from app/concerns/<module_with_concerns>/<concern>.rb
48
+ into <module_with_concerns> to ease monkey-patching associations and validations
49
+ on ActiveRecord::Base descendents from other gems when layering schemas.
50
+ email:
39
51
  - luke_imhoff@rapid7.com
40
52
  executables: []
41
-
42
53
  extensions: []
43
-
44
54
  extra_rdoc_files: []
45
-
46
- files:
55
+ files:
47
56
  - CONTRIBUTING.md
48
57
  - LICENSE
49
58
  - README.md
@@ -55,31 +64,28 @@ files:
55
64
  - lib/tasks/yard.rake
56
65
  - spec/support/shared/examples/metasploit/concern/run.rb
57
66
  homepage: https://github.com/rapid7/metasploit-concern
58
- licenses:
67
+ licenses:
59
68
  - BSD-3-clause
60
69
  metadata: {}
61
-
62
70
  post_install_message:
63
71
  rdoc_options: []
64
-
65
- require_paths:
72
+ require_paths:
66
73
  - lib
67
- required_ruby_version: !ruby/object:Gem::Requirement
68
- requirements:
69
- - &id003
70
- - ">="
71
- - !ruby/object:Gem::Version
72
- version: "0"
73
- required_rubygems_version: !ruby/object:Gem::Requirement
74
- requirements:
75
- - *id003
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '2.1'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">"
82
+ - !ruby/object:Gem::Version
83
+ version: 1.3.1
76
84
  requirements: []
77
-
78
85
  rubyforge_project:
79
- rubygems_version: 2.4.1
86
+ rubygems_version: 2.4.3
80
87
  signing_key:
81
88
  specification_version: 4
82
89
  summary: Automatically include Modules from app/concerns
83
90
  test_files: []
84
-
85
91
  has_rdoc: