rubyception 0.0.2

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 (227) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +30 -0
  3. data/Rakefile +42 -0
  4. data/app/assets/javascripts/rubyception/app.coffee +4 -0
  5. data/app/assets/javascripts/rubyception/application.coffee +17 -0
  6. data/app/assets/javascripts/rubyception/application.js +15 -0
  7. data/app/assets/javascripts/rubyception/collections/backtrace_lines.coffee +4 -0
  8. data/app/assets/javascripts/rubyception/collections/entries.coffee +3 -0
  9. data/app/assets/javascripts/rubyception/collections/lines.coffee +3 -0
  10. data/app/assets/javascripts/rubyception/init.coffee +10 -0
  11. data/app/assets/javascripts/rubyception/lib/backbone.js +1431 -0
  12. data/app/assets/javascripts/rubyception/lib/inflections.js +659 -0
  13. data/app/assets/javascripts/rubyception/lib/jenny.coffee +262 -0
  14. data/app/assets/javascripts/rubyception/lib/milk.coffee +261 -0
  15. data/app/assets/javascripts/rubyception/lib/mousetrap.js +7 -0
  16. data/app/assets/javascripts/rubyception/lib/underscore-min.js +32 -0
  17. data/app/assets/javascripts/rubyception/models/backtrace_line.coffee +2 -0
  18. data/app/assets/javascripts/rubyception/models/entry.coffee +2 -0
  19. data/app/assets/javascripts/rubyception/models/line.coffee +2 -0
  20. data/app/assets/javascripts/rubyception/routers/log.coffee +45 -0
  21. data/app/assets/javascripts/rubyception/shBrushSql.js +66 -0
  22. data/app/assets/javascripts/rubyception/shCore.js +17 -0
  23. data/app/assets/javascripts/rubyception/template.js +1 -0
  24. data/app/assets/javascripts/rubyception/views/backtrace_lines/backtrace_line.coffee +8 -0
  25. data/app/assets/javascripts/rubyception/views/backtrace_lines/index.coffee +16 -0
  26. data/app/assets/javascripts/rubyception/views/entries/entry.coffee +49 -0
  27. data/app/assets/javascripts/rubyception/views/entries/index.coffee +79 -0
  28. data/app/assets/javascripts/rubyception/views/lines/index.coffee +5 -0
  29. data/app/assets/javascripts/rubyception/views/lines/line.coffee +10 -0
  30. data/app/assets/javascripts/rubyception/views/logs/show.coffee +8 -0
  31. data/app/assets/stylesheets/rubyception/application.css +13 -0
  32. data/app/assets/stylesheets/rubyception/application.sass +12 -0
  33. data/app/assets/stylesheets/rubyception/backtrace_lines.sass +66 -0
  34. data/app/assets/stylesheets/rubyception/default.sass +35 -0
  35. data/app/assets/stylesheets/rubyception/entries.sass +57 -0
  36. data/app/assets/stylesheets/rubyception/lines.sass +41 -0
  37. data/app/assets/stylesheets/rubyception/shCore.css +226 -0
  38. data/app/assets/stylesheets/rubyception/shThemeDefault.css +117 -0
  39. data/app/controllers/rubyception/application_controller.rb +4 -0
  40. data/app/controllers/rubyception/templating_controller.rb +22 -0
  41. data/app/helpers/rubyception/application_helper.rb +9 -0
  42. data/app/models/rubyception/entry.rb +108 -0
  43. data/app/models/rubyception/line.rb +55 -0
  44. data/app/views/layouts/rubyception/application.haml +15 -0
  45. data/app/views/rubyception/application/index.haml +0 -0
  46. data/app/views/rubyception/backtrace_lines/_backtrace_line.haml +5 -0
  47. data/app/views/rubyception/backtrace_lines/_index.haml +7 -0
  48. data/app/views/rubyception/entries/_entry.haml +12 -0
  49. data/app/views/rubyception/entries/_index.haml +1 -0
  50. data/app/views/rubyception/lines/_index.haml +3 -0
  51. data/app/views/rubyception/lines/_line.haml +2 -0
  52. data/app/views/rubyception/lines/action_controller/_exist_fragment.haml +0 -0
  53. data/app/views/rubyception/lines/action_controller/_expire_fragment.haml +0 -0
  54. data/app/views/rubyception/lines/action_controller/_expire_page.haml +0 -0
  55. data/app/views/rubyception/lines/action_controller/_halted_callback.haml +0 -0
  56. data/app/views/rubyception/lines/action_controller/_process_action.haml +0 -0
  57. data/app/views/rubyception/lines/action_controller/_read_fragment.haml +0 -0
  58. data/app/views/rubyception/lines/action_controller/_redirect_to.haml +0 -0
  59. data/app/views/rubyception/lines/action_controller/_send_data.haml +0 -0
  60. data/app/views/rubyception/lines/action_controller/_send_file.haml +0 -0
  61. data/app/views/rubyception/lines/action_controller/_start_processing.haml +0 -0
  62. data/app/views/rubyception/lines/action_controller/_write_fragment.haml +0 -0
  63. data/app/views/rubyception/lines/action_controller/_write_page.haml +0 -0
  64. data/app/views/rubyception/lines/action_mailer/_deliver.haml +0 -0
  65. data/app/views/rubyception/lines/action_mailer/_receive.haml +0 -0
  66. data/app/views/rubyception/lines/action_view/_render_partial.haml +3 -0
  67. data/app/views/rubyception/lines/action_view/_render_template.haml +6 -0
  68. data/app/views/rubyception/lines/active_record/_identity.haml +3 -0
  69. data/app/views/rubyception/lines/active_record/_sql.haml +4 -0
  70. data/app/views/rubyception/lines/active_resource/_request.haml +0 -0
  71. data/app/views/rubyception/lines/active_support/_cache_delete.haml +0 -0
  72. data/app/views/rubyception/lines/active_support/_cache_exist.haml +0 -0
  73. data/app/views/rubyception/lines/active_support/_cache_fetch_hit.haml +0 -0
  74. data/app/views/rubyception/lines/active_support/_cache_generate.haml +0 -0
  75. data/app/views/rubyception/lines/active_support/_cache_read.haml +0 -0
  76. data/app/views/rubyception/lines/active_support/_cache_write.haml +0 -0
  77. data/config/initializers/sass.rb +4 -0
  78. data/config/initializers/websocket_server.rb +23 -0
  79. data/config/routes.rb +3 -0
  80. data/config/templating.yml +39 -0
  81. data/db/development.sqlite3 +0 -0
  82. data/lib/rubyception.rb +6 -0
  83. data/lib/rubyception/catcher.rb +12 -0
  84. data/lib/rubyception/engine.rb +5 -0
  85. data/lib/rubyception/subscriber.rb +30 -0
  86. data/lib/rubyception/templating.rb +48 -0
  87. data/lib/rubyception/version.rb +3 -0
  88. data/lib/rubyception/websocket_server.rb +30 -0
  89. data/lib/tasks/rubyception_tasks.rake +4 -0
  90. data/lib/tasks/templates.rake +7 -0
  91. data/test/dummy/README.rdoc +261 -0
  92. data/test/dummy/Rakefile +7 -0
  93. data/test/dummy/app/assets/javascripts/application.js +15 -0
  94. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  95. data/test/dummy/app/controllers/application_controller.rb +3 -0
  96. data/test/dummy/app/controllers/tasks_controller.rb +4 -0
  97. data/test/dummy/app/helpers/application_helper.rb +2 -0
  98. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  99. data/test/dummy/app/views/tasks/index.html.erb +1 -0
  100. data/test/dummy/config.ru +4 -0
  101. data/test/dummy/config/application.rb +59 -0
  102. data/test/dummy/config/boot.rb +10 -0
  103. data/test/dummy/config/database.yml +25 -0
  104. data/test/dummy/config/environment.rb +5 -0
  105. data/test/dummy/config/environments/development.rb +37 -0
  106. data/test/dummy/config/environments/production.rb +67 -0
  107. data/test/dummy/config/environments/test.rb +37 -0
  108. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  109. data/test/dummy/config/initializers/inflections.rb +15 -0
  110. data/test/dummy/config/initializers/mime_types.rb +5 -0
  111. data/test/dummy/config/initializers/secret_token.rb +7 -0
  112. data/test/dummy/config/initializers/session_store.rb +8 -0
  113. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  114. data/test/dummy/config/locales/en.yml +5 -0
  115. data/test/dummy/config/routes.rb +5 -0
  116. data/test/dummy/db/development.sqlite3 +0 -0
  117. data/test/dummy/log/development.log +183 -0
  118. data/test/dummy/public/404.html +26 -0
  119. data/test/dummy/public/422.html +26 -0
  120. data/test/dummy/public/500.html +25 -0
  121. data/test/dummy/public/favicon.ico +0 -0
  122. data/test/dummy/script/rails +6 -0
  123. data/test/dummy/tmp/cache/assets/C2A/A50/sprockets%2F502789294f7d708459013948aa30c91c +0 -0
  124. data/test/dummy/tmp/cache/assets/C76/720/sprockets%2F610e52016b025a1ce3828a39a7e93981 +0 -0
  125. data/test/dummy/tmp/cache/assets/C7E/740/sprockets%2F8703235e74ff13492a454a492b24b7c5 +0 -0
  126. data/test/dummy/tmp/cache/assets/C86/920/sprockets%2Fc4933e5c2861e44ab07485567259fa32 +0 -0
  127. data/test/dummy/tmp/cache/assets/C9C/F10/sprockets%2F33864d14794ad865eed8829535780ad9 +0 -0
  128. data/test/dummy/tmp/cache/assets/CA1/8B0/sprockets%2F2fb362180bfba307350968110ec6f454 +0 -0
  129. data/test/dummy/tmp/cache/assets/CAD/770/sprockets%2Fc5914c960063cf7cdcd50130a7637485 +0 -0
  130. data/test/dummy/tmp/cache/assets/CAD/DB0/sprockets%2Fe276db0373d02afa09f069436349328d +0 -0
  131. data/test/dummy/tmp/cache/assets/CAE/140/sprockets%2F6350953af3f774482a51481f8cd0a3c3 +0 -0
  132. data/test/dummy/tmp/cache/assets/CB0/010/sprockets%2F1c103104469484b76897daa3d04c6ee9 +0 -0
  133. data/test/dummy/tmp/cache/assets/CB2/E10/sprockets%2F7b063ac8c2e913114d098d89e60228e5 +0 -0
  134. data/test/dummy/tmp/cache/assets/CB5/EA0/sprockets%2Fe98d20291409af69a7316a86c45da651 +0 -0
  135. data/test/dummy/tmp/cache/assets/CB9/B80/sprockets%2F07c32ba22a6489f062e48df8830667d8 +0 -0
  136. data/test/dummy/tmp/cache/assets/CBE/630/sprockets%2F476aa283807fdd8203e98d3137686eb5 +0 -0
  137. data/test/dummy/tmp/cache/assets/CBE/A10/sprockets%2F7f66283cb01647a7c4cf954b62919c29 +0 -0
  138. data/test/dummy/tmp/cache/assets/CC8/DC0/sprockets%2F302790cf97013f80dc311cf2ad0a6342 +0 -0
  139. data/test/dummy/tmp/cache/assets/CD1/8E0/sprockets%2Fe898f78743c913b3855e1786cc58ec61 +0 -0
  140. data/test/dummy/tmp/cache/assets/CD2/510/sprockets%2F32995b414c804ddbb00f5504841f5e1b +0 -0
  141. data/test/dummy/tmp/cache/assets/CD6/EE0/sprockets%2F8666c05da70453c6e7cda433411192af +0 -0
  142. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  143. data/test/dummy/tmp/cache/assets/CE4/F70/sprockets%2F538e295f0a0d9311c8259bf029ec680f +0 -0
  144. data/test/dummy/tmp/cache/assets/CE5/3E0/sprockets%2F7b916f5404e1ee4a943e921d6523a97b +0 -0
  145. data/test/dummy/tmp/cache/assets/CE9/D20/sprockets%2F9dd235d6e21764622b79bf65cf15349a +0 -0
  146. data/test/dummy/tmp/cache/assets/CF2/2F0/sprockets%2F314b4a0885d2efea526a19f539987e96 +0 -0
  147. data/test/dummy/tmp/cache/assets/CFB/750/sprockets%2F42c8014c71d022dd4c60ed1e963b076a +0 -0
  148. data/test/dummy/tmp/cache/assets/D03/BA0/sprockets%2F7c98f37658deed89f88b13d429262a75 +0 -0
  149. data/test/dummy/tmp/cache/assets/D07/3B0/sprockets%2F2ca3210b7cff57c3299aea8507803f32 +0 -0
  150. data/test/dummy/tmp/cache/assets/D08/7E0/sprockets%2F47ed6467d629e22254ca2b0d13c863bb +0 -0
  151. data/test/dummy/tmp/cache/assets/D0F/970/sprockets%2F0461a7c825c4bb945e2f5daf00974f64 +0 -0
  152. data/test/dummy/tmp/cache/assets/D10/E40/sprockets%2Fa39042b3a568331554c57725fedfcf3e +0 -0
  153. data/test/dummy/tmp/cache/assets/D13/740/sprockets%2F98a98bb8bc60c8b170c451195e44e42d +0 -0
  154. data/test/dummy/tmp/cache/assets/D14/BE0/sprockets%2Faa69f1166262379365d818afcf4fa3b3 +0 -0
  155. data/test/dummy/tmp/cache/assets/D15/C40/sprockets%2F8fe3d124a7582df0a47c44743f3e3d85 +0 -0
  156. data/test/dummy/tmp/cache/assets/D1B/210/sprockets%2F567244d0d8f2733c6d1826ee82c76dce +0 -0
  157. data/test/dummy/tmp/cache/assets/D2C/BD0/sprockets%2F17c8f4a03e52cd0d6b85605b0abd7413 +0 -0
  158. data/test/dummy/tmp/cache/assets/D2D/BE0/sprockets%2Fcdcde17900d6ad0c72c14390808a35b3 +0 -0
  159. data/test/dummy/tmp/cache/assets/D30/800/sprockets%2F6ad46c52755a4a6c0b81250fc72ae17c +0 -0
  160. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  161. data/test/dummy/tmp/cache/assets/D34/E20/sprockets%2Fc81175b2bb38464d022abb2d9b18bf87 +0 -0
  162. data/test/dummy/tmp/cache/assets/D38/420/sprockets%2Fc893136e3c5e0cb051358b8c01fc6b9c +0 -0
  163. data/test/dummy/tmp/cache/assets/D3C/C50/sprockets%2F52be58b70628a1836b3cea8bd096ee22 +0 -0
  164. data/test/dummy/tmp/cache/assets/D3E/980/sprockets%2F5e82819b1fe416d230b10d76abd948df +0 -0
  165. data/test/dummy/tmp/cache/assets/D3F/A80/sprockets%2F5e2ee04b0c2b6417f9ab728692a738cd +0 -0
  166. data/test/dummy/tmp/cache/assets/D41/340/sprockets%2Ffdc1e8bf346373a650e6d082f522a59e +0 -0
  167. data/test/dummy/tmp/cache/assets/D41/920/sprockets%2F64c94c28c60bbb70d9a3b9e972ae3057 +0 -0
  168. data/test/dummy/tmp/cache/assets/D47/BB0/sprockets%2F40929a27da40e05aa0b4aa0173f1ebb1 +0 -0
  169. data/test/dummy/tmp/cache/assets/D49/740/sprockets%2Fbcb0e6511f88b9af6d70380c86a57b79 +0 -0
  170. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  171. data/test/dummy/tmp/cache/assets/D50/940/sprockets%2Ff601e768c1f96abd3d019e7f7564e3c9 +0 -0
  172. data/test/dummy/tmp/cache/assets/D53/460/sprockets%2F64e051e79ebdaa56bd989d67831f941d +0 -0
  173. data/test/dummy/tmp/cache/assets/D58/150/sprockets%2F70d598d088bce2f8078c80866be9cff0 +0 -0
  174. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  175. data/test/dummy/tmp/cache/assets/D66/E40/sprockets%2F0cd4ea4f30e313f641b96be80a13cf98 +0 -0
  176. data/test/dummy/tmp/cache/assets/D69/5A0/sprockets%2F8a630d58f110eeeffad123986912bae1 +0 -0
  177. data/test/dummy/tmp/cache/assets/D69/E10/sprockets%2F3d4d98cb1ad46a0b7635b75993c2ac0d +0 -0
  178. data/test/dummy/tmp/cache/assets/D6A/920/sprockets%2F9f1c0c3ad8aae418e1004d5cf54f5479 +0 -0
  179. data/test/dummy/tmp/cache/assets/D6B/A70/sprockets%2Fff1bd1557a03e82f5c2c45d58b661a4f +0 -0
  180. data/test/dummy/tmp/cache/assets/D6F/6B0/sprockets%2F1e2a322de4879106937ede70ffa2da6e +0 -0
  181. data/test/dummy/tmp/cache/assets/D70/780/sprockets%2F6c6a33bccf82b144dbd7982f0854f8b0 +0 -0
  182. data/test/dummy/tmp/cache/assets/D73/C90/sprockets%2F9752db727fd681d97becb91a17ad302d +0 -0
  183. data/test/dummy/tmp/cache/assets/D74/A50/sprockets%2Fe50162da67fdab880a08590f618dfc8e +0 -0
  184. data/test/dummy/tmp/cache/assets/D75/270/sprockets%2Fef0b31d47f8f9acc69f0234019b737ee +0 -0
  185. data/test/dummy/tmp/cache/assets/D77/320/sprockets%2F0c96ad8de5e6a049f5df53415baa4697 +0 -0
  186. data/test/dummy/tmp/cache/assets/D7A/CF0/sprockets%2Fb7e1aa09c7c42e2b98895e16dbc839b6 +0 -0
  187. data/test/dummy/tmp/cache/assets/D7B/110/sprockets%2F55184d1c2bc87fc49369d69e10be7adf +0 -0
  188. data/test/dummy/tmp/cache/assets/D81/A40/sprockets%2Ff886784e31a152dc32fdf5cf782d6bd9 +0 -0
  189. data/test/dummy/tmp/cache/assets/D91/AE0/sprockets%2Fab00df33bbe0ef2939b4d43e042e4d77 +0 -0
  190. data/test/dummy/tmp/cache/assets/D9E/1A0/sprockets%2F69bf83cb71b257071ba6db37bdea78f1 +0 -0
  191. data/test/dummy/tmp/cache/assets/D9E/840/sprockets%2Fc8da1010ea3b0a24bd101a2dd319dc4c +0 -0
  192. data/test/dummy/tmp/cache/assets/DA0/880/sprockets%2F89c46cad03e38a94663bfaac1b8d95d0 +0 -0
  193. data/test/dummy/tmp/cache/assets/DA1/950/sprockets%2F1ea6768fec37a8ee2ad758d4152ae1d2 +0 -0
  194. data/test/dummy/tmp/cache/assets/DA1/D40/sprockets%2Ffd605d648ad0a46b3e3ef9cf089a51b6 +0 -0
  195. data/test/dummy/tmp/cache/assets/DA1/FB0/sprockets%2Fe8cba462fd2940b4be7bf2d294fd7209 +0 -0
  196. data/test/dummy/tmp/cache/assets/DA9/140/sprockets%2Fa9dc7b7a71d4a92925c654f09d17fefa +0 -0
  197. data/test/dummy/tmp/cache/assets/DAA/960/sprockets%2F486294de7d016fa0ec65f0f9efa2e19f +0 -0
  198. data/test/dummy/tmp/cache/assets/DAB/9E0/sprockets%2Fa425c97bf53c87ea907267ce66ad5deb +0 -0
  199. data/test/dummy/tmp/cache/assets/DB3/1D0/sprockets%2F095c6e852a938bbfb9fc98a9ea105ee8 +0 -0
  200. data/test/dummy/tmp/cache/assets/DC3/C60/sprockets%2F0c49e61f99da10cf7acc0cac7736b23a +0 -0
  201. data/test/dummy/tmp/cache/assets/DC7/E70/sprockets%2Fdae539d9ce457212fabb2abf298e112d +0 -0
  202. data/test/dummy/tmp/cache/assets/DC8/C90/sprockets%2F880a4acdf2b3dec03f783e63ed10e6e3 +0 -0
  203. data/test/dummy/tmp/cache/assets/DD0/DE0/sprockets%2Fdd9bcfaa02c63a17f16d84fb523fd886 +0 -0
  204. data/test/dummy/tmp/cache/assets/DD0/E10/sprockets%2F7ff09d9b55239e81c67ac0bd1cd60cfb +0 -0
  205. data/test/dummy/tmp/cache/assets/DD3/140/sprockets%2Fdcdc4960e9f9381cbaec40b2f26c8f53 +0 -0
  206. data/test/dummy/tmp/cache/assets/DD4/340/sprockets%2Ff2cff1054cf9ff3d947f1372db9b6aa2 +0 -0
  207. data/test/dummy/tmp/cache/assets/DD7/F90/sprockets%2F3cbb2ecff5ff45927078c4490a93bfeb +0 -0
  208. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  209. data/test/dummy/tmp/cache/assets/DE2/3D0/sprockets%2F503d37fdad31b11af5bd20b78ee3eaa0 +0 -0
  210. data/test/dummy/tmp/cache/assets/DF5/440/sprockets%2Fadaab579f5cf709a6c31b2fe40404ede +0 -0
  211. data/test/dummy/tmp/cache/assets/DFC/4A0/sprockets%2Fb2e7beb7a4bdf292c1b627bf0f84d9f0 +0 -0
  212. data/test/dummy/tmp/cache/assets/E02/C10/sprockets%2Fdd42eb4f61a99477f901cc31ddda7cfd +0 -0
  213. data/test/dummy/tmp/cache/assets/E04/610/sprockets%2Fd7d96ebe1affa231845c03c78ff6eaa7 +0 -0
  214. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  215. data/test/dummy/tmp/cache/assets/E14/060/sprockets%2F7d7d19b9786dbc0f535478bcdcdc8fce +0 -0
  216. data/test/dummy/tmp/cache/assets/E27/F00/sprockets%2F8abb689fab00eaa7301adf5d198f4dce +0 -0
  217. data/test/dummy/tmp/cache/assets/E2B/870/sprockets%2F22736cce6575f0dd0fcedb11ece9cc8a +0 -0
  218. data/test/dummy/tmp/cache/assets/E31/FB0/sprockets%2Fa8bb4c8b0dc7cc0affd698f7e2a27d72 +0 -0
  219. data/test/dummy/tmp/cache/assets/E3B/E00/sprockets%2F4e3fffccff7a681b16a92b6caf8ef761 +0 -0
  220. data/test/dummy/tmp/cache/assets/E57/9C0/sprockets%2Fb3ca68a8872ea6d2cc2bcbfe01a7fde6 +0 -0
  221. data/test/dummy/tmp/cache/assets/E69/200/sprockets%2Ff2e92a9a60ccdd889dd57cd5bdfed0f2 +0 -0
  222. data/test/dummy/tmp/cache/assets/E6B/860/sprockets%2Ffde862d9eef7ace776b5e3ebc470bcb4 +0 -0
  223. data/test/dummy/tmp/cache/assets/F4A/1F0/sprockets%2Ffceff42fa3bdfb2eafbcad5a77ad38ee +0 -0
  224. data/test/integration/navigation_test.rb +10 -0
  225. data/test/rubyception_test.rb +7 -0
  226. data/test/test_helper.rb +15 -0
  227. metadata +495 -0
