eac_ruby_utils 0.101.0 → 0.102.0
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
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c7e86736386edb4c749cb5fbe79308fc1fd55021153c0dda8cb663ed85e50ab
|
4
|
+
data.tar.gz: 350abe9716ee7bc7ac031c65c7ac94b029a1b1a3f0ea80de98cb877519c53d6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2a88f7354c4529dc5a00e00f19276b5445d226375e135ff35eb4aa0e01cf7bf4326efafdb0524c87f9430dc779b16215a806a3558a19ff3ba1c540d52a25e93
|
7
|
+
data.tar.gz: 6a8c6f5e3bef91ea69eee363ed327893385b6ee7f93063078957c3fa55b509b0c30a28cba603a9872be2b18d5172e5310c116dd6c9c54de85a15b9e40ce8cd27
|
@@ -1,37 +1,70 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'bundler'
|
4
|
+
require 'eac_ruby_utils/ruby/on_replace_objects'
|
4
5
|
|
5
6
|
module EacRubyUtils
|
6
7
|
module Ruby
|
7
8
|
class << self
|
8
9
|
# Executes a block in an environment when the variables BUNDLE* and RUBY* are removed.
|
9
|
-
def on_clean_environment
|
10
|
-
|
11
|
-
on_clean_envvars('BUNDLE', 'RUBY') { yield }
|
12
|
-
end
|
10
|
+
def on_clean_environment(&block)
|
11
|
+
OnCleanEnvironment.new(&block).perform
|
13
12
|
end
|
14
13
|
|
15
|
-
|
14
|
+
class OnCleanEnvironment
|
15
|
+
ENVVARS_PREFIXES_TO_CLEAN = %w[BUNDLE RUBY].freeze
|
16
|
+
|
17
|
+
attr_reader :block, :original_env
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
::
|
20
|
-
else
|
21
|
-
::Bundler.with_clean_env(&block)
|
19
|
+
def initialize(&block)
|
20
|
+
@block = block
|
21
|
+
@original_env = ::ENV.to_h
|
22
22
|
end
|
23
|
-
end
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
ensure
|
30
|
-
old_values&.each { |k, v| ENV[k] = v }
|
31
|
-
end
|
24
|
+
# @return [Array<String>]
|
25
|
+
def envvars_prefixes_to_clean
|
26
|
+
ENVVARS_PREFIXES_TO_CLEAN
|
27
|
+
end
|
32
28
|
|
33
|
-
|
34
|
-
|
29
|
+
def perform
|
30
|
+
bundler_with_unbundled_env do
|
31
|
+
on_clean_envvars
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def bundler_with_unbundled_env(&block)
|
38
|
+
with_bundler_modified do
|
39
|
+
::Bundler.send(bundler_with_env_method_name, &block)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def bundler_with_env_method_name
|
44
|
+
if ::Bundler.respond_to?(:with_unbundled_env)
|
45
|
+
:with_unbundled_env
|
46
|
+
else
|
47
|
+
:with_clean_env
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def clean_env
|
52
|
+
r = original_env.dup
|
53
|
+
r.delete_if { |k, _| envvars_prefixes_to_clean.any? { |prefix| k.start_with?(prefix) } }
|
54
|
+
r
|
55
|
+
end
|
56
|
+
|
57
|
+
def on_clean_envvars
|
58
|
+
::Bundler.send('with_env', clean_env) { block.call }
|
59
|
+
end
|
60
|
+
|
61
|
+
def with_bundler_modified(&block)
|
62
|
+
cloned_env = original_env.dup
|
63
|
+
::EacRubyUtils::Ruby.on_replace_objects do |replacer|
|
64
|
+
replacer.replace_self_method(::Bundler, :original_env) { cloned_env }
|
65
|
+
block.call
|
66
|
+
end
|
67
|
+
end
|
35
68
|
end
|
36
69
|
end
|
37
70
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/inflector'
|
4
|
+
require 'eac_ruby_utils/ruby/on_replace_objects/replace_instance_method'
|
5
|
+
|
6
|
+
module EacRubyUtils
|
7
|
+
module Ruby
|
8
|
+
class OnReplaceObjects
|
9
|
+
class ReplaceInstanceMethod
|
10
|
+
attr_reader :a_module, :method_new_block, :original_method
|
11
|
+
|
12
|
+
def initialize(a_module, method_name, &method_new_block)
|
13
|
+
@a_module = a_module
|
14
|
+
@original_method = a_module.instance_method(method_name)
|
15
|
+
@method_new_block = method_new_block
|
16
|
+
end
|
17
|
+
|
18
|
+
def apply
|
19
|
+
a_module.define_method(method_name, &method_new_block)
|
20
|
+
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
def method_name
|
25
|
+
original_method.name
|
26
|
+
end
|
27
|
+
|
28
|
+
def restore
|
29
|
+
a_module.define_method(method_name, original_method)
|
30
|
+
|
31
|
+
self
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/inflector'
|
4
|
+
require 'eac_ruby_utils/ruby/on_replace_objects/replace_instance_method'
|
5
|
+
|
6
|
+
module EacRubyUtils
|
7
|
+
module Ruby
|
8
|
+
class << self
|
9
|
+
def on_replace_objects
|
10
|
+
replacer = OnReplaceObjects.new
|
11
|
+
replacer.on_replacement do
|
12
|
+
yield(replacer)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class OnReplaceObjects
|
18
|
+
def on_replacement(&block)
|
19
|
+
clear_replacements
|
20
|
+
block.call(self)
|
21
|
+
ensure
|
22
|
+
restore_replacements
|
23
|
+
end
|
24
|
+
|
25
|
+
def replace_instance_method(a_module, method_name, &block)
|
26
|
+
add_replacement(__method__, a_module, method_name, &block)
|
27
|
+
end
|
28
|
+
|
29
|
+
def replace_self_method(object, method_name, &block)
|
30
|
+
add_replacement(:replace_instance_method, object.singleton_class, method_name, &block)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def add_replacement(method_name, *args, &block)
|
36
|
+
@replacements << replacement_class(method_name).new(*args, &block).apply
|
37
|
+
end
|
38
|
+
|
39
|
+
def replacement_class(method_name)
|
40
|
+
self.class.const_get(::ActiveSupport::Inflector.camelize(method_name))
|
41
|
+
end
|
42
|
+
|
43
|
+
def clear_replacements
|
44
|
+
@replacements = []
|
45
|
+
end
|
46
|
+
|
47
|
+
def restore_replacements
|
48
|
+
@replacements.reverse.each(&:restore)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_ruby_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.102.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -36,14 +36,14 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '2.
|
39
|
+
version: '2.8'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '2.
|
46
|
+
version: '2.8'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -62,16 +62,16 @@ dependencies:
|
|
62
62
|
name: filesize
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0'
|
67
|
+
version: '0.2'
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '0'
|
74
|
+
version: '0.2'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: net-ssh
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -256,6 +256,8 @@ files:
|
|
256
256
|
- lib/eac_ruby_utils/ruby.rb
|
257
257
|
- lib/eac_ruby_utils/ruby/command.rb
|
258
258
|
- lib/eac_ruby_utils/ruby/on_clean_environment.rb
|
259
|
+
- lib/eac_ruby_utils/ruby/on_replace_objects.rb
|
260
|
+
- lib/eac_ruby_utils/ruby/on_replace_objects/replace_instance_method.rb
|
259
261
|
- lib/eac_ruby_utils/settings_provider.rb
|
260
262
|
- lib/eac_ruby_utils/settings_provider/setting_value.rb
|
261
263
|
- lib/eac_ruby_utils/simple_cache.rb
|