Methods
Public Class methods
[ show source ]
# File lib/phusion_passenger/plugin.rb, line 56
56: def self.call_hook(name, *args, &block)
57: last_result = nil
58: if (hooks_list = @@hooks[name])
59: hooks_list.each do |callback|
60: last_result = callback.call(*args, &block)
61: end
62: end
63: return last_result
64: end
[ show source ]
# File lib/phusion_passenger/plugin.rb, line 33
33: def self.load(name, load_once = true)
34: PLUGIN_DIRS.each do |plugin_dir|
35: if plugin_dir =~ /\A~/
36: # File.expand_path uses ENV['HOME'] which we don't want.
37: home = Etc.getpwuid(Process.uid).dir
38: plugin_dir = plugin_dir.sub(/\A~/, home)
39: end
40: plugin_dir = File.expand_path(plugin_dir)
41: Dir["#{plugin_dir}/*/#{name}.rb"].each do |filename|
42: if load_once
43: require(filename)
44: else
45: load(filename)
46: end
47: end
48: end
49: end
[ show source ]
# File lib/phusion_passenger/plugin.rb, line 71
71: def initialize(name, *args, &block)
72: Plugin.load(name)
73: classes = @@classes[name]
74: if classes
75: @instances = classes.map do |klass|
76: klass.new(*args, &block)
77: end
78: else
79: return nil
80: end
81: end
[ show source ]
# File lib/phusion_passenger/plugin.rb, line 66
66: def self.register(name, klass)
67: classes = (@@classes[name] ||= [])
68: classes << klass
69: end
[ show source ]
# File lib/phusion_passenger/plugin.rb, line 51
51: def self.register_hook(name, &block)
52: hooks_list = (@@hooks[name] ||= [])
53: hooks_list << block
54: end
Public Instance methods
[ show source ]
# File lib/phusion_passenger/plugin.rb, line 83
83: def call_hook(name, *args, &block)
84: last_result = nil
85: if @instances
86: @instances.each do |instance|
87: if instance.respond_to?(name.to_sym)
88: last_result = instance.__send__(name.to_sym, *args, &block)
89: end
90: end
91: end
92: return last_result
93: end