hayabusa 0.0.3 → 0.0.4

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.
data/Gemfile CHANGED
@@ -8,6 +8,7 @@ gem "erubis"
8
8
  gem "mail"
9
9
  gem "datet"
10
10
  gem "http2"
11
+ gem "tpool"
11
12
 
12
13
  # Add dependencies to develop your gem here.
13
14
  # Include everything needed to run rake, tests, features, etc.
@@ -11,8 +11,8 @@ GEM
11
11
  bundler (~> 1.0)
12
12
  git (>= 1.2.5)
13
13
  rake
14
- json (1.7.4)
15
- knjrbfw (0.0.85)
14
+ json (1.7.5)
15
+ knjrbfw (0.0.87)
16
16
  datet
17
17
  http2
18
18
  php4r
@@ -23,7 +23,7 @@ GEM
23
23
  mime-types (~> 1.16)
24
24
  treetop (~> 1.4.8)
25
25
  mime-types (1.19)
26
- php4r (0.0.2)
26
+ php4r (0.0.3)
27
27
  datet
28
28
  http2
29
29
  polyglot (0.3.3)
@@ -37,6 +37,7 @@ GEM
37
37
  diff-lcs (~> 1.1.2)
38
38
  rspec-mocks (2.3.0)
39
39
  sqlite3 (1.3.6)
40
+ tpool (0.0.1)
40
41
  treetop (1.4.10)
41
42
  polyglot
42
43
  polyglot (>= 0.3.1)
@@ -57,3 +58,4 @@ DEPENDENCIES
57
58
  mail
58
59
  rspec (~> 2.3.0)
59
60
  sqlite3
61
+ tpool
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
@@ -22,135 +22,8 @@ begin
22
22
  require "fileutils"
23
23
  require "#{File.dirname(Knj::Os.realpath(__FILE__))}/../lib/hayabusa.rb"
24
24
 
