vm_shepherd 3.0.0 → 3.0.1
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/vm_shepherd/backport_refinements.rb +44 -0
- data/lib/vm_shepherd/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 394514726a5ce70ec01aa0db45305865f9b542c7
|
4
|
+
data.tar.gz: 30ded8fab4a49b9f6565ccac637ec5754a457a1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2f55bbdc5b6071e8ac9557abb39614cb0a97cc5770dd02b3edaa442d745b62f5220c18fcbb32c4300890ad14056b17092c79b3f546cf275eba4934551a090d2
|
7
|
+
data.tar.gz: 8dc42e6b512d1f068c673c805ae872d8b94a38335ed8ef6708fda7969871372116d7a02ff605ef742cb4a5b2768159909264b69592caf3f8df45a61c81a040b6
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# rubocop:disable all
|
2
|
+
|
1
3
|
module VmShepherd
|
2
4
|
module BackportRefinements
|
3
5
|
def self.should_refine?
|
@@ -17,6 +19,25 @@ module VmShepherd
|
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
22
|
+
def self.ported_dig_for_recursive_open_struct(obj, indices)
|
23
|
+
head = indices.first
|
24
|
+
|
25
|
+
if head.is_a?(Integer)
|
26
|
+
new_obj = obj[head]
|
27
|
+
elsif
|
28
|
+
new_obj = obj[head] || obj[head.to_sym]
|
29
|
+
end
|
30
|
+
|
31
|
+
if indices.count == 1
|
32
|
+
new_obj
|
33
|
+
elsif new_obj == nil
|
34
|
+
return nil
|
35
|
+
else
|
36
|
+
tail = indices[1..-1]
|
37
|
+
ported_dig(new_obj, tail)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
20
41
|
refine Array do
|
21
42
|
next unless BackportRefinements.should_refine?
|
22
43
|
|
@@ -32,5 +53,28 @@ module VmShepherd
|
|
32
53
|
BackportRefinements.ported_dig(self, indices)
|
33
54
|
end
|
34
55
|
end
|
56
|
+
|
57
|
+
begin
|
58
|
+
# This little piece of awful-ness is needed because we back-ported
|
59
|
+
# this gem to 1.6 version of OpsManager, which still uses RecursiveOpenStruct
|
60
|
+
# because of ops_manager_ui_drivers
|
61
|
+
|
62
|
+
# Therefore, we need this to function in contexts where recursive open struct is
|
63
|
+
# a dependency, without leaking into other contexts.
|
64
|
+
|
65
|
+
# Delete this once we stop supporting 1.6
|
66
|
+
|
67
|
+
require 'recursive_open_struct'
|
68
|
+
|
69
|
+
refine RecursiveOpenStruct do
|
70
|
+
def dig(*indices)
|
71
|
+
BackportRefinements.ported_dig_for_recursive_open_struct(to_h, indices)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
rescue LoadError
|
76
|
+
end
|
77
|
+
|
35
78
|
end
|
36
79
|
end
|
80
|
+
# rubocop:enable all
|
data/lib/vm_shepherd/version.rb
CHANGED