rubyrun 0.9.5-x86-linux → 0.9.6-x86-linux

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.
Files changed (39) hide show
  1. data/README +4 -4
  2. data/docs/{rubyrun-0.9.5.htm → rubyrun-0.9.6.htm} +292 -291
  3. data/docs/{rubyrun-0.9.5.pdf → rubyrun-0.9.6.pdf} +0 -0
  4. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/colorschememapping.xml +0 -0
  5. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/filelist.xml +1 -1
  6. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/header.htm +6 -6
  7. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image001.jpg +0 -0
  8. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image002.jpg +0 -0
  9. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image003.jpg +0 -0
  10. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image004.jpg +0 -0
  11. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image005.jpg +0 -0
  12. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image006.jpg +0 -0
  13. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image007.jpg +0 -0
  14. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image008.jpg +0 -0
  15. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image009.jpg +0 -0
  16. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image010.jpg +0 -0
  17. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image011.jpg +0 -0
  18. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image012.jpg +0 -0
  19. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image013.jpg +0 -0
  20. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image014.jpg +0 -0
  21. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image015.jpg +0 -0
  22. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image016.jpg +0 -0
  23. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image017.png +0 -0
  24. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image018.jpg +0 -0
  25. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image019.jpg +0 -0
  26. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image020.jpg +0 -0
  27. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image021.jpg +0 -0
  28. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/image022.png +0 -0
  29. data/docs/{rubyrun-0.9.5_files → rubyrun-0.9.6_files}/themedata.thmx +0 -0
  30. data/lib/rubyrun/rubyrun_commander__.rb +3 -3
  31. data/lib/rubyrun/rubyrun_globals.rb +2 -0
  32. data/lib/rubyrun/rubyrun_html__.rb +1 -1
  33. data/lib/rubyrun/rubyrun_html_writer__.rb +20 -7
  34. data/lib/rubyrun/rubyrun_initializer__.rb +36 -9
  35. data/lib/rubyrun/rubyrun_monitor__.rb +3 -3
  36. data/lib/rubyrun/rubyrun_report__.rb +3 -2
  37. data/lib/rubyrun/rubyrun_rss__.rb +7 -5
  38. data/lib/rubyrun/rubyrun_utils__.rb +5 -0
  39. metadata +31 -31
@@ -1,5 +1,5 @@
1
1
  <xml xmlns:o="urn:schemas-microsoft-com:office:office">
2
- <o:MainFile HRef="../rubyrun_ce-0.9.5.htm"/>
2
+ <o:MainFile HRef="../rubyrun-0.9.6.htm"/>
3
3
  <o:File HRef="themedata.thmx"/>
4
4
  <o:File HRef="colorschememapping.xml"/>
5
5
  <o:File HRef="image001.jpg"/>
@@ -10,15 +10,15 @@ xmlns="http://www.w3.org/TR/REC-html40">
10
10
  <meta name=ProgId content=Word.Document>
11
11
  <meta name=Generator content="Microsoft Word 12">
12
12
  <meta name=Originator content="Microsoft Word 12">
13
- <link id=Main-File rel=Main-File href="../rubyrun_ce-0.9.5.htm">
13
+ <link id=Main-File rel=Main-File href="../rubyrun-0.9.6.htm">
14
14
  <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
15
- name="stockticker"/>
16
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
17
- name="place"/>
15
+ name="PlaceType"/>
18
16
  <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
19
17
  name="PlaceName"/>
20
18
  <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
21
- name="PlaceType"/>
19
+ name="place"/>
20
+ <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
21
+ name="stockticker"/>
22
22
  </head>
23
23
 
24
24
  <body lang=EN-US link=blue vlink=purple>
@@ -126,7 +126,7 @@ style='mso-bidi-font-weight:normal'><!--[if gte vml 1]><v:shape id="_x0000_i1040
126
126
  <v:imagedata src="image022.png" o:title="rubysophic_logo"/>
127
127
  </v:shape><![endif]--><span style='mso-tab-count:2'>������������������������������������������������������������������ </span></b><span
128
128
  style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Ruby<i
129
- style='mso-bidi-font-style:normal'>Run</i><sup>CE</sup> 0.9.5 Installation and
129
+ style='mso-bidi-font-style:normal'>Run</i><sup>CE</sup> 0.9.6 Installation and
130
130
  User Guide<o:p></o:p></span></p>
131
131
 
132
132
  <p class=MsoHeader><o:p>&nbsp;</o:p></p>
@@ -19,7 +19,7 @@ module RubyRunCommander__
19
19
  # display the last line # and function of the threads
20
20
  def dump_thread_status
21
21
  (unsupport_function; return) unless $rubyrun_native
22
- $rubyrun_thread_status_reporter = RubyRunHTMLWriter.new(@rubyrun_report_folder + '/' + File.basename($0, ".*") + '_' + $$.to_s + '_thread_status.html', nil, shift_age = 10, shift_size = 4096000) unless $rubyrun_thread_status_reporter
22
+ $rubyrun_thread_status_reporter = RubyRunHTMLWriter.new($rubyrun_report_folder + '/' + File.basename($0, ".*") + '_' + $rubyrun_startup_id + '_thread_status.html', nil, shift_age = 10, shift_size = 4096000) unless $rubyrun_thread_status_reporter
23
23
  start_time = Time.now
24
24
  th_data_hash = RubyRunNative__.get_all_top_stacks
25
25
  odd_row ||= true
@@ -72,7 +72,7 @@ module RubyRunCommander__
72
72
  def kill_threads(monitor_thr)
73
73
  (unsupport_function; return) unless $rubyrun_native
74
74
  if !$rubyrun_thread_dump_reporter
75
- $rubyrun_thread_dump_reporter = Logger.new(@rubyrun_report_folder + '/' + File.basename($0, ".*") + '_' + $$.to_s + '_thread_dump.txt', shift_age = 10, shift_size = 4096000)
75
+ $rubyrun_thread_dump_reporter = Logger.new($rubyrun_report_folder + '/' + File.basename($0, ".*") + '_' + $rubyrun_startup_id + '_thread_dump.txt', shift_age = 10, shift_size = 4096000)
76
76
  $rubyrun_thread_dump_reporter.level = Logger::INFO
77
77
  class << $rubyrun_thread_dump_reporter
78
78
  include RubyRunUtils__
@@ -102,7 +102,7 @@ module RubyRunCommander__
102
102
  # The snapshot is taken after a gc call is made
103
103
  def dump_object_map
104
104
  start_time = Time.now
105
- $rubyrun_obj_map_reporter = RubyRunHTMLWriter.new(@rubyrun_report_folder + '/' + File.basename($0, ".*") + '_' + $$.to_s + '_object_map.html', nil, shift_age = 10, shift_size = 4096000) unless $rubyrun_obj_map_reporter
105
+ $rubyrun_obj_map_reporter = RubyRunHTMLWriter.new($rubyrun_report_folder + '/' + File.basename($0, ".*") + '_' + $rubyrun_startup_id + '_object_map.html', nil, shift_age = 10, shift_size = 4096000) unless $rubyrun_obj_map_reporter
106
106
  object_map = Hash.new
107
107
  ttl_object = 0
108
108
  ObjectSpace.garbage_collect
@@ -25,6 +25,8 @@ module RubyRunGlobals
25
25
  RUBYRUN_LOG = '/log'
26
26
  RUBYRUN_REPORT = '/report'
27
27
  RUBYRUN_SIGNATURE = '/signatures'
28
+ RUBYRUN_STARTUP_ID_TYPE_PORT = 'port #'
29
+ RUBYRUN_STARTUP_ID_TYPE_PROCESS = 'process id'
28
30
  RUBYRUN_INCLUDE_HASH_FILE = '/include_hash_file'
29
31
  RUBYRUN_EXCLUDE_HASH_FILE = '/exclude_hash_file'
30
32
  RUBYRUN_DIR_HASH_FILE = '/dir_hash_file'