25
- #Spawn CGI-variable to emulate FCGI part.
26
- cgi_tools = Hayabusa::Cgi_tools.new
27
-
28
- #We cant define the Hayabusa-server untuil we receive the first headers, so wait for the first request.
29
- hayabusa = nil
30
- hayabusa_fcgi_conf_path = nil
31
- fcgi_proxy = nil
32
-
33
- $stderr.puts "[hayabusa] Starting FCGI." if debug
34
- FCGI.each_cgi do |cgi|
35
- begin
36
- #cgi.print "Content-Type: text/html\r\n"
37
- #cgi.print "\r\n"
38
-
39
- #Set 'cgi'-variable for CGI-tools.
40
- cgi_tools.cgi = cgi
41
-
42
- #Ensure the same FCGI-process isnt active for more than one website.
43
- raise "Expected 'HTTP_HAYABUSA_FCGI_CONFIG' to be '#{hayabusa_fcgi_conf_path}' but it wasnt: '#{cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]}'." if hayabusa_fcgi_conf_path and hayabusa_fcgi_conf_path != cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]
44
-
45
- if !hayabusa
46
- raise "No HTTP_HAYABUSA_FCGI_CONFIG-header was given." if !cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]
47
- hayabusa_fcgi_conf_path = cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]
48
- require hayabusa_fcgi_conf_path
49
- raise "No 'Hayabusa::FCGI_CONF'-constant was spawned by '#{cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]}'." if !Hayabusa.const_defined?(:FCGI_CONF)
50
- conf = Hayabusa::FCGI_CONF
51
-
52
- hayabusa_conf = Hayabusa::FCGI_CONF[:hayabusa]
53
- hayabusa_conf.merge!(
54
- :cmdline => false,
55
- :port => 0 #Ruby picks random port and we get the actual port after starting the appserver.
56
- )
57
-
58
- #Figure out if this should be a host-FCGI-process or a proxy-FCGI-process.
59
- fcgi_config_fp = "#{Knj::Os.tmpdir}/hayabusa_fcgi_#{hayabusa_conf[:title]}_fcgi.conf"
60
- FileUtils.touch(fcgi_config_fp) if !File.exists?(fcgi_config_fp)
61
-
62
- begin
63
- File.open(fcgi_config_fp) do |fp|
64
- fp.flock(File::LOCK_EX)
65
-
66
- fcgi_config_cont = File.read(fcgi_config_fp)
67
-
68
- if !fcgi_config_cont.empty?
69
- fcgi_config = Marshal.load(File.read(fcgi_config_fp))
70
- pid = fcgi_config[:pid]
71
-
72
- if Knj::Unix_proc.pid_running?(pid)
73
- fcgi_proxy = fcgi_config
74
-
75
- require "http2"
76
- http = Http2.new(:host => "localhost", :port => fcgi_proxy[:port].to_i)
77
- fcgi_proxy[:http] = http
78
- end
79
- else
80
- fcgi_config = nil
81
- end
82
-
83
- if !fcgi_proxy
84
- File.open(fcgi_config_fp, "w") do |fp|
85
- hayabusa = Hayabusa.new(hayabusa_conf)
86
-
87
- #Start web-server for proxy-requests.
88
- hayabusa.start
89
-
90
- fp.write(Marshal.dump(
91
- :pid => Process.pid,
92
- :port => hayabusa.port
93
- ))
94
- end
95
- end
96
- end
97
- ensure
98
- File.open(fcgi_config_fp).flock(File::LOCK_UN)
99
- end
100
- end
101
-
102
-
103
-
104
- if fcgi_proxy
105
- #Proxy request to the host-FCGI-process.
106
- $stderr.puts "[hayabusa] Proxying request." if debug
107
- cgi_tools.proxy_request_to(:cgi => cgi, :http => fcgi_proxy[:http])
108
- else
109
- #Host the FCGI-process.
110
- $stderr.puts "[hayabusa] Running request as CGI." if debug
111
-
112
- #Enforce $stdout variable.
113
- $stdout = hayabusa.cio
114
-
115
- #The rest is copied from the FCGI-part.
116
- headers = {}
117
- cgi.env_table.each do |key, val|
118
- if key[0, 5] == "HTTP_" and key != "HTTP_HAYABUSA_FCGI_CONFIG"
119
- key = key[5, key.length].gsub("_", " ").gsub(" ", "-")
120
- headers[key] = val
121
- end
122
- end
123
-
124
- meta = cgi.env_table.to_hash
125
-
126
- uri = Knj::Web.parse_uri(meta["REQUEST_URI"])
127
- meta["PATH_TRANSLATED"] = File.basename(uri[:path])
128
-
129
- cgi_data = {
130
- :cgi => cgi,
131
- :headers => headers,
132
- :get => Knj::Web.parse_urlquery(cgi.env_table["QUERY_STRING"], :urldecode => true, :force_utf8 => true),
133
- :meta => meta
134
- }
135
- if cgi.request_method == "POST"
136
- cgi_data[:post] = cgi_tools.convert_fcgi_post(cgi.params)
137
- else
138
- cgi_data[:post] = {}
139
- end
140
-
141
- hayabusa.config[:cgi] = cgi_data
142
-
143
-
144
- #Handle request.
145
- hayabusa.start_cgi_request
146
- end
147
- rescue Exception => e
148
- cgi.print "Content-Type: text/html\r\n"
149
- cgi.print "\r\n"
150
- cgi.print Knj::Errors.error_str(e, :html => true)
151
- cgi.print Knj.p(cgi_data, true) if cgi_data
152
- end
153
- end
25
+ fcgi = Hayabusa::Fcgi.new
26
+ fcgi.fcgi_loop
154
27
  rescue Exception => e
155
28
  if !e.is_a?(Interrupt)
156
29
  File.open(error_log_file, "w") do |fp|
@@ -22,135 +22,8 @@ begin
22
22
  require "fileutils"
23
23
  require "#{File.dirname(Knj::Os.realpath(__FILE__))}/../lib/hayabusa.rb"
24
24
 
