26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/immunio/plugins/io.rb', line 26
def self.inject(mod, name, methods)
mod.class_eval " def self.extended(base)\n \#{methods.inspect}.each do |method|\n Immunio::Utils.alias_method_chain base.singleton_class, method, :immunio\n end\n end\n\n def self.included(base)\n \#{methods.inspect}.each do |method|\n Immunio::Utils.alias_method_chain base, method, :immunio\n end\n end\n EOF\n Immunio.logger.debug { \"IO: successfully chained \#{name} \#{methods}\" }\n methods.each do |method|\n mod.class_eval <<-EOF\n def \#{method}_with_immunio(*args, &block) # def read_with_immunio(*args, &block)\n if Immunio::IOHooks.paused?\n \#{method}_without_immunio(*args, &block)\n else\n Request.time \"plugin\", \"IO::\#{method}\" do #\n strict_context, loose_context, stack = Immunio::Context.context()\n\n Immunio.run_hook! \"io\", \"file_io\", # Immunio.run_hook! \"io\", \"open\",\n method: \"\#{name}\#{method}\", # open_method: \"IO.read\",\n parameters: args, # parameters: args\n stack: stack, #\n context_key: loose_context, #\n cwd: Dir.pwd\n Request.pause \"plugin\", \"IO::\#{method}\" do #\n \#{method}_without_immunio(*args, &block) # read_without_immunio(*args, &block)\n end\n end\n end\n end # end\n EOF\n Immunio.logger.debug { \"IO: successfully created hook for \#{name} \#{method}\" }\n end\nend\n"
|