Abstract base class for installers. Used by passenger-install-apache2-module and passenger-install-nginx-module.
# File lib/phusion_passenger/abstract_installer.rb, line 130
130: def check_dependencies
131: new_screen
132: missing_dependencies = []
133: color_puts "<banner>Checking for required software...</banner>"
134: puts
135: dependencies.each do |dep|
136: color_print " * #{dep.name}... "
137: result = dep.check
138: if result.found?
139: if result.found_at
140: color_puts "<green>found at #{result.found_at}</green>"
141: else
142: color_puts "<green>found</green>"
143: end
144: else
145: color_puts "<red>not found</red>"
146: missing_dependencies << dep
147: end
148: end
149:
150: if missing_dependencies.empty?
151: return true
152: else
153: puts
154: color_puts "<red>Some required software is not installed.</red>"
155: color_puts "But don't worry, this installer will tell you how to install them.\n"
156: color_puts "<b>Press Enter to continue, or Ctrl-C to abort.</b>"
157: if PhusionPassenger.natively_packaged?
158: wait(10)
159: else
160: wait
161: end
162:
163: line
164: puts
165: color_puts "<banner>Installation instructions for required software</banner>"
166: puts
167: missing_dependencies.each do |dep|
168: print_dependency_installation_instructions(dep)
169: puts
170: end
171: color_puts "If the aforementioned instructions didn't solve your problem, then please take"
172: color_puts "a look at the Users Guide:"
173: puts
174: color_puts " <yellow>#{users_guide}</yellow>"
175: return false
176: end
177: end
# File lib/phusion_passenger/abstract_installer.rb, line 54
54: def color_print(text)
55: STDOUT.write(ConsoleTextTemplate.new(:text => text).result)
56: STDOUT.flush
57: end
# File lib/phusion_passenger/abstract_installer.rb, line 59
59: def color_puts(text)
60: color_print("#{text}\n")
61: end
# File lib/phusion_passenger/abstract_installer.rb, line 126
126: def dependencies
127: return []
128: end
# File lib/phusion_passenger/abstract_installer.rb, line 73
73: def line
74: puts "--------------------------------------------"
75: end
# File lib/phusion_passenger/abstract_installer.rb, line 67
67: def new_screen
68: puts
69: line
70: puts
71: end
# File lib/phusion_passenger/abstract_installer.rb, line 179
179: def print_dependency_installation_instructions(dep)
180: color_puts " * To install <yellow>#{dep.name}</yellow>:"
181: if !dep.install_command.nil?
182: color_puts " Please run <b>#{dep.install_command}</b> as root."
183: elsif !dep.install_instructions.nil?
184: color_puts " " << dep.install_instructions
185: elsif !dep.website.nil?
186: color_puts " Please download it from <b>#{dep.website}</b>"
187: if !dep.website_comments.nil?
188: color_puts " (#{dep.website_comments})"
189: end
190: else
191: color_puts " Search Google."
192: end
193: end
# File lib/phusion_passenger/abstract_installer.rb, line 77
77: def prompt(message)
78: done = false
79: while !done
80: color_print "#{message}: "
81: begin
82: result = STDIN.readline
83: rescue EOFError
84: exit 2
85: end
86: result.strip!
87: done = !block_given? || yield(result)
88: end
89: return result
90: rescue Interrupt
91: exit 2
92: end
# File lib/phusion_passenger/abstract_installer.rb, line 63
63: def render_template(name, options = {})
64: puts ConsoleTextTemplate.new({ :file => name }, options).result
65: end
# File lib/phusion_passenger/abstract_installer.rb, line 49
49: def reset_terminal_colors
50: STDOUT.write("\e[0m")
51: STDOUT.flush
52: end
# File lib/phusion_passenger/abstract_installer.rb, line 114
114: def sh(*args)
115: puts "# #{args.join(' ')}"
116: result = system(*args)
117: if result
118: return true
119: elsif $?.signaled? && $?.termsig == Signal.list["INT"]
120: raise Interrupt
121: else
122: return false
123: end
124: end
# File lib/phusion_passenger/abstract_installer.rb, line 94
94: def wait(timeout = nil)
95: return if @auto
96: begin
97: if timeout
98: require 'timeout' unless defined?(Timeout)
99: begin
100: Timeout.timeout(timeout) do
101: STDIN.readline
102: end
103: rescue Timeout::Error
104: # Do nothing.
105: end
106: else
107: STDIN.readline
108: end
109: rescue Interrupt
110: exit 2
111: end
112: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.