25
- #Spawn CGI-variable to emulate FCGI part.
26
- cgi_tools = Hayabusa::Cgi_tools.new
27
-
28
- #We cant define the Hayabusa-server untuil we receive the first headers, so wait for the first request.
29
- hayabusa = nil
30
- hayabusa_fcgi_conf_path = nil
31
- fcgi_proxy = nil
32
-
33
- $stderr.puts "[hayabusa] Starting FCGI." if debug
34
- FCGI.each_cgi do |cgi|
35
- begin
36
- #cgi.print "Content-Type: text/html\r\n"
37
- #cgi.print "\r\n"
38
-
39
- #Set 'cgi'-variable for CGI-tools.
40
- cgi_tools.cgi = cgi
41
-
42
- #Ensure the same FCGI-process isnt active for more than one website.
43
- raise "Expected 'HTTP_HAYABUSA_FCGI_CONFIG' to be '#{hayabusa_fcgi_conf_path}' but it wasnt: '#{cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]}'." if hayabusa_fcgi_conf_path and hayabusa_fcgi_conf_path != cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]
44
-
45
- if !hayabusa
46
- raise "No HTTP_HAYABUSA_FCGI_CONFIG-header was given." if !cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]
47
- hayabusa_fcgi_conf_path = cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]
48
- require hayabusa_fcgi_conf_path
49
- raise "No 'Hayabusa::FCGI_CONF'-constant was spawned by '#{cgi.env_table["HTTP_HAYABUSA_FCGI_CONFIG"]}'." if !Hayabusa.const_defined?(:FCGI_CONF)
50
- conf = Hayabusa::FCGI_CONF
51
-
52
- hayabusa_conf = Hayabusa::FCGI_CONF[:hayabusa]
53
- hayabusa_conf.merge!(
54
- :cmdline => false,
55
- :port => 0 #Ruby picks random port and we get the actual port after starting the appserver.
56
- )
57
-
58
- #Figure out if this should be a host-FCGI-process or a proxy-FCGI-process.
59
- fcgi_config_fp = "#{Knj::Os.tmpdir}/hayabusa_fcgi_#{hayabusa_conf[:title]}_fcgi.conf"
60
- FileUtils.touch(fcgi_config_fp) if !File.exists?(fcgi_config_fp)
61
-
62
- begin
63
- File.open(fcgi_config_fp) do |fp|
64
- fp.flock(File::LOCK_EX)
65
-
66
- fcgi_config_cont = File.read(fcgi_config_fp)
67
-
68
- if !fcgi_config_cont.empty?
69
- fcgi_config = Marshal.load(File.read(fcgi_config_fp))
70
- pid = fcgi_config[:pid]
71
-
72
- if Knj::Unix_proc.pid_running?(pid)
73
- fcgi_proxy = fcgi_config
74
-
75
- require "http2"
76
- http = Http2.new(:host => "localhost", :port => fcgi_proxy[:port].to_i)
77
- fcgi_proxy[:http] = http
78
- end
79
- else
80
- fcgi_config = nil
81
- end
82
-
83
- if !fcgi_proxy
84
- File.open(fcgi_config_fp, "w") do |fp|
85
- hayabusa = Hayabusa.new(hayabusa_conf)
86
-
87
- #Start web-server for proxy-requests.
88
- hayabusa.start
89
-
90
- fp.write(Marshal.dump(
91
- :pid => Process.pid,
92
- :port => hayabusa.port
93
- ))
94
- end
95
- end
96
- end
97
- ensure
98
- File.open(fcgi_config_fp).flock(File::LOCK_UN)
99
- end
100
- end
101
-
102
-
103
-
104
- if fcgi_proxy
105
- #Proxy request to the host-FCGI-process.
106
- $stderr.puts "[hayabusa] Proxying request." if debug
107
- cgi_tools.proxy_request_to(:cgi => cgi, :http => fcgi_proxy[:http])
108
- else
109
- #Host the FCGI-process.
110
- $stderr.puts "[hayabusa] Running request as CGI." if debug
111
-
112
- #Enforce $stdout variable.
113
- $stdout = hayabusa.cio
114
-
115
- #The rest is copied from the FCGI-part.
116
- headers = {}
117
- cgi.env_table.each do |key, val|
118
- if key[0, 5] == "HTTP_" and key != "HTTP_HAYABUSA_FCGI_CONFIG"
119
- key = key[5, key.length].gsub("_", " ").gsub(" ", "-")
120
- headers[key] = val
121
- end
122
- end
123
-
124
- meta = cgi.env_table.to_hash
125
-
126
- uri = Knj::Web.parse_uri(meta["REQUEST_URI"])
127
- meta["PATH_TRANSLATED"] = File.basename(uri[:path])
128
-
129
- cgi_data = {
130
- :cgi => cgi,
131
- :headers => headers,
132
- :get => Knj::Web.parse_urlquery(cgi.env_table["QUERY_STRING"], :urldecode => true, :force_utf8 => true),
133
- :meta => meta
134
- }
135
- if cgi.request_method == "POST"
136
- cgi_data[:post] = cgi_tools.convert_fcgi_post(cgi.params)
137
- else
138
- cgi_data[:post] = {}
139
- end
140
-
141
- hayabusa.config[:cgi] = cgi_data
142
-
143
-
144
- #Handle request.
145
- hayabusa.start_cgi_request
146
- end
147
- rescue Exception => e
148
- cgi.print "Content-Type: text/html\r\n"
149
- cgi.print "\r\n"
150
- cgi.print Knj::Errors.error_str(e, :html => true)
151
- cgi.print Knj.p(cgi_data, true) if cgi_data
152
- end
153
- end
25
+ fcgi = Hayabusa::Fcgi.new
26
+ fcgi.fcgi_loop
154
27
  rescue Exception => e
155
28
  if !e.is_a?(Interrupt)
156
29
  File.open(error_log_file, "w") do |fp|
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{hayabusa}
8
- s.version = "0.0.3"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kasper Johansen"]
12
- s.date = %q{2012-08-17}
12
+ s.date = %q{2012-08-19}
13
13
  s.description = %q{A threadded web/app-server that focuses on threadding, shared ressources, speed and more.}
14
14
  s.email = %q{k@spernj.org}
15
15
  s.executables = ["check_running.rb", "hayabusa_benchmark.rb", "hayabusa_cgi.rb", "hayabusa_fcgi.fcgi", "hayabusa_fcgi.rb", "knjappserver_start.rb"]
@@ -52,6 +52,7 @@ Gem::Specification.new do |s|
52
52
  "lib/hayabusa_ext/threadding_timeout.rb",
53
53
  "lib/hayabusa_ext/translations.rb",
54
54
  "lib/hayabusa_ext/web.rb",
55
+ "lib/hayabusa_fcgi.rb",
55
56
  "lib/hayabusa_http_server.rb",
56
57
  "lib/hayabusa_http_session.rb",
57
58
  "lib/hayabusa_http_session_contentgroup.rb",
@@ -119,6 +120,7 @@ Gem::Specification.new do |s|
119
120
  s.add_runtime_dependency(%q<mail>, [">= 0"])
120
121
  s.add_runtime_dependency(%q<datet>, [">= 0"])
121
122
  s.add_runtime_dependency(%q<http2>, [">= 0"])
123
+ s.add_runtime_dependency(%q<tpool>, [">= 0"])
122
124
  s.add_development_dependency(%q<json>, [">= 0"])
123
125
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
124
126
  s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
@@ -130,6 +132,7 @@ Gem::Specification.new do |s|
130
132
  s.add_dependency(%q<mail>, [">= 0"])
131
133
  s.add_dependency(%q<datet>, [">= 0"])
132
134
  s.add_dependency(%q<http2>, [">= 0"])
135
+ s.add_dependency(%q<tpool>, [">= 0"])
133
136
  s.add_dependency(%q<json>, [">= 0"])
134
137
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
135
138
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
@@ -142,6 +145,7 @@ Gem::Specification.new do |s|
142
145
  s.add_dependency(%q<mail>, [">= 0"])
143
146
  s.add_dependency(%q<datet>, [">= 0"])