@@ -0,0 +1,4 @@
1
+ class Rubyception::ApplicationController < ActionController::Base
2
+ def index
3
+ end
4
+ end
@@ -0,0 +1,22 @@
1
+ require 'jenny'
2
+ class Rubyception::TemplatingController < AbstractController::Base
3
+ include AbstractController::Logger
4
+ include AbstractController::Rendering
5
+ include AbstractController::Layouts
6
+ include AbstractController::Helpers
7
+ include AbstractController::Translation
8
+ include AbstractController::AssetPaths
9
+ include Rails.application.routes.url_helpers
10
+
11
+ self.view_paths = 'app/views'
12
+ self.assets_dir = 'app/public'
13
+
14
+ helper Rubyception::ApplicationHelper,
15
+ ::JennyHelper
16
+
17
+ public
18
+ def r partial
19
+ render :partial => "rubyception/#{partial}"
20
+ end
21
+
22
+ end
@@ -0,0 +1,9 @@
1
+ module Rubyception
2
+ module ApplicationHelper
3
+ def display_rails_backtrace_lines_link
4
+ link_to 'T', '#',
5
+ class: 'show_rails',
6
+ onclick: 'return false'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,108 @@
1
+ class Rubyception::Entry
2
+ attr_accessor :controller,
3
+ :action,
4
+ :path,
5
+ :method,
6
+ :format,
7
+ :error,
8
+ :duration,
9
+ :id,
10
+ :params,
11
+ :backtrace,
12
+ :finished,
13
+ :start_time,
14
+ :end_time
15
+
16
+ def initialize(event)
17
+ set_values event
18
+ @lines = []
19
+ end
20
+
21
+ def set_values event
22
+ payload = event.payload
23
+ self.controller = payload[:controller].gsub(/Controller$/,'').downcase.underscore
24
+ self.action = payload[:action]
25
+ self.path = payload[:path]
26
+ self.method = payload[:method]
27
+ self.format = payload[:format]
28
+ self.error = payload[:exception].present?
29
+ self.duration = event.duration.to_f.round(2)
30
+ self.id = event.transaction_id
31
+ self.params = payload[:params]
32
+ self.start_time = event.time.to_s :entry
33
+ self.end_time = event.end.to_s :entry
34
+ end
35
+
36
+ def error?; error; end
37
+
38
+ def <<(event)
39
+ @lines << Rubyception::Line.new(event).attrs unless ignore_event?(event)
40
+ end
41
+
42
+ def ignore_event?(event)
43
+ payload = event.payload
44
+ case
45
+ when event.name == 'sql.active_record' && payload[:name] == 'SCHEMA'
46
+ # SCHEMA sql are things like SHOW TABLES, DESCRIBE USERS
47
+ true
48
+ else
49
+ false
50
+ end
51
+ end
52
+
53
+ def exception(exception)
54
+ lines = exception.backtrace
55
+ x = 0
56
+ lines = lines.collect do |l|
57
+ parts = l.match(%r{^(#{Regexp.quote(::Rails.root.to_s)}/)?(.*):(\d+):in `(.*?)'$})
58
+ x += 1
59
+ {
60
+ num: x,
61
+ msg: parts[2],
62
+ app_path: parts[1],
63
+ line_num: parts[3],
64
+ in: parts[4],
65
+ url: CGI.escape("file://#{parts[1]}#{parts[2]}"),
66
+ rails: !parts[1]
67
+ }
68
+ end
69
+
70
+ self.backtrace = {
71
+ name: exception.class.name,
72
+ message: exception.message,
73
+ lines: lines }
74
+ flush!
75
+ end
76
+
77
+ def finalize(event)
78
+ set_values(event)
79
+ self.finished = true
80
+ flush! unless error?
81
+ end
82
+
83
+ def to_json
84
+ methods = %w{controller
85
+ action
86
+ path
87
+ method
88
+ format
89
+ error
90
+ duration
91
+ id
92
+ backtrace
93
+ finished
94
+ start_time
95
+ end_time}
96
+ result = {}
97
+ methods.each do |method|
98
+ method = method.to_sym
99
+ result[method] = self.send method
100
+ end
101
+ result = result.merge lines: @lines
102
+ result.to_json
103
+ end
104
+
105
+ def flush!
106
+ Rubyception::WebsocketServer.send_all to_json
107
+ end
108
+ end
@@ -0,0 +1,55 @@
1
+ class Rubyception::Line
2
+ attr_accessor :event
3
+ attr_accessor :params
4
+ attr_accessor :duration
5
+
6
+ def initialize(event)
7
+ self.event = event.name
8
+ self.params = event.payload
9
+ self.duration = event.duration.to_f.round(2)
10
+ end
11
+
12
+ def attrs
13
+ hook,kind = event.split '.'
14
+ hook = hook.sub /\?/, ''
15
+ data = {
16
+ kind: kind,
17
+ hook: hook,
18
+ duration: duration }
19
+
20
+ case "#{kind}_#{hook}".to_sym
21
+ when :action_controller_write_fragment then params
22
+ when :action_controller_read_fragment then params
23
+ when :action_controller_expire_fragment then params
24
+ when :action_controller_exist_fragment then params
25
+ when :action_controller_write_page then params
26
+ when :action_controller_expire_page then params
27
+ when :action_controller_start_processing then params
28
+ when :action_controller_process_action then params
29
+ when :action_controller_send_file then params
30
+ when :action_controller_send_data then params
31
+ when :action_controller_redirect_to then params
32
+ when :action_controller_halted_callback then params
33
+ when :action_view_render_template
34
+ params[:identifier] = remove_root params[:identifier]
35
+ when :action_view_render_partial
36
+ params[:identifier] = remove_root params[:identifier]
37
+ when :active_record_sql then params
38
+ when :active_record_identity then params
39
+ when :action_mailer_receive then params
40
+ when :action_mailer_deliver then params
41
+ when :active_resource_request then params
42
+ when :active_support_cache_read then params
43
+ when :active_support_cache_generate then params
44
+ when :active_support_cache_fetch_hit then params
45
+ when :active_support_cache_write then params
46
+ when :active_support_cache_delete then params
47
+ when :active_support_cache_exist then params
48
+ end
49
+ data.merge! params
50
+ end
51
+
52
+ def remove_root text
53
+ text.sub /#{Rails.root}/, ''
54
+ end
55
+ end
@@ -0,0 +1,15 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %title Rubyception
5
+ = stylesheet_link_tag 'rubyception/application', :media => 'all'
6
+ = javascript_include_tag 'rubyception/application'
7
+ = csrf_meta_tags
8
+ %body
9
+ .container
10
+ .wrapper
11
+ .content_wrap
12
+ .content
13
+ = yield
14
+ .column
15
+ filters
File without changes
@@ -0,0 +1,5 @@
1
+ %td.num {{num}}
2
+ %td.msg= link_to '{{msg}}', "mvim://open?url={{url}}&line={{line_num}}"
3
+ %td.lnum {{line_num}}
4
+ %td.in
5
+ %span {{in}}
@@ -0,0 +1,7 @@
1
+ %table
2
+ %thead
3
+ %th.toggle_rails
4
+ = display_rails_backtrace_lines_link
5
+ %th.exception{colspan: 3}
6
+ {{name}}: {{message}}
7
+ %tbody
@@ -0,0 +1,12 @@
1
+ .marker
2
+ .details
3
+ .heading
4
+ .method {{method}}
5
+ .format {{format}}
6
+ = '{{controller}}#{{action}}'
7
+ .path {{path}}
8
+ .datetime {{start_time}}
9
+ .ms {{duration}}ms
10
+ .lines
11
+ .backtrace_lines
12
+ .clear
@@ -0,0 +1 @@
1
+ .entries
@@ -0,0 +1,3 @@
1
+ %table
2
+ %thead
3
+ %tbody
@@ -0,0 +1,2 @@
1
+ %td
2
+ This is a line
@@ -0,0 +1,3 @@
1
+ %td.msg render partial
2
+ %td.identifier {{identifier}}
3
+ %td.duration{colspan:10} {{duration}}ms
@@ -0,0 +1,6 @@
1
+ %td.msg render template
2
+ %td.identifier {{identifier}}
3
+ %td.layout
4
+ %span layout:
5
+ {{layout}}
6
+ %td.duration{colspan:10} {{duration}}ms
@@ -0,0 +1,3 @@
1
+ %td.name {{name}}
2
+ %td.line {{line}}
3
+ %td.duration{colspan:10} {{duration}}ms
@@ -0,0 +1,4 @@
1
+ %td.name {{name}}
2
+ %td.sql
3
+ %pre{class: 'brush: sql'}{{sql}}
4
+ %td.duration{colspan:10} {{duration}}ms
@@ -0,0 +1,4 @@
1
+ Sass::Engine::DEFAULT_OPTIONS[:load_paths].tap do |load_paths|
2
+ load_paths << "#{Rubyception::Engine.root}/app/assets/stylesheets"
3
+ load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"
4
+ end
@@ -0,0 +1,23 @@
1
+ require 'rubyception/websocket_server'
2
+ require 'rubyception/subscriber'
3
+ require 'rubyception/catcher'
4
+
5
+ ::Rails.logger.auto_flushing = true
6
+ Rubyception::WebsocketServer.sockets = []
7
+ Rubyception::WebsocketServer.new
8
+
9
+ attach_to = [
10
+ :action_controller,
11
+ :action_view,
12
+ :active_record,
13
+ :action_mailer
14
+ ]
15
+ attach_to.each do |notification|
16
+ Rubyception::Subscriber.attach_to notification
17
+ end
18
+
19
+ if defined? ::ActionDispatch::DebugExceptions
20
+ ::ActionDispatch::DebugExceptions.send(:include,Rubyception::ExceptionsCatcher)
21
+ else
22
+ ::ActionDispatch::ShowExceptions.send(:include,Rubyception::ExceptionsCatcher)
23
+ end
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Rubyception::Engine.routes.draw do
2
+ root to: 'application#index'
3
+ end
@@ -0,0 +1,39 @@
1
+ entries:
2
+ - index
3
+ - entry
4
+ backtrace_lines:
5
+ - index
6
+ - backtrace_line
7
+ lines:
8
+ index:
9
+ action_controller:
10
+ - write_fragment
11
+ - read_fragment
12
+ - expire_fragment
13
+ - exist_fragment
14
+ - write_page
15
+ - expire_page
16
+ - start_processing
17
+ - process_action
18
+ - send_file
19
+ - send_data
20
+ - redirect_to
21
+ - halted_callback
22
+ action_view:
23
+ - render_template
24
+ - render_partial
25
+ active_record:
26
+ - sql
27
+ - identity
28
+ action_mailer:
29
+ - receive
30
+ - deliver
31
+ active_resource:
32
+ - request
33
+ active_support:
34
+ - cache_read
35
+ - cache_generate
36
+ - cache_fetch_hit
37
+ - cache_write
38
+ - cache_delete
39
+ - cache_exist
File without changes
@@ -0,0 +1,6 @@
1
+ require 'haml'
2
+ require 'compass'
3
+ require 'coffee-script'
4
+ require 'rubyception/engine'
5
+ module Rubyception
6
+ end
@@ -0,0 +1,12 @@
1
+ module Rubyception::ExceptionsCatcher
2
+ def self.included base
3
+ base.send :alias_method_chain,
4
+ :render_exception,
5
+ :rubyception
6
+ end
7
+
8
+ def render_exception_with_rubyception env, exception
9
+ Rubyception::WebsocketServer.current_entry.exception exception
10
+ render_exception_without_rubyception env, exception
11
+ end
12
+ end