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

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
- ---
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: