spiderfw 0.6.34 → 0.6.35
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 +7 -7
- data/CHANGELOG +25 -0
- data/VERSION +1 -1
- data/apps/core/admin/controllers/admin_controller.rb +1 -1
- data/apps/core/auth/controllers/login_controller.rb +4 -3
- data/apps/servant/bin/spider-servant.rb +1 -1
- data/blueprints/.DS_Store +0 -0
- data/lib/spiderfw/cmd/cmd.rb +1 -1
- data/lib/spiderfw/config/options/spider.rb +2 -4
- data/lib/spiderfw/controller/controller.rb +1 -1
- data/lib/spiderfw/controller/mixins/http_mixin.rb +2 -1
- data/lib/spiderfw/controller/mixins/visual.rb +2 -0
- data/lib/spiderfw/http/server.rb +83 -40
- data/lib/spiderfw/spider.rb +117 -37
- data/views/errors/error.layout.shtml +4 -3
- metadata +254 -180
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b4317639c33a989badc6ce0fbd7e070731348691
|
4
|
+
data.tar.gz: e9625e7ee5aa4c34fba87c4f4d14800c7d165908
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 199d34a00c7535800047109ebaf9d0549a1c5b74d3c477e1072028fc71d78c799ed908fb90b46d50bff575440255d151079eefb1754dd76d1459b28b64f00d4d
|
7
|
+
data.tar.gz: ae1b338a781265c0faa2582c18b123f71d4e5b46f60997d3350983fc403693e4b3307dbc0c5dfe5020942c65f4b5e3c2844255dd2e75918fd7f34d138ab5576b
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
== 0.6.35
|
2
|
+
* modificata instanziazione CmdParser in base all'ultimo rilascio della gemma CmdParse
|
3
|
+
* Aggiunto controllo per files .shtml in respawing e attivato celluloid.thread per Listen
|
4
|
+
* modifiche correttive relative all'uso di ByeBug e corretta gestione del respawn con Listen
|
5
|
+
* Modifiche per gemma fssm sostituita con listen
|
6
|
+
* Usato il parametro HTTP_X_FORWARDED_PROTO nel caso di reverse_proxy con ssl-offloading
|
7
|
+
* Modifiche per problemi con respawn, kill dei child_thread e trap
|
8
|
+
* Corretto il redirect su login per admin
|
9
|
+
* Cambiata pagina di errore con invio mail con nome comune
|
10
|
+
* Aggiunto valore di default per site.tech_admin.email con errori@soluzionipa.it
|
11
|
+
== 0.6.34
|
12
|
+
* modificata logica di gestione delle date in odbc
|
13
|
+
* Cambiato http_url con http_s_url e corretto funzioni
|
14
|
+
* modificata funzionalità riguardante alias per ordinamento in mssql
|
15
|
+
* Rimesso controllo se site.ssl attivo
|
16
|
+
* Adeguata https_url con action come http_url in app.rb
|
17
|
+
* Modifiche su invio mail multipart per problema con comunicazioni con immagini
|
18
|
+
* Aggiunto un controllo se l'elemento non blank in set_loaded_value del base_model
|
19
|
+
* Controllo se gia definita la costante per non avere il warning:already initialized constant News/Contents
|
20
|
+
* Aggiunta funzione to_bool alla class String
|
21
|
+
* Cambiata gestione allegati in send_email del messenger_helper
|
22
|
+
* controllo se campo esiste in schema
|
23
|
+
* Aggiunto controllo relativo al tipo di assoc_type
|
24
|
+
* modificata chiamata rufus perchè non + supportata
|
25
|
+
* aggiunto controllo in creazione indice non contemplando eventuali models che sono estensioni di altri
|
1
26
|
== 0.6.33
|
2
27
|
* Modifiche per problemi con accenti e chiamate json
|
3
28
|
* Encode aggiunto su funzione inspect
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.35
|
@@ -9,11 +9,11 @@ module Spider; module Auth
|
|
9
9
|
layout 'login'
|
10
10
|
|
11
11
|
def self.default_redirect
|
12
|
-
|
12
|
+
self.http_s_url
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.logout_redirect
|
16
|
-
|
16
|
+
self.class.http_s_url
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.users=(val)
|
@@ -73,8 +73,9 @@ module Spider; module Auth
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def success_redirect
|
76
|
+
|
76
77
|
if (@request.params['redirect'] && !@request.params['redirect'].empty?)
|
77
|
-
redir_to =
|
78
|
+
redir_to = ((Spider.site && Spider.site.ssl?) ? Spider.site.http_s_url : '')+@request.params['redirect']
|
78
79
|
redirect(redir_to, Spider::HTTP::SEE_OTHER)
|
79
80
|
return true
|
80
81
|
elsif(self.default_redirect)
|
@@ -9,7 +9,7 @@ require 'ruby-debug'
|
|
9
9
|
class Cmd
|
10
10
|
|
11
11
|
def initialize
|
12
|
-
@cmd = CmdParse::CommandParser.new( true, true
|
12
|
+
@cmd = CmdParse::CommandParser.new({:handle_exceptions => true, :takes_commands => true})
|
13
13
|
@cmd.program_name = "spider-servant"
|
14
14
|
@cmd.options = CmdParse::OptionParserWrapper.new do |opt|
|
15
15
|
opt.separator _("Global options:")
|
Binary file
|
data/lib/spiderfw/cmd/cmd.rb
CHANGED
@@ -16,7 +16,7 @@ module Spider; module CommandLine
|
|
16
16
|
class Cmd
|
17
17
|
|
18
18
|
def initialize
|
19
|
-
@cmd = CmdParse::CommandParser.new( true, true
|
19
|
+
@cmd = CmdParse::CommandParser.new({:handle_exceptions => true, :takes_commands => true})
|
20
20
|
@cmd.program_name = "spider"
|
21
21
|
@cmd.options = CmdParse::OptionParserWrapper.new do |opt|
|
22
22
|
opt.separator _("Global options:")
|
@@ -79,9 +79,7 @@ module Spider
|
|
79
79
|
|
80
80
|
config_option 'debugger.start', _("Start the debugger"), :type => Spider::DataTypes::Bool,
|
81
81
|
:default => lambda{ ['test', 'devel'].include?(Spider.runmode) ? true : false }
|
82
|
-
config_option 'debugger.pry', _("User Pry for debugging"), :type => Spider::Bool, :default =>
|
83
|
-
RUBY_VERSION_PARTS[1] == '9'
|
84
|
-
}
|
82
|
+
config_option 'debugger.pry', _("User Pry for debugging"), :type => Spider::Bool, :default => false
|
85
83
|
config_option 'profiling.enable', _("Enable on-request profiling"), :type => Spider::DataTypes::Bool
|
86
84
|
config_option 'request.mutex', _("Respond to requests sequentially"), :default => false
|
87
85
|
|
@@ -163,7 +161,7 @@ module Spider
|
|
163
161
|
}
|
164
162
|
|
165
163
|
config_option 'site.admin.name', _("Name of the site administrator")
|
166
|
-
config_option 'site.admin.email', _("Email of the site administrator")
|
164
|
+
config_option 'site.admin.email', _("Email of the site administrator"), :default => 'errori@soluzionipa.it'
|
167
165
|
config_option 'site.tech_admin.email', _("Email of the site technical administrator"),
|
168
166
|
:default => lambda{ Spider.conf.get('site.admin.email') }
|
169
167
|
config_option 'site.domain', _("Main domain name used to access the site")
|
@@ -253,7 +253,7 @@ module Spider
|
|
253
253
|
|
254
254
|
# If the site supports SSL, returns the #https_url; otherwise, the #http_url
|
255
255
|
def self.http_s_url(action=nil)
|
256
|
-
Spider.site.http_s_url + route_path(action)
|
256
|
+
(Spider.site.blank? ? "" : Spider.site.http_s_url) + route_path(action)
|
257
257
|
end
|
258
258
|
|
259
259
|
# The main controller's execution method. The Controller will dispatch
|
@@ -53,11 +53,12 @@ module Spider; module ControllerMixins
|
|
53
53
|
def request_url
|
54
54
|
return request_path unless @request.env['HTTP_HOST']
|
55
55
|
#'http://'+@request.env['HTTP_HOST']+request_path vecchia versione con problemi con https
|
56
|
-
if @request.env["HTTPS"] == "on"
|
56
|
+
if @request.env["HTTPS"] == "on" || @request.env['HTTP_X_FORWARDED_PROTO'] == 'https' # uso anche il parametro HTTP_X_FORWARDED_PROTO per reverse_proxy con ssl_offloading
|
57
57
|
u = "https://#{@request.env['HTTP_HOST']}#{request_path}"
|
58
58
|
else
|
59
59
|
u = "http://#{@request.env['HTTP_HOST']}#{request_path}"
|
60
60
|
end
|
61
|
+
u
|
61
62
|
end
|
62
63
|
|
63
64
|
# @return [String] the request_url with query params, if any
|
@@ -312,6 +312,8 @@ module Spider; module ControllerMixins
|
|
312
312
|
exc.extend(UUIDExceptionMessage)
|
313
313
|
@scene.exception_uuid = exc.uuid
|
314
314
|
@scene.email_subject += " (#{exc.uuid})" if @scene.email_subject
|
315
|
+
#aggiungo nome del comune su mail di errore - 5/03/2015
|
316
|
+
@scene.email_subject += " - #{Spider.conf.get('orgs.default.name')}" if @scene.email_subject && !Spider.conf.get('orgs.default.name').blank?
|
315
317
|
end
|
316
318
|
@scene.admin_email = Spider.conf.get('site.tech_admin.email')
|
317
319
|
if Spider.runmode == 'devel'
|
data/lib/spiderfw/http/server.rb
CHANGED
@@ -115,13 +115,18 @@ module Spider; module HTTP
|
|
115
115
|
end
|
116
116
|
end
|
117
117
|
do_shutdown = Proc.new{
|
118
|
-
|
118
|
+
case RUBY_VERSION
|
119
|
+
when /2/
|
120
|
+
Byebug.post_mortem = false if defined?(Byebug)
|
121
|
+
else
|
122
|
+
Debugger.post_mortem = false if defined?(Debugger)
|
123
|
+
end
|
119
124
|
server.shutdown if server
|
120
125
|
ssl_server.shutdown if ssl_server
|
121
126
|
|
122
127
|
pid_file = File.join(Spider.paths[:var], 'run/server.pid')
|
123
128
|
begin
|
124
|
-
|
129
|
+
FileUtils.rm_f(pid_file)
|
125
130
|
rescue Errno::ENOENT
|
126
131
|
Spider.logger.info "Unlink del pid file non riuscito"
|
127
132
|
end
|
@@ -152,7 +157,8 @@ module Spider; module HTTP
|
|
152
157
|
end
|
153
158
|
Process.detach(forked)
|
154
159
|
else
|
155
|
-
|
160
|
+
#questo fa Loads configuration, sets up Locale and GetText, sets paths and the default Logger.
|
161
|
+
Spider.init_base
|
156
162
|
spawner_started = false
|
157
163
|
if Spider.conf.get('webserver.respawn_on_change')
|
158
164
|
Spider.start_loggers
|
@@ -172,6 +178,7 @@ module Spider; module HTTP
|
|
172
178
|
end
|
173
179
|
end
|
174
180
|
unless spawner_started
|
181
|
+
#in devel qui non entra
|
175
182
|
Spider.main_process_startup
|
176
183
|
Spider.startup
|
177
184
|
begin
|
@@ -207,8 +214,9 @@ module Spider; module HTTP
|
|
207
214
|
|
208
215
|
unless @already_forked
|
209
216
|
Spider.main_process_startup
|
210
|
-
exit_spawner = Proc.new{
|
211
|
-
|
217
|
+
exit_spawner = Proc.new{
|
218
|
+
#QUESTO LOG FA COMPARIRE UN MESSAGGIO DI ERRORE IN DEVEL
|
219
|
+
#Spider.logger.debug "Spawner exiting"
|
212
220
|
Process.kill 'KILL', @monitor_thread[:spawner_child_pid]
|
213
221
|
}
|
214
222
|
Spider.on_main_process_shutdown(&exit_spawner)
|
@@ -227,8 +235,17 @@ module Spider; module HTTP
|
|
227
235
|
else
|
228
236
|
# Child
|
229
237
|
$SPIDER_SPAWNED = true
|
230
|
-
trap(
|
231
|
-
|
238
|
+
Signal.trap("TERM") do
|
239
|
+
exit
|
240
|
+
end
|
241
|
+
Signal.trap("INT") do
|
242
|
+
exit
|
243
|
+
end
|
244
|
+
Signal.trap("HUP") do
|
245
|
+
exit
|
246
|
+
end
|
247
|
+
# trap('TERM'){ }
|
248
|
+
# trap('INT'){ }
|
232
249
|
rd.close
|
233
250
|
Spider.spawner = wr
|
234
251
|
return unless @actions[action]
|
@@ -242,47 +259,73 @@ module Spider; module HTTP
|
|
242
259
|
end
|
243
260
|
|
244
261
|
def monitor_fs
|
245
|
-
require 'fssm'
|
262
|
+
require 'fssm' if RUBY_VERSION =~ /1.8/
|
263
|
+
require 'listen' if RUBY_VERSION > "1.8.7"
|
246
264
|
spawner = self
|
247
265
|
action = 'spawn'
|
248
266
|
return Thread.new do
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
267
|
+
#VECCHIA VERSIONE CON FSSM PER RUBY 1.8.7
|
268
|
+
if RUBY_VERSION =~ /1.8/
|
269
|
+
fsm_exclude = ['var', 'tmp']
|
270
|
+
FSSM.monitor do
|
271
|
+
#Spider.logger.debug("Monitoring #{Spider.paths[:apps]} for changes")
|
272
|
+
path Spider.paths[:apps] do
|
273
|
+
glob '**/*.rb'
|
254
274
|
|
255
|
-
|
256
|
-
|
257
|
-
|
275
|
+
update { |base, relative|
|
276
|
+
Spider.logger.debug("#{relative} updated, restarting")
|
277
|
+
Process.kill 'KILL', spawner.child_pid
|
278
|
+
spawner.spawn(action)
|
279
|
+
}
|
280
|
+
delete { |base, relative|
|
281
|
+
Spider.logger.debug("#{relative} deleted, restarting")
|
282
|
+
Process.kill 'KILL', spawner.child_pid
|
283
|
+
spawner.spawn(action)
|
284
|
+
}
|
285
|
+
create { |base, relative|
|
286
|
+
Spider.logger.debug("#{relative} created, restarting")
|
287
|
+
Process.kill 'KILL', spawner.child_pid
|
288
|
+
spawner.spawn(action)
|
289
|
+
}
|
290
|
+
end
|
291
|
+
# path Spider.paths[:root] do
|
292
|
+
# glob '**/*.shtml'
|
293
|
+
#
|
294
|
+
# update { |base, relative|
|
295
|
+
# puts "Changed #{base}, #{relative}"
|
296
|
+
# Spider::Template.cache.invalidate(File.join('ROOT', relative))
|
297
|
+
# }
|
298
|
+
# end
|
299
|
+
|
300
|
+
# path '/some/other/directory/' do
|
301
|
+
# update {|base, relative|}
|
302
|
+
# delete {|base, relative|}
|
303
|
+
# create {|base, relative|}
|
304
|
+
# end
|
305
|
+
end
|
306
|
+
else
|
307
|
+
listener = Listen.to(Spider.paths[:apps], { :only => /\.rb/ } ) { |modified, added, removed|
|
308
|
+
|
309
|
+
unless modified.blank?
|
310
|
+
Spider.logger.debug("#{modified.first} updated, restarting")
|
311
|
+
Process.kill 'KILL', spawner.child_pid
|
258
312
|
spawner.spawn(action)
|
259
|
-
|
260
|
-
|
261
|
-
Spider.logger.debug("#{
|
262
|
-
Process.kill 'KILL',
|
313
|
+
end
|
314
|
+
unless added.blank?
|
315
|
+
Spider.logger.debug("#{added.first} created, restarting")
|
316
|
+
Process.kill 'KILL', spawner.child_pid
|
263
317
|
spawner.spawn(action)
|
264
|
-
|
265
|
-
|
266
|
-
Spider.logger.debug("#{
|
267
|
-
Process.kill 'KILL',
|
318
|
+
end
|
319
|
+
unless removed.blank?
|
320
|
+
Spider.logger.debug("#{removed.first} deleted, restarting")
|
321
|
+
Process.kill 'KILL', spawner.child_pid
|
268
322
|
spawner.spawn(action)
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
#
|
274
|
-
# update { |base, relative|
|
275
|
-
# puts "Changed #{base}, #{relative}"
|
276
|
-
# Spider::Template.cache.invalidate(File.join('ROOT', relative))
|
277
|
-
# }
|
278
|
-
# end
|
279
|
-
|
280
|
-
# path '/some/other/directory/' do
|
281
|
-
# update {|base, relative|}
|
282
|
-
# delete {|base, relative|}
|
283
|
-
# create {|base, relative|}
|
284
|
-
# end
|
323
|
+
end
|
324
|
+
}
|
325
|
+
listener.start
|
326
|
+
sleep
|
285
327
|
end
|
328
|
+
|
286
329
|
end
|
287
330
|
|
288
331
|
end
|
data/lib/spiderfw/spider.rb
CHANGED
@@ -13,7 +13,9 @@ require 'spiderfw/version'
|
|
13
13
|
require 'timeout'
|
14
14
|
|
15
15
|
begin
|
16
|
-
require '
|
16
|
+
require 'listen' if RUBY_VERSION > "1.8.7"
|
17
|
+
require 'fssm' if RUBY_VERSION =~ /1.8/
|
18
|
+
require 'rbconfig'
|
17
19
|
rescue LoadError
|
18
20
|
end
|
19
21
|
|
@@ -169,7 +171,7 @@ module Spider
|
|
169
171
|
end
|
170
172
|
|
171
173
|
|
172
|
-
# Creates runtime folders: 'tmp', 'var', 'var/memory' and 'var/
|
174
|
+
# Creates runtime folders: 'tmp', 'var', 'var/memory', 'var/data' and 'var/sessions'
|
173
175
|
# @return [void]
|
174
176
|
def setup_env
|
175
177
|
unless File.exists?(File.join(Spider.paths[:root], 'init.rb'))
|
@@ -179,7 +181,10 @@ module Spider
|
|
179
181
|
FileUtils.mkdir_p(Spider.paths[:var])
|
180
182
|
FileUtils.mkdir_p(File.join(Spider.paths[:var], 'memory'))
|
181
183
|
FileUtils.mkdir_p(File.join(Spider.paths[:var], 'data'))
|
182
|
-
|
184
|
+
#nuove cartelle aggiunte
|
185
|
+
FileUtils.mkdir_p(Spider.paths[:data])
|
186
|
+
FileUtils.mkdir_p(File.join(Spider.paths[:var], 'sessions'))
|
187
|
+
|
183
188
|
end
|
184
189
|
|
185
190
|
|
@@ -218,42 +223,75 @@ module Spider
|
|
218
223
|
# Note that in some environments (e.g. Phusion Passenger) there will not be a main process, so
|
219
224
|
# this method will not be called.
|
220
225
|
def main_process_startup
|
221
|
-
if
|
222
|
-
|
226
|
+
if RUBY_VERSION =~ /1.8/
|
227
|
+
if defined?(FSSM)
|
228
|
+
monitor = FSSM::Monitor.new
|
223
229
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
230
|
+
monitor.path(Spider.paths[:tmp], 'restart.txt') do
|
231
|
+
create { |base, relative| Process.kill 'HUP', $$ }
|
232
|
+
update { |base, relative| Process.kill 'HUP', $$ }
|
233
|
+
end
|
228
234
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
235
|
+
if Spider.conf.get('template.cache.use_fssm')
|
236
|
+
monitor.path(Spider.paths[:root]) do
|
237
|
+
glob '**/*.shtml'
|
238
|
+
create { |base, relative| FileUtils.rm_rf(File.join(Spider.paths[:var], 'cache', 'templates')) }
|
239
|
+
update { |base, relative| FileUtils.rm_rf(File.join(Spider.paths[:var], 'cache', 'templates')) }
|
240
|
+
end
|
241
|
+
monitor.path($SPIDER_PATH) do
|
242
|
+
glob '**/*.shtml'
|
243
|
+
create { |base, relative| FileUtils.rm_rf(File.join(Spider.paths[:var], 'cache', 'templates')) }
|
244
|
+
update { |base, relative| FileUtils.rm_rf(File.join(Spider.paths[:var], 'cache', 'templates')) }
|
245
|
+
end
|
246
|
+
FileUtils.rm_rf(File.join(Spider.paths[:var], 'cache', 'templates'))
|
234
247
|
end
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
248
|
+
|
249
|
+
@fssm_thread = Thread.new do
|
250
|
+
monitor.run
|
251
|
+
end
|
252
|
+
Spider.output("Monitoring restart.txt")
|
253
|
+
|
254
|
+
else
|
255
|
+
Spider.output("FSSM not installed, unable to monitor restart.txt")
|
256
|
+
if Spider.conf.get('template.cache.use_fssm')
|
257
|
+
raise "Unable to use FSSM for monitoring templates; use template.cache.disable instead"
|
239
258
|
end
|
240
|
-
FileUtils.rm_rf(File.join(Spider.paths[:var], 'cache', 'templates'))
|
241
259
|
end
|
260
|
+
else #VERSIONI > 1.8.7
|
261
|
+
if defined?(Listen)
|
262
|
+
listener = Listen.to(Spider.paths[:tmp], { :only => /restart.txt$/ } ) { |modified, added, removed|
|
242
263
|
|
243
|
-
|
244
|
-
|
264
|
+
unless modified.blank?
|
265
|
+
Process.kill 'HUP', $$
|
266
|
+
end
|
267
|
+
unless added.blank?
|
268
|
+
Process.kill 'HUP', $$
|
269
|
+
end
|
270
|
+
}
|
271
|
+
@celluloid_thread = Celluloid::Thread.new do
|
272
|
+
listener.start
|
273
|
+
end
|
274
|
+
else
|
275
|
+
Spider.output("Listen gem not installed, unable to monitor restart.txt")
|
245
276
|
end
|
246
|
-
|
277
|
+
end
|
247
278
|
|
248
|
-
|
249
|
-
Spider.
|
250
|
-
|
251
|
-
|
279
|
+
Signal.trap("TERM") do
|
280
|
+
Spider.main_process_shutdown
|
281
|
+
exit
|
282
|
+
end
|
283
|
+
Signal.trap("INT") do
|
284
|
+
Spider.main_process_shutdown
|
285
|
+
exit
|
286
|
+
end
|
287
|
+
unless RUBY_PLATFORM =~ /win32|mingw32/
|
288
|
+
Signal.trap("HUP") do
|
289
|
+
Spider.respawn!
|
252
290
|
end
|
253
291
|
end
|
254
|
-
trap('TERM'){ Spider.main_process_shutdown; exit }
|
255
|
-
trap('INT'){ Spider.main_process_shutdown; exit }
|
256
|
-
trap('HUP'){ Spider.respawn! } unless RUBY_PLATFORM =~ /win32|mingw32/
|
292
|
+
# trap('TERM'){ Spider.main_process_shutdown; exit }
|
293
|
+
# trap('INT'){ Spider.main_process_shutdown; exit }
|
294
|
+
# trap('HUP'){ Spider.respawn! } unless RUBY_PLATFORM =~ /win32|mingw32/
|
257
295
|
|
258
296
|
if @main_process_startup_blocks
|
259
297
|
@main_process_startup_blocks.each{ |block| block.call }
|
@@ -283,6 +321,7 @@ module Spider
|
|
283
321
|
# Invoked when a server is shutdown. Apps may implement the app_shutdown method, that will be called.
|
284
322
|
# @return [void]
|
285
323
|
def shutdown(force=false)
|
324
|
+
#Byebug.stop unless defined?(Byebug).blank?
|
286
325
|
unless force
|
287
326
|
#return unless Thread.current == Thread.main
|
288
327
|
return if @shutdown_done
|
@@ -306,7 +345,13 @@ module Spider
|
|
306
345
|
end
|
307
346
|
end
|
308
347
|
end
|
309
|
-
|
348
|
+
|
349
|
+
case RUBY_VERSION
|
350
|
+
when /2/
|
351
|
+
Byebug.post_mortem = false if Object.const_defined?(:Debugger) && Byebug.post_mortem?
|
352
|
+
else
|
353
|
+
Debugger.post_mortem = false if Object.const_defined?(:Debugger) && Debugger.post_mortem?
|
354
|
+
end
|
310
355
|
@apps.each do |name, mod|
|
311
356
|
mod.app_shutdown if mod.respond_to?(:app_shutdown)
|
312
357
|
end
|
@@ -1011,10 +1056,10 @@ module Spider
|
|
1011
1056
|
Thread.critical = crit
|
1012
1057
|
end
|
1013
1058
|
|
1059
|
+
#chiamato al touch tmp/restart in produzione
|
1014
1060
|
# Terminates the current process and starts a new one
|
1015
1061
|
# @return [void]
|
1016
1062
|
def respawn!
|
1017
|
-
require 'rbconfig'
|
1018
1063
|
Spider.logger.info("Restarting")
|
1019
1064
|
ruby = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']).sub(/.*\s.*/m, '"\&"')
|
1020
1065
|
Spider.main_process_shutdown
|
@@ -1072,13 +1117,48 @@ module Spider
|
|
1072
1117
|
# Inits the pry debugger
|
1073
1118
|
# @return [void]
|
1074
1119
|
def init_pry_debug
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1120
|
+
begin
|
1121
|
+
require 'pry'
|
1122
|
+
require 'pry-nav'
|
1123
|
+
require 'pry-stack_explorer'
|
1124
|
+
if File.exists?(File.join($SPIDER_RUN_PATH,'tmp', 'debug.txt'))
|
1125
|
+
require 'pry-remote'
|
1126
|
+
end
|
1127
|
+
Pry::Commands.alias_command "l=", "whereami"
|
1128
|
+
Pry::Commands.alias_command "c", "continue"
|
1129
|
+
Pry::Commands.alias_command "n", "next"
|
1130
|
+
Pry::Commands.alias_command "s", "step"
|
1131
|
+
begin
|
1132
|
+
case RUBY_VERSION
|
1133
|
+
when /2/
|
1134
|
+
require 'byebug'
|
1135
|
+
else
|
1136
|
+
require 'ruby-debug'
|
1137
|
+
end
|
1138
|
+
rescue
|
1139
|
+
require 'debugger'
|
1140
|
+
end
|
1141
|
+
case RUBY_VERSION
|
1142
|
+
when /2/
|
1143
|
+
if File.exists?(File.join($SPIDER_RUN_PATH,'tmp', 'debug.txt'))
|
1144
|
+
Byebug.wait_connection = true
|
1145
|
+
Byebug.start
|
1146
|
+
else
|
1147
|
+
Byebug.start
|
1148
|
+
end
|
1149
|
+
else
|
1150
|
+
if File.exists?(File.join($SPIDER_RUN_PATH,'tmp', 'debug.txt'))
|
1151
|
+
Debugger.wait_connection = true
|
1152
|
+
Debugger.start_remote
|
1153
|
+
else
|
1154
|
+
Debugger.start
|
1155
|
+
end
|
1156
|
+
end
|
1157
|
+
rescue LoadError, RuntimeError => exc
|
1158
|
+
msg = _('Unable to start debugger. Ensure ruby-debug or byebug is installed (or set debugger.start to false).')
|
1159
|
+
Spider.output(exc.message)
|
1160
|
+
Spider.output(msg)
|
1080
1161
|
end
|
1081
|
-
Pry::Commands.alias_command "l=", "whereami"
|
1082
1162
|
end
|
1083
1163
|
|
1084
1164
|
# @private
|
@@ -1,11 +1,12 @@
|
|
1
|
-
<!DOCTYPE
|
2
|
-
"http://www.w3.org/TR/html4/strict.dtd">
|
1
|
+
<!DOCTYPE html>
|
3
2
|
<html>
|
4
3
|
<tpl:asset type="css" src="css/error_page.css" />
|
4
|
+
<tpl:asset name="jquery" />
|
5
5
|
<tpl:asset sp:if="@devel" type="js" src="js/error_page.js" />
|
6
|
+
|
6
7
|
<head>
|
7
8
|
<title>{ @error_msg }</title>
|
8
|
-
<script sp:if="@devel" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
|
9
|
+
<!-- <script sp:if="@devel" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> -->
|
9
10
|
<script sp:each='@assets[:js] |script|' type="text/javascript" src="{ script }"></script>
|
10
11
|
<link sp:each='@assets[:css] |css_file|' rel='stylesheet' href='{ css_file }' />
|
11
12
|
</head>
|