@@ -80,7 +80,7 @@ module RubyRunHTML__
80
80
  <td align=left><font face='Tahoma' size=2 color=black>%s</font></td>
81
81
  <td align=left><font face='Tahoma' size=2 color=black>%s</font></td></tr>"
82
82
 
83
- THROUGHPUT_HTML = "<p align=center><font size='3' face='Verdana'>Performance summary of %APPS_NAME% as of %TIMESTAMP%</font></p>
83
+ THROUGHPUT_HTML = "<p align=center><font size='3' face='Verdana'>Performance summary of %APPS_NAME% (%STARTUP%) as of %TIMESTAMP%</font></p>
84
84
  <table id=tblgraph align=center width=80 cellpadding=2 cellspacing=0 border=0>
85
85
  <tr><td bgcolor=WHITE align=center valign=middle width=22 style='writing-mode:tb-rl'><font face=arial size='-1'>Average throughput per min</font></td>%THROUGHPUT_BAR_TABLE%</tr>
86
86
  <tr bgcolor=#505050>
@@ -21,22 +21,35 @@ require 'logger'
21
21
 
22
22
  class RubyRunHTMLWriter < Logger
23
23
 
24
- def initialize(logdev, header, shift_age = 0, shift_size = 1048576)
24
+ def initialize(filename, header, shift_age = 0, shift_size = 1048576)
25
25
  @progname = nil
26
26
  @level = DEBUG
27
27
  @default_formatter = Formatter.new
28
28
  @formatter = nil
29
29
  @logdev = nil
30
- if logdev
31
- @logdev = RubyRunHTMLDevice.new(logdev, header, :shift_age => shift_age,
32
- :shift_size => shift_size)
30
+ @filename = filename
31
+ @header = header
32
+ @shift_age = shift_age
33
+ @shift_size = shift_size
34
+ if @filename
35
+ @logdev = RubyRunHTMLDevice.new(@filename, @header, :shift_age => @shift_age,
36
+ :shift_size => @shift_size)
33
37
  end
34
38
  end
35
-
39
+
36
40
  def format_message (severity, timestamp, progname, msg)
37
41
  msg
38
- end
39
-
42
+ end
43
+
44
+ def info(msg, &blk)
45
+ begin
46
+ super(msg, &blk)
47
+ rescue
48
+ @logdev = RubyRunHTMLDevice.new(@filename, @header, :shift_age => @shift_age, :shift_size => @shift_size)
49
+ super(msg, &blk)
50
+ end
51
+ end
52
+
40
53
  class RubyRunHTMLDevice < Logger::LogDevice
41
54
 
42
55
  def initialize(log = nil, header = nil, opt = {})
@@ -54,13 +54,19 @@ module RubyRunInitializer__
54
54
  end
55
55
  *rubyrun_folders = $rubyrun_working_dir + RUBYRUN_LOG, $rubyrun_working_dir + RUBYRUN_REPORT, $rubyrun_working_dir + RUBYRUN_SIGNATURE
56
56
  make_folder(rubyrun_folders)
57
- @rubyrun_log_folder, @rubyrun_report_folder, @rubyrun_signature_folder = *rubyrun_folders
58
- logname = File.basename($0, ".*")
59
- ready_logfile(logname)
57
+ $rubyrun_log_folder, $rubyrun_report_folder, $rubyrun_signature_folder = *rubyrun_folders
58
+ if ARGV.include?('-p')
59
+ $rubyrun_startup_id_type = RUBYRUN_STARTUP_ID_TYPE_PORT
60
+ $rubyrun_startup_id = ARGV[ARGV.index('-p')+1]
61
+ else
62
+ $rubyrun_startup_id_type = RUBYRUN_STARTUP_ID_TYPE_PROCESS
63
+ $rubyrun_startup_id = $$.to_s
64
+ end
65
+ ready_logfile
60
66
  system_wide_opts = $rubyrun_working_dir + RUBYRUN_OPTS_FILE
61
67
  app_wide_opts = Dir.getwd + '/' + RUBYRUN_OPTS_FILE