144
147
  s.add_dependency(%q<http2>, [">= 0"])
148
+ s.add_dependency(%q<tpool>, [">= 0"])
145
149
  s.add_dependency(%q<json>, [">= 0"])
146
150
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
147
151
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
@@ -47,7 +47,8 @@ class Hayabusa
47
47
  gems = [
48
48
  [:Erubis, "erubis"],
49
49
  [:Knj, "knjrbfw"],
50
- [:Tsafe, "tsafe"]
50
+ [:Tsafe, "tsafe"],
51
+ [:Tpool, "tpool"]
51
52
  ]
52
53
 
53
54
  gems.each do |gem|
@@ -96,6 +97,20 @@ class Hayabusa
96
97
 
97
98
 
98
99
  @debug = @config[:debug]
100
+ if @debug
101
+ if !@config.key?(:debug_log) or @config[:debug_log]
102
+ @debug_log = true
103
+ else
104
+ @debug_log = false
105
+ end
106
+
107
+ if !@config.key?(:debug_print) or @config[:debug_print]
108
+ @debug_print = true
109
+ else
110
+ @debug_print = false
111
+ end
112
+ end
113
+
99
114
  @paused = 0
100
115
  @paused_mutex = Mutex.new
101
116
  @should_restart = false
@@ -106,6 +121,11 @@ class Hayabusa
106
121
  @eruby_cache = {}
107
122
  @httpsessions_ids = {}
108
123
 
124
+ if @debug_log
125
+ @log_fp = File.open("/tmp/hayabusa_#{@config[:title]}.log", "w")
126
+ @log_fp.sync = true
127
+ end
128
+
109
129
  @path_hayabusa = File.dirname(__FILE__)
110
130
 
111
131
 
@@ -115,7 +135,7 @@ class Hayabusa
115
135
  "#{@path_hayabusa}/class_customio.rb"
116
136
  ]
117
137
 
118
- print "Auto restarting.\n" if @debug
138
+ self.log_puts "Auto restarting." if @debug
119
139
  @mod_event = Knj::Event_filemod.new(:wait => 2, :paths => paths, &self.method(:on_event_filemod))
120
140
  end
121
141
 
@@ -149,12 +169,12 @@ class Hayabusa
149
169
  ]
150
170
 
151
171
  files.each do |file|
152
- STDOUT.print "Loading: '#{file}'.\n" if @debug
172
+ self.log_puts "Loading: '#{file}'." if @debug
153
173
  self.loadfile(file)
154
174
  end
155
175
 
156
176
 
157
- print "Setting up database.\n" if @debug
177
+ self.log_puts "Setting up database." if @debug
158
178
  if @config[:db].is_a?(Knj::Db)
159
179
  @db = @config[:db]
160
180
  elsif @config[:db].is_a?(Hash)
@@ -182,7 +202,7 @@ class Hayabusa
182
202
 
183
203
 
184
204
  if !@config.key?(:dbrev) or @config[:dbrev]
185
- print "Updating database.\n" if @debug
205
+ self.log_puts "Updating database." if @debug
186
206
  dbrev_args = {"schema" => Hayabusa::Database::SCHEMA, "db" => @db}
187
207
  dbrev_args.merge!(@config[:dbrev_args]) if @config.key?(:dbrev_args)
188
208
  Knj::Db::Revision.new.init_db(dbrev_args)
@@ -190,7 +210,7 @@ class Hayabusa
190
210
  end
191
211
 
192
212
 