62
68
  File.exists?(app_wide_opts) ? load_config_props(app_wide_opts) : load_config_props(system_wide_opts)
63
- $rubyrun_tracer = RubyRunHTMLWriter.new(@rubyrun_report_folder + '/' + logname + '_' + $$.to_s + '_trace.html', METHOD_TRACE_HEADER, shift_age = 10, shift_size = 4096000) unless $rubyrun_trace_hash.empty?
69
+ $rubyrun_tracer = RubyRunHTMLWriter.new($rubyrun_report_folder + '/' + File.basename($0, ".*") + '_' + $rubyrun_startup_id + '_trace.html', METHOD_TRACE_HEADER, shift_age = 10, shift_size = 4096000) unless $rubyrun_trace_hash.empty?
64
70
  end
65
71
 
66
72
  # Create the working directory, which will be 'rubyrun' under the current directory
@@ -102,16 +108,37 @@ module RubyRunInitializer__
102
108
  end
103
109
 
104
110
  # Initialize rubyrun logger and create its own log format
105
- def ready_logfile(logname)
106
- $rubyrun_logger = Logger.new(@rubyrun_log_folder + '/' + logname + '_' + $$.to_s + '.log', shift_age = 10, shift_size = 4096000)
111
+ def ready_logfile
112
+ $rubyrun_logger = Logger.new($rubyrun_log_folder + '/' + File.basename($0, ".*") + '_' + $rubyrun_startup_id + '.log', shift_age = 10, shift_size = 4096000)
107
113
  $rubyrun_logger.level = Logger::INFO
108
114
  class << $rubyrun_logger
109
115
  include RubyRunUtils__
110
116
  def format_message (severity, timestamp, progname, msg)
111
117
  "[#{timestamp.strftime("%Y-%m-%d %H:%M:%S")}.#{("%.3f" % timestamp.to_f).split('.')[1]}] #{get_thread_id} #{msg}\n"
112
118
  end
119
+ def info(msg, &blk)
120
+ begin super(msg, &blk) rescue (@logdev = create_log_device; super(msg, &blk)) end
121
+ end
122
+ def warn(msg, &blk)
123
+ begin super(msg, &blk) rescue (@logdev = create_log_device; super(msg, &blk)) end
124
+ end
125
+ def fatal(msg, &blk)
126
+ begin super(msg, &blk) rescue (@logdev = create_log_device; super(msg, &blk)) end
127
+ end
128
+ def error(msg, &blk)
129
+ begin super(msg, &blk) rescue (@logdev = create_log_device; super(msg, &blk)) end
130
+ end
131
+ def debug(msg, &blk)
132
+ begin super(msg, &blk) rescue (@logdev = create_log_device; super(msg, &blk)) end
133
+ end
113
134
  end
114
135
  end
136
+
137
+ # Create new log device in case the log stream is closed.
138
+ # This happens only in Mongrel cluster scenario
139
+ def create_log_device
140
+ Logger::LogDevice.new($rubyrun_log_folder + '/' + File.basename($0, ".*") + '_' + $rubyrun_startup_id + '.log', :shift_age => 10, :shift_size => 4096000)
141
+ end
115
142
 
116
143
  # Property file is a yml file.
117
144
  # Load the properties into $config hash
@@ -295,19 +322,19 @@ module RubyRunInitializer__
295
322
 
296
323
  # Return the target file name that stores the serialized INCLUDE_HASH
297
324
  def get_include_hash_file
298
- @rubyrun_signature_folder + '/' + RUBYRUN_INCLUDE_HASH_FILE
325
+ $rubyrun_signature_folder + '/' + RUBYRUN_INCLUDE_HASH_FILE
299
326
  end
300
327
 
301
328
  # return the target file name that stores the serialized EXCLUDE_HASH
302
329
  def get_exclude_hash_file
303
- @rubyrun_signature_folder + '/' + RUBYRUN_EXCLUDE_HASH_FILE
330
+ $rubyrun_signature_folder + '/' + RUBYRUN_EXCLUDE_HASH_FILE
304
331
  end
305
332
 
306
333
  # Return the target file name that stores the serialized directory contents digest
307
334
  # This file has to be application dependent, and we use the current directory of the
308
335
  # running process to represent the application directory.
309
336
  def get_dir_hash_file
310
- @rubyrun_signature_folder + '/' + RUBYRUN_DIR_HASH_FILE + '_' + Digest::MD5.hexdigest(Dir.getwd)
337
+ $rubyrun_signature_folder + '/' + RUBYRUN_DIR_HASH_FILE + '_' + Digest::MD5.hexdigest(Dir.getwd)
311
338
  end
312
339
 
313
340
  end
@@ -70,19 +70,19 @@ module RubyRunMonitor__
70
70
  # in memory
71
71
  def start_thread_monitor
72
72
  $rubyrun_logger.info "----- RubyRun Thread Monitor started -----"
73
- monitor_thr = Thread.new {
73
+ $rubyrun_monitor_thr = Thread.new {
74
74
  cycle = $rubyrun_report_timer / RUBYRUN_MONITOR_TIMER
75
75
  sleep_count = 0
76
76
  loop do
77
77
  sleep RUBYRUN_MONITOR_TIMER
78
- monitor_thr.exit if exit_monitor?
78
+ $rubyrun_monitor_thr.exit if exit_monitor?
79
79
  Thread.new {
80
80
  begin
81
81
  sleep_count += 1
82
82
  sleep_count == cycle ? (dump_reports(true); sleep_count = 0) : dump_reports
83
83
  dump_thread_status if thread_status?
84
84
  dump_object_map if object_map?
85
- kill_threads(monitor_thr) if soft_kill? || hard_kill?
85
+ kill_threads($rubyrun_monitor_thr) if soft_kill? || hard_kill?
86
86
  rescue Exception => e
87
87
  $stderr.print e.to_s + "\n" + e.backtrace.join("\n")
88
88
  exit(-1)
@@ -58,6 +58,7 @@ module RubyRunReport__
58
58
  html_content = THROUGHPUT_HTML.sub(/%THROUGHPUT_BAR_TABLE%/, bar_content)
59
59
  html_content.sub!(/%THROUGHPUT_LABEL_TABLE%/, label_content)
60
60
  html_content.sub!(/%APPS_NAME%/,Rails::Configuration.new.root_path.split('/').last)
61
+ html_content.sub!(/%STARTUP%/,"#{$rubyrun_startup_id_type} #{$rubyrun_startup_id}")
61
62
  html_content.sub!(/%TIMESTAMP%/,Time.now.strftime("%H:%M:%S %m/%d/%Y"))
62
63
  # Second, Top Slowest Requests
63
64
  results = sort_performance_metrics
@@ -88,7 +89,7 @@ module RubyRunReport__
88
89
  begin
89
90
  Dir.mkdir(rss_folder) unless File.exist?(rss_folder)
90
91
  rescue Exception
91
- rss_folder = @rubyrun_report_folder
92
+ rss_folder = $rubyrun_report_folder
92
93
  end
93
94
  $rubyrun_perf_summary_rss = RubyRunRSS.new \
94
95
  RubyRunRSS::RUBYRUN_RSS_PERF_SUMMARY_CHANNEL_TITLE,
@@ -102,7 +103,7 @@ module RubyRunReport__
102
103
 
103
104
  # Create the CSV files
104
105
  def create_csv_files
105
- $rubyrun_txn_log_reporter = Logger.new("#{@rubyrun_report_folder}/#{File.basename($0, ".*")}_#{$$.to_s}_txn_log.csv", shift_age = 10, shift_size = 4096000)
106
+ $rubyrun_txn_log_reporter = Logger.new("#{$rubyrun_report_folder}/#{File.basename($0, ".*")}_#{$rubyrun_startup_id}_txn_log.csv", shift_age = 10, shift_size = 4096000)
106
107
  $rubyrun_txn_log_reporter.info "#\n# Format: [URL],[thread ID],[timestamp],[response time],[action time],[database IO time],[view time],[dispatch delay time],[uncaptured time]\n#"
107
108
  end
108
109
 
@@ -27,8 +27,8 @@ class RubyRunRSS
27
27
  RUBYRUN_RSS_PERF_SUMMARY_CHANNEL_ITEM_FILENAME = 'perf_summary_item'
28
28
  RUBYRUN_RSS_PERF_SUMMARY_CHANNEL_DESCRIPTION = 'RubyRun delivers up-to-the-minute performance summary of your application.'
29
29
  RUBYRUN_RSS_PERF_SUMMARY_CHANNEL_FILENAME = 'perf_summary.xml'
30
- RUBYRUN_RSS_PERF_SUMMARY_ITEM_TITLE = 'Performance summary at %s'
31
- RUBYRUN_RSS_PERF_SUMMARY_ITEM_DESCRIPTION = 'Performance summary of %s at %s'
30
+ RUBYRUN_RSS_PERF_SUMMARY_ITEM_TITLE = 'Report for %s at %s'
31
+ RUBYRUN_RSS_PERF_SUMMARY_ITEM_DESCRIPTION = 'Performance summary of %s (%s) at %s'
32
32
 
33
33
  # Constructor of the class.
34
34
  # RSS XML file and HTML files will be kept in the directory as specified
@@ -65,11 +65,13 @@ class RubyRunRSS
65
65
  # Add an item to the RSS channel
66
66
  def add_item (title, description, html_content)
67
67
  filename = "#{@html_filename}_#{Time.now.to_i}#{rand(1000000)}.html"
68
- File.open("#{@directory}/#{filename}", 'w') { |file| file.puts html_content }
68
+ File.open("#{@directory}/#{filename}", 'w') { |file| file.puts html_content }
69
69
  item = RSS::Rss::Channel::Item.new
70
- item.title = sprintf(title, Time.now.strftime("%H:%M:%S"))
71
- item.description = sprintf(description, @apps_name, Time.now.strftime("%H:%M:%S"))
70
+ item.title = sprintf(title, "#{$rubyrun_startup_id_type} #{$rubyrun_startup_id}",Time.now.strftime("%H:%M:%S"))
71
+ item.description = sprintf(description, @apps_name, "#{$rubyrun_startup_id_type} #{$rubyrun_startup_id}", Time.now.strftime("%H:%M:%S"))
72
72
  item.link = "http://#{$rubyrun_host_with_port}/#{RUBYRUN_RSS_FOLDER}/#{filename}"
73
+ sleep(rand(3))
74
+ @rss = load_rss_content
73
75
  remove_old_item(@rss) if @rss.items.length == $rubyrun_report_shift_age
74
76
  @rss.items << item
75
77
  File.open(@rss_xml_destination,"w") do |f|
@@ -45,6 +45,11 @@ module RubyRunUtils__
45
45
  def is_rails_controller?(klass)
46
46
  return true if $rubyrun_controller_classes.include?(klass)
47
47
  $rubyrun_rails_env ||= ENV['RAILS_ENV']
48
+ if $rubyrun_rails_env && !$rubyrun_monitor_thr.alive? && !$rubyrun_monitor
49
+ $rubyrun_logger.info('----- RubyRun Thread Monitor Restarted -----')
50
+ start_thread_monitor
51
+ $rubyrun_monitor = true
52
+ end
48
53
  begin
49
54
  ($rubyrun_controller_classes << klass; return true) if $rubyrun_rails_env &&
50
55
  klass.to_s[-10, 10] == 'Controller' && is_application_controller(klass)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyrun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: x86-linux
6
6
  authors:
7
7
  - RubySophic Inc
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-03 00:00:00 -07:00
12
+ date: 2008-08-08 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -50,35 +50,35 @@ files:
50
50
  - ext/rubyrunnative__.c
51
51
  - ext/rubyrunnative__x86-darwin.bundle
52
52
  - ext/extconf.rb
53
- - docs/rubyrun-0.9.5.htm
54
- - docs/rubyrun-0.9.5_files
55
- - docs/rubyrun-0.9.5_files/header.htm
56
- - docs/rubyrun-0.9.5_files/image014.jpg
57
- - docs/rubyrun-0.9.5_files/image006.jpg
58
- - docs/rubyrun-0.9.5_files/image004.jpg
59
- - docs/rubyrun-0.9.5_files/image018.jpg
60
- - docs/rubyrun-0.9.5_files/image001.jpg
61
- - docs/rubyrun-0.9.5_files/themedata.thmx
62
- - docs/rubyrun-0.9.5_files/image010.jpg
63
- - docs/rubyrun-0.9.5_files/image009.jpg
64
- - docs/rubyrun-0.9.5_files/image012.jpg
65
- - docs/rubyrun-0.9.5_files/image005.jpg
66
- - docs/rubyrun-0.9.5_files/filelist.xml
67
- - docs/rubyrun-0.9.5_files/image015.jpg
68
- - docs/rubyrun-0.9.5_files/image020.jpg
69
- - docs/rubyrun-0.9.5_files/image016.jpg
70
- - docs/rubyrun-0.9.5_files/image019.jpg
71
- - docs/rubyrun-0.9.5_files/image013.jpg
72
- - docs/rubyrun-0.9.5_files/image008.jpg
73
- - docs/rubyrun-0.9.5_files/colorschememapping.xml
74
- - docs/rubyrun-0.9.5_files/image003.jpg
75
- - docs/rubyrun-0.9.5_files/image007.jpg
76
- - docs/rubyrun-0.9.5_files/image021.jpg
77
- - docs/rubyrun-0.9.5_files/image022.png
78
- - docs/rubyrun-0.9.5_files/image017.png
79
- - docs/rubyrun-0.9.5_files/image002.jpg
80
- - docs/rubyrun-0.9.5_files/image011.jpg
81
- - docs/rubyrun-0.9.5.pdf
53
+ - docs/rubyrun-0.9.6.pdf
54
+ - docs/rubyrun-0.9.6_files
55
+ - docs/rubyrun-0.9.6_files/header.htm
56
+ - docs/rubyrun-0.9.6_files/image014.jpg
57
+ - docs/rubyrun-0.9.6_files/image006.jpg
58
+ - docs/rubyrun-0.9.6_files/image004.jpg
59
+ - docs/rubyrun-0.9.6_files/image018.jpg
60
+ - docs/rubyrun-0.9.6_files/image001.jpg
61
+ - docs/rubyrun-0.9.6_files/themedata.thmx
62
+ - docs/rubyrun-0.9.6_files/image010.jpg
63
+ - docs/rubyrun-0.9.6_files/image009.jpg
64
+ - docs/rubyrun-0.9.6_files/image012.jpg
65
+ - docs/rubyrun-0.9.6_files/image005.jpg
66
+ - docs/rubyrun-0.9.6_files/filelist.xml
67
+ - docs/rubyrun-0.9.6_files/image015.jpg
68
+ - docs/rubyrun-0.9.6_files/image020.jpg
69
+ - docs/rubyrun-0.9.6_files/image016.jpg
70
+ - docs/rubyrun-0.9.6_files/image019.jpg
71
+ - docs/rubyrun-0.9.6_files/image013.jpg
72
+ - docs/rubyrun-0.9.6_files/image008.jpg
73
+ - docs/rubyrun-0.9.6_files/colorschememapping.xml
74
+ - docs/rubyrun-0.9.6_files/image003.jpg
75
+ - docs/rubyrun-0.9.6_files/image007.jpg
76
+ - docs/rubyrun-0.9.6_files/image021.jpg
77
+ - docs/rubyrun-0.9.6_files/image022.png
78
+ - docs/rubyrun-0.9.6_files/image017.png
79
+ - docs/rubyrun-0.9.6_files/image002.jpg
80
+ - docs/rubyrun-0.9.6_files/image011.jpg
81
+ - docs/rubyrun-0.9.6.htm
82
82
  - etc/rubyrun_opts.yml
83
83
  has_rdoc: true
84
84
  homepage: http://www.rubysophic.com