193
- print "Spawning objects.\n" if @debug
213
+ self.log_puts "Spawning objects." if @debug
194
214
  @ob = Knj::Objects.new(
195
215
  :db => db,
196
216
  :class_path => @path_hayabusa,
@@ -216,12 +236,12 @@ class Hayabusa
216
236
  require "#{@path_hayabusa}/kernel_ext/gettext_methods" if @config[:locales_gettext_funcs]
217
237
 
218
238
  if @config[:magic_methods] or !@config.has_key?(:magic_methods)
219
- print "Loading magic-methods.\n" if @debug
239
+ self.log_puts "Loading magic-methods." if @debug
220
240
  require "#{@path_hayabusa}/kernel_ext/magic_methods"
221
241
  end
222
242
 
223
243
  if @config[:customio] or !@config.has_key?(:customio)
224
- print "Loading custom-io.\n" if @debug
244
+ self.log_puts "Loading custom-io." if @debug
225
245
 
226
246
  if $stdout.class.name != "Hayabusa::Custom_io"
227
247
  @cio = Hayabusa::Custom_io.new
@@ -231,7 +251,7 @@ class Hayabusa
231
251
 
232
252
 
233
253
  #Save the PID to the run-file.
234
- print "Setting run-file.\n" if @debug
254
+ self.log_puts "Setting run-file." if @debug
235
255
  tmpdir = "#{Knj::Os.tmpdir}/hayabusa"
236
256
  tmppath = "#{tmpdir}/run_#{@config[:title]}"
237
257
 
@@ -248,7 +268,7 @@ class Hayabusa
248
268
 
249
269
  #Set up various events for the appserver.
250
270
  if !@config.key?(:events) or @config[:events]
251
- print "Loading events.\n" if @debug
271
+ self.log_puts "Loading events." if @debug
252
272
  @events = Knj::Event_handler.new
253
273
  @events.add_event(
254
274
  :name => :check_page_access,
@@ -284,34 +304,34 @@ class Hayabusa
284
304
 
285
305
 
286
306
  #Initialize the various feature-modules.
287
- print "Init sessions.\n" if @debug
307
+ self.log_puts "Init sessions." if @debug
288
308
  self.initialize_sessions
289
309
 
290
310
  if !@config.key?(:threadding) or @config[:threadding]
291
311
  self.loadfile("#{@path_hayabusa}/hayabusa_ext/threadding.rb")
292
312
  self.loadfile("#{@path_hayabusa}/hayabusa_ext/threadding_timeout.rb")
293
- print "Init threadding.\n" if @debug
313
+ self.log_puts "Init threadding." if @debug
294
314
  self.initialize_threadding
295
315
  end
296
316
 
297
- print "Init mailing.\n" if @debug
317
+ self.log_puts "Init mailing." if @debug
298
318
  self.initialize_mailing
299
319
 
300
- print "Init errors.\n" if @debug
320
+ self.log_puts "Init errors." if @debug
301
321
  self.initialize_errors
302
322
 
303
- print "Init logging.\n" if @debug
323
+ self.log_puts "Init logging." if @debug
304
324
  self.initialize_logging
305
325
 
306
326
  if !@config.key?(:cleaner) or @config[:cleaner]
307
327
  self.loadfile("#{@path_hayabusa}/hayabusa_ext/cleaner.rb")
308
- print "Init cleaner.\n" if @debug
328
+ self.log_puts "Init cleaner." if @debug
309
329
  self.initialize_cleaner
310
330
  end
311
331
 
312
332
  if !@config.key?(:cmdline) or @config[:cmdline]
313
333
  self.loadfile("#{@path_hayabusa}/hayabusa_ext/cmdline.rb")
314
- print "Init cmdline.\n" if @debug
334
+ self.log_puts "Init cmdline." if @debug
315
335
  self.initialize_cmdline
316
336
  end
317
337
 
@@ -320,7 +340,13 @@ class Hayabusa
320
340
  Kernel.at_exit(&self.method(:stop))
321
341
 
322
342
 
323
- print "Appserver spawned.\n" if @debug
343
+ self.log_puts "Appserver spawned." if @debug
344
+ end
345
+
346
+ #Outputs to stderr and logs it.
347
+ def log_puts(str)
348
+ @log_fp.puts str if @debug_log
349
+ STDOUT.puts str if @debug_print
324
350
  end
325
351
 
326
352
  def no_date(event, classname)
@@ -328,7 +354,7 @@ class Hayabusa
328
354
  end
329
355
 
330
356
  def on_event_filemod(event, path)
331
- print "File changed - restart server: #{path}\n"
357
+ self.log_puts "File changed - restart server: #{path}"
332
358
  @should_restart = true
333
359
  @mod_event.destroy if @mod_event
334
360
  end
@@ -360,25 +386,23 @@ class Hayabusa
360
386
  #Starts the HTTP-server and threadpool.
361
387
  def start
362
388
  #Start the appserver.
363
- print "Spawning appserver.\n" if @debug
389
+ self.log_puts "Spawning appserver." if @debug
364
390
  @httpserv = Hayabusa::Http_server.new(self)
391
+ @httpserv.start
365
392
 
366
393
 
367
- STDOUT.print "Starting appserver.\n" if @debug
394
+ self.log_puts "Starting appserver." if @debug
368
395
  Thread.current[:hayabusa] = {:hb => self} if !Thread.current[:hayabusa]
369
396
 
370
397
  if @config[:autoload]
371
- STDOUT.print "Autoloading #{@config[:autoload]}\n" if @debug
398
+ self.log_puts "Autoloading #{@config[:autoload]}" if @debug
372
399
  require @config[:autoload]
373
400
  end
374
401
 
375
402
  begin
376
- @threadpool.start if @threadpool
377
- STDOUT.print "Threadpool startet.\n" if @debug
378
- @httpserv.start
379
- STDOUT.print "Appserver startet.\n" if @debug
403
+ self.log_puts "Appserver startet." if @debug
380
404
  rescue Interrupt => e
381
- STDOUT.print "Got interrupt - trying to stop appserver.\n" if @debug
405
+ self.log_puts "Got interrupt - trying to stop appserver." if @debug
382
406
  self.stop
383
407
  raise e
384
408
  end
@@ -390,17 +414,17 @@ class Hayabusa
390
414
  @stop_called = true
391
415
 
392
416
  proc_stop = proc{
393
- STDOUT.print "Stopping appserver.\n" if @debug
417
+ self.log_puts "Stopping appserver." if @debug
394
418
  @httpserv.stop if @httpserv and @httpserv.respond_to?(:stop)
395
419
 
396
- STDOUT.print "Stopping threadpool.\n" if @debug
420
+ self.log_puts "Stopping threadpool." if @debug
397
421
  @threadpool.stop if @threadpool
398
422
 
399
423
  #This should be done first to be sure it finishes (else we have a serious bug).
400
- STDOUT.print "Flush out loaded sessions.\n" if @debug
424
+ self.log_puts "Flush out loaded sessions." if @debug
401
425
  self.sessions_flush
402
426
 
403
- STDOUT.print "Stopping done...\n" if @debug
427
+ self.log_puts "Stopping done..." if @debug
404
428
  }
405
429
 
406
430
  #If we cant get a paused-execution in 5 secs - we just force the stop.
@@ -409,7 +433,7 @@ class Hayabusa
409
433
  self.paused_exec(&proc_stop)
410
434
  end
411
435
  rescue Timeout::Error, SystemExit, Interrupt
412
- STDOUT.print "Forcing stop-appserver - couldnt get timing window.\n" if @debug
436
+ self.log_puts "Forcing stop-appserver - couldnt get timing window." if @debug
413
437
  proc_stop.call
414
438
  end
415
439
  end
@@ -472,7 +496,7 @@ class Hayabusa
472
496
  if @should_restart
473
497
  loop do
474
498
  if @should_restart_done
475
- STDOUT.print "Ending join because the restart is done.\n"
499
+ self.log_puts "Ending join because the restart is done."
476
500
  break
477
501
  end
478
502
 
@@ -508,7 +532,7 @@ class Hayabusa
508
532
  def translations
509
533
  if !@translations
510
534
  #Start the Knj::Gettext_threadded- and Knj::Translations modules for translations.
511
- print "Loading Gettext and translations.\n" if @debug
535
+ self.log_puts "Loading Gettext and translations." if @debug
512
536
  @translations = Knj::Translations.new(:db => @db)
513
537
  @ob.requireclass(:Translation, :require => false, :class => Knj::Translations::Translation)
514
538
  end