heel 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1020) hide show
  1. data/CHANGES +17 -0
  2. data/LICENSE +31 -0
  3. data/README +84 -0
  4. data/bin/heel +10 -0
  5. data/lib/heel.rb +16 -0
  6. data/lib/heel/dir_handler.rb +284 -0
  7. data/lib/heel/error_handler.rb +27 -0
  8. data/lib/heel/gemspec.rb +49 -0
  9. data/lib/heel/server.rb +216 -0
  10. data/lib/heel/specification.rb +128 -0
  11. data/lib/heel/version.rb +21 -0
  12. data/resources/error.rhtml +68 -0
  13. data/resources/famfamfam/icons/accept.png +0 -0
  14. data/resources/famfamfam/icons/add.png +0 -0
  15. data/resources/famfamfam/icons/anchor.png +0 -0
  16. data/resources/famfamfam/icons/application.png +0 -0
  17. data/resources/famfamfam/icons/application_add.png +0 -0
  18. data/resources/famfamfam/icons/application_cascade.png +0 -0
  19. data/resources/famfamfam/icons/application_delete.png +0 -0
  20. data/resources/famfamfam/icons/application_double.png +0 -0
  21. data/resources/famfamfam/icons/application_edit.png +0 -0
  22. data/resources/famfamfam/icons/application_error.png +0 -0
  23. data/resources/famfamfam/icons/application_form.png +0 -0
  24. data/resources/famfamfam/icons/application_form_add.png +0 -0
  25. data/resources/famfamfam/icons/application_form_delete.png +0 -0
  26. data/resources/famfamfam/icons/application_form_edit.png +0 -0
  27. data/resources/famfamfam/icons/application_form_magnify.png +0 -0
  28. data/resources/famfamfam/icons/application_get.png +0 -0
  29. data/resources/famfamfam/icons/application_go.png +0 -0
  30. data/resources/famfamfam/icons/application_home.png +0 -0
  31. data/resources/famfamfam/icons/application_key.png +0 -0
  32. data/resources/famfamfam/icons/application_lightning.png +0 -0
  33. data/resources/famfamfam/icons/application_link.png +0 -0
  34. data/resources/famfamfam/icons/application_osx.png +0 -0
  35. data/resources/famfamfam/icons/application_osx_terminal.png +0 -0
  36. data/resources/famfamfam/icons/application_put.png +0 -0
  37. data/resources/famfamfam/icons/application_side_boxes.png +0 -0
  38. data/resources/famfamfam/icons/application_side_contract.png +0 -0
  39. data/resources/famfamfam/icons/application_side_expand.png +0 -0
  40. data/resources/famfamfam/icons/application_side_list.png +0 -0
  41. data/resources/famfamfam/icons/application_side_tree.png +0 -0
  42. data/resources/famfamfam/icons/application_split.png +0 -0
  43. data/resources/famfamfam/icons/application_tile_horizontal.png +0 -0
  44. data/resources/famfamfam/icons/application_tile_vertical.png +0 -0
  45. data/resources/famfamfam/icons/application_view_columns.png +0 -0
  46. data/resources/famfamfam/icons/application_view_detail.png +0 -0
  47. data/resources/famfamfam/icons/application_view_gallery.png +0 -0
  48. data/resources/famfamfam/icons/application_view_icons.png +0 -0
  49. data/resources/famfamfam/icons/application_view_list.png +0 -0
  50. data/resources/famfamfam/icons/application_view_tile.png +0 -0
  51. data/resources/famfamfam/icons/application_xp.png +0 -0
  52. data/resources/famfamfam/icons/application_xp_terminal.png +0 -0
  53. data/resources/famfamfam/icons/arrow_branch.png +0 -0
  54. data/resources/famfamfam/icons/arrow_divide.png +0 -0
  55. data/resources/famfamfam/icons/arrow_down.png +0 -0
  56. data/resources/famfamfam/icons/arrow_in.png +0 -0
  57. data/resources/famfamfam/icons/arrow_inout.png +0 -0
  58. data/resources/famfamfam/icons/arrow_join.png +0 -0
  59. data/resources/famfamfam/icons/arrow_left.png +0 -0
  60. data/resources/famfamfam/icons/arrow_merge.png +0 -0
  61. data/resources/famfamfam/icons/arrow_out.png +0 -0
  62. data/resources/famfamfam/icons/arrow_redo.png +0 -0
  63. data/resources/famfamfam/icons/arrow_refresh.png +0 -0
  64. data/resources/famfamfam/icons/arrow_refresh_small.png +0 -0
  65. data/resources/famfamfam/icons/arrow_right.png +0 -0
  66. data/resources/famfamfam/icons/arrow_rotate_anticlockwise.png +0 -0
  67. data/resources/famfamfam/icons/arrow_rotate_clockwise.png +0 -0
  68. data/resources/famfamfam/icons/arrow_switch.png +0 -0
  69. data/resources/famfamfam/icons/arrow_turn_left.png +0 -0
  70. data/resources/famfamfam/icons/arrow_turn_right.png +0 -0
  71. data/resources/famfamfam/icons/arrow_undo.png +0 -0
  72. data/resources/famfamfam/icons/arrow_up.png +0 -0
  73. data/resources/famfamfam/icons/asterisk_orange.png +0 -0
  74. data/resources/famfamfam/icons/asterisk_yellow.png +0 -0
  75. data/resources/famfamfam/icons/attach.png +0 -0
  76. data/resources/famfamfam/icons/award_star_add.png +0 -0
  77. data/resources/famfamfam/icons/award_star_bronze_1.png +0 -0
  78. data/resources/famfamfam/icons/award_star_bronze_2.png +0 -0
  79. data/resources/famfamfam/icons/award_star_bronze_3.png +0 -0
  80. data/resources/famfamfam/icons/award_star_delete.png +0 -0
  81. data/resources/famfamfam/icons/award_star_gold_1.png +0 -0
  82. data/resources/famfamfam/icons/award_star_gold_2.png +0 -0
  83. data/resources/famfamfam/icons/award_star_gold_3.png +0 -0
  84. data/resources/famfamfam/icons/award_star_silver_1.png +0 -0
  85. data/resources/famfamfam/icons/award_star_silver_2.png +0 -0
  86. data/resources/famfamfam/icons/award_star_silver_3.png +0 -0
  87. data/resources/famfamfam/icons/basket.png +0 -0
  88. data/resources/famfamfam/icons/basket_add.png +0 -0
  89. data/resources/famfamfam/icons/basket_delete.png +0 -0
  90. data/resources/famfamfam/icons/basket_edit.png +0 -0
  91. data/resources/famfamfam/icons/basket_error.png +0 -0
  92. data/resources/famfamfam/icons/basket_go.png +0 -0
  93. data/resources/famfamfam/icons/basket_put.png +0 -0
  94. data/resources/famfamfam/icons/basket_remove.png +0 -0
  95. data/resources/famfamfam/icons/bell.png +0 -0
  96. data/resources/famfamfam/icons/bell_add.png +0 -0
  97. data/resources/famfamfam/icons/bell_delete.png +0 -0
  98. data/resources/famfamfam/icons/bell_error.png +0 -0
  99. data/resources/famfamfam/icons/bell_go.png +0 -0
  100. data/resources/famfamfam/icons/bell_link.png +0 -0
  101. data/resources/famfamfam/icons/bin.png +0 -0
  102. data/resources/famfamfam/icons/bin_closed.png +0 -0
  103. data/resources/famfamfam/icons/bin_empty.png +0 -0
  104. data/resources/famfamfam/icons/bomb.png +0 -0
  105. data/resources/famfamfam/icons/book.png +0 -0
  106. data/resources/famfamfam/icons/book_add.png +0 -0
  107. data/resources/famfamfam/icons/book_addresses.png +0 -0
  108. data/resources/famfamfam/icons/book_delete.png +0 -0
  109. data/resources/famfamfam/icons/book_edit.png +0 -0
  110. data/resources/famfamfam/icons/book_error.png +0 -0
  111. data/resources/famfamfam/icons/book_go.png +0 -0
  112. data/resources/famfamfam/icons/book_key.png +0 -0
  113. data/resources/famfamfam/icons/book_link.png +0 -0
  114. data/resources/famfamfam/icons/book_next.png +0 -0
  115. data/resources/famfamfam/icons/book_open.png +0 -0
  116. data/resources/famfamfam/icons/book_previous.png +0 -0
  117. data/resources/famfamfam/icons/box.png +0 -0
  118. data/resources/famfamfam/icons/brick.png +0 -0
  119. data/resources/famfamfam/icons/brick_add.png +0 -0
  120. data/resources/famfamfam/icons/brick_delete.png +0 -0
  121. data/resources/famfamfam/icons/brick_edit.png +0 -0
  122. data/resources/famfamfam/icons/brick_error.png +0 -0
  123. data/resources/famfamfam/icons/brick_go.png +0 -0
  124. data/resources/famfamfam/icons/brick_link.png +0 -0
  125. data/resources/famfamfam/icons/bricks.png +0 -0
  126. data/resources/famfamfam/icons/briefcase.png +0 -0
  127. data/resources/famfamfam/icons/bug.png +0 -0
  128. data/resources/famfamfam/icons/bug_add.png +0 -0
  129. data/resources/famfamfam/icons/bug_delete.png +0 -0
  130. data/resources/famfamfam/icons/bug_edit.png +0 -0
  131. data/resources/famfamfam/icons/bug_error.png +0 -0
  132. data/resources/famfamfam/icons/bug_go.png +0 -0
  133. data/resources/famfamfam/icons/bug_link.png +0 -0
  134. data/resources/famfamfam/icons/building.png +0 -0
  135. data/resources/famfamfam/icons/building_add.png +0 -0
  136. data/resources/famfamfam/icons/building_delete.png +0 -0
  137. data/resources/famfamfam/icons/building_edit.png +0 -0
  138. data/resources/famfamfam/icons/building_error.png +0 -0
  139. data/resources/famfamfam/icons/building_go.png +0 -0
  140. data/resources/famfamfam/icons/building_key.png +0 -0
  141. data/resources/famfamfam/icons/building_link.png +0 -0
  142. data/resources/famfamfam/icons/bullet_add.png +0 -0
  143. data/resources/famfamfam/icons/bullet_arrow_bottom.png +0 -0
  144. data/resources/famfamfam/icons/bullet_arrow_down.png +0 -0
  145. data/resources/famfamfam/icons/bullet_arrow_top.png +0 -0
  146. data/resources/famfamfam/icons/bullet_arrow_up.png +0 -0
  147. data/resources/famfamfam/icons/bullet_black.png +0 -0
  148. data/resources/famfamfam/icons/bullet_blue.png +0 -0
  149. data/resources/famfamfam/icons/bullet_delete.png +0 -0
  150. data/resources/famfamfam/icons/bullet_disk.png +0 -0
  151. data/resources/famfamfam/icons/bullet_error.png +0 -0
  152. data/resources/famfamfam/icons/bullet_feed.png +0 -0
  153. data/resources/famfamfam/icons/bullet_go.png +0 -0
  154. data/resources/famfamfam/icons/bullet_green.png +0 -0
  155. data/resources/famfamfam/icons/bullet_key.png +0 -0
  156. data/resources/famfamfam/icons/bullet_orange.png +0 -0
  157. data/resources/famfamfam/icons/bullet_picture.png +0 -0
  158. data/resources/famfamfam/icons/bullet_pink.png +0 -0
  159. data/resources/famfamfam/icons/bullet_purple.png +0 -0
  160. data/resources/famfamfam/icons/bullet_red.png +0 -0
  161. data/resources/famfamfam/icons/bullet_star.png +0 -0
  162. data/resources/famfamfam/icons/bullet_toggle_minus.png +0 -0
  163. data/resources/famfamfam/icons/bullet_toggle_plus.png +0 -0
  164. data/resources/famfamfam/icons/bullet_white.png +0 -0
  165. data/resources/famfamfam/icons/bullet_wrench.png +0 -0
  166. data/resources/famfamfam/icons/bullet_yellow.png +0 -0
  167. data/resources/famfamfam/icons/cake.png +0 -0
  168. data/resources/famfamfam/icons/calculator.png +0 -0
  169. data/resources/famfamfam/icons/calculator_add.png +0 -0
  170. data/resources/famfamfam/icons/calculator_delete.png +0 -0
  171. data/resources/famfamfam/icons/calculator_edit.png +0 -0
  172. data/resources/famfamfam/icons/calculator_error.png +0 -0
  173. data/resources/famfamfam/icons/calculator_link.png +0 -0
  174. data/resources/famfamfam/icons/calendar.png +0 -0
  175. data/resources/famfamfam/icons/calendar_add.png +0 -0
  176. data/resources/famfamfam/icons/calendar_delete.png +0 -0
  177. data/resources/famfamfam/icons/calendar_edit.png +0 -0
  178. data/resources/famfamfam/icons/calendar_link.png +0 -0
  179. data/resources/famfamfam/icons/calendar_view_day.png +0 -0
  180. data/resources/famfamfam/icons/calendar_view_month.png +0 -0
  181. data/resources/famfamfam/icons/calendar_view_week.png +0 -0
  182. data/resources/famfamfam/icons/camera.png +0 -0
  183. data/resources/famfamfam/icons/camera_add.png +0 -0
  184. data/resources/famfamfam/icons/camera_delete.png +0 -0
  185. data/resources/famfamfam/icons/camera_edit.png +0 -0
  186. data/resources/famfamfam/icons/camera_error.png +0 -0
  187. data/resources/famfamfam/icons/camera_go.png +0 -0
  188. data/resources/famfamfam/icons/camera_link.png +0 -0
  189. data/resources/famfamfam/icons/camera_small.png +0 -0
  190. data/resources/famfamfam/icons/cancel.png +0 -0
  191. data/resources/famfamfam/icons/car.png +0 -0
  192. data/resources/famfamfam/icons/car_add.png +0 -0
  193. data/resources/famfamfam/icons/car_delete.png +0 -0
  194. data/resources/famfamfam/icons/cart.png +0 -0
  195. data/resources/famfamfam/icons/cart_add.png +0 -0
  196. data/resources/famfamfam/icons/cart_delete.png +0 -0
  197. data/resources/famfamfam/icons/cart_edit.png +0 -0
  198. data/resources/famfamfam/icons/cart_error.png +0 -0
  199. data/resources/famfamfam/icons/cart_go.png +0 -0
  200. data/resources/famfamfam/icons/cart_put.png +0 -0
  201. data/resources/famfamfam/icons/cart_remove.png +0 -0
  202. data/resources/famfamfam/icons/cd.png +0 -0
  203. data/resources/famfamfam/icons/cd_add.png +0 -0
  204. data/resources/famfamfam/icons/cd_burn.png +0 -0
  205. data/resources/famfamfam/icons/cd_delete.png +0 -0
  206. data/resources/famfamfam/icons/cd_edit.png +0 -0
  207. data/resources/famfamfam/icons/cd_eject.png +0 -0
  208. data/resources/famfamfam/icons/cd_go.png +0 -0
  209. data/resources/famfamfam/icons/chart_bar.png +0 -0
  210. data/resources/famfamfam/icons/chart_bar_add.png +0 -0
  211. data/resources/famfamfam/icons/chart_bar_delete.png +0 -0
  212. data/resources/famfamfam/icons/chart_bar_edit.png +0 -0
  213. data/resources/famfamfam/icons/chart_bar_error.png +0 -0
  214. data/resources/famfamfam/icons/chart_bar_link.png +0 -0
  215. data/resources/famfamfam/icons/chart_curve.png +0 -0
  216. data/resources/famfamfam/icons/chart_curve_add.png +0 -0
  217. data/resources/famfamfam/icons/chart_curve_delete.png +0 -0
  218. data/resources/famfamfam/icons/chart_curve_edit.png +0 -0
  219. data/resources/famfamfam/icons/chart_curve_error.png +0 -0
  220. data/resources/famfamfam/icons/chart_curve_go.png +0 -0
  221. data/resources/famfamfam/icons/chart_curve_link.png +0 -0
  222. data/resources/famfamfam/icons/chart_line.png +0 -0
  223. data/resources/famfamfam/icons/chart_line_add.png +0 -0
  224. data/resources/famfamfam/icons/chart_line_delete.png +0 -0
  225. data/resources/famfamfam/icons/chart_line_edit.png +0 -0
  226. data/resources/famfamfam/icons/chart_line_error.png +0 -0
  227. data/resources/famfamfam/icons/chart_line_link.png +0 -0
  228. data/resources/famfamfam/icons/chart_organisation.png +0 -0
  229. data/resources/famfamfam/icons/chart_organisation_add.png +0 -0
  230. data/resources/famfamfam/icons/chart_organisation_delete.png +0 -0
  231. data/resources/famfamfam/icons/chart_pie.png +0 -0
  232. data/resources/famfamfam/icons/chart_pie_add.png +0 -0
  233. data/resources/famfamfam/icons/chart_pie_delete.png +0 -0
  234. data/resources/famfamfam/icons/chart_pie_edit.png +0 -0
  235. data/resources/famfamfam/icons/chart_pie_error.png +0 -0
  236. data/resources/famfamfam/icons/chart_pie_link.png +0 -0
  237. data/resources/famfamfam/icons/clock.png +0 -0
  238. data/resources/famfamfam/icons/clock_add.png +0 -0
  239. data/resources/famfamfam/icons/clock_delete.png +0 -0
  240. data/resources/famfamfam/icons/clock_edit.png +0 -0
  241. data/resources/famfamfam/icons/clock_error.png +0 -0
  242. data/resources/famfamfam/icons/clock_go.png +0 -0
  243. data/resources/famfamfam/icons/clock_link.png +0 -0
  244. data/resources/famfamfam/icons/clock_pause.png +0 -0
  245. data/resources/famfamfam/icons/clock_play.png +0 -0
  246. data/resources/famfamfam/icons/clock_red.png +0 -0
  247. data/resources/famfamfam/icons/clock_stop.png +0 -0
  248. data/resources/famfamfam/icons/cog.png +0 -0
  249. data/resources/famfamfam/icons/cog_add.png +0 -0
  250. data/resources/famfamfam/icons/cog_delete.png +0 -0
  251. data/resources/famfamfam/icons/cog_edit.png +0 -0
  252. data/resources/famfamfam/icons/cog_error.png +0 -0
  253. data/resources/famfamfam/icons/cog_go.png +0 -0
  254. data/resources/famfamfam/icons/coins.png +0 -0
  255. data/resources/famfamfam/icons/coins_add.png +0 -0
  256. data/resources/famfamfam/icons/coins_delete.png +0 -0
  257. data/resources/famfamfam/icons/color_swatch.png +0 -0
  258. data/resources/famfamfam/icons/color_wheel.png +0 -0
  259. data/resources/famfamfam/icons/comment.png +0 -0
  260. data/resources/famfamfam/icons/comment_add.png +0 -0
  261. data/resources/famfamfam/icons/comment_delete.png +0 -0
  262. data/resources/famfamfam/icons/comment_edit.png +0 -0
  263. data/resources/famfamfam/icons/comments.png +0 -0
  264. data/resources/famfamfam/icons/comments_add.png +0 -0
  265. data/resources/famfamfam/icons/comments_delete.png +0 -0
  266. data/resources/famfamfam/icons/compress.png +0 -0
  267. data/resources/famfamfam/icons/computer.png +0 -0
  268. data/resources/famfamfam/icons/computer_add.png +0 -0
  269. data/resources/famfamfam/icons/computer_delete.png +0 -0
  270. data/resources/famfamfam/icons/computer_edit.png +0 -0
  271. data/resources/famfamfam/icons/computer_error.png +0 -0
  272. data/resources/famfamfam/icons/computer_go.png +0 -0
  273. data/resources/famfamfam/icons/computer_key.png +0 -0
  274. data/resources/famfamfam/icons/computer_link.png +0 -0
  275. data/resources/famfamfam/icons/connect.png +0 -0
  276. data/resources/famfamfam/icons/contrast.png +0 -0
  277. data/resources/famfamfam/icons/contrast_decrease.png +0 -0
  278. data/resources/famfamfam/icons/contrast_high.png +0 -0
  279. data/resources/famfamfam/icons/contrast_increase.png +0 -0
  280. data/resources/famfamfam/icons/contrast_low.png +0 -0
  281. data/resources/famfamfam/icons/control_eject.png +0 -0
  282. data/resources/famfamfam/icons/control_eject_blue.png +0 -0
  283. data/resources/famfamfam/icons/control_end.png +0 -0
  284. data/resources/famfamfam/icons/control_end_blue.png +0 -0
  285. data/resources/famfamfam/icons/control_equalizer.png +0 -0
  286. data/resources/famfamfam/icons/control_equalizer_blue.png +0 -0
  287. data/resources/famfamfam/icons/control_fastforward.png +0 -0
  288. data/resources/famfamfam/icons/control_fastforward_blue.png +0 -0
  289. data/resources/famfamfam/icons/control_pause.png +0 -0
  290. data/resources/famfamfam/icons/control_pause_blue.png +0 -0
  291. data/resources/famfamfam/icons/control_play.png +0 -0
  292. data/resources/famfamfam/icons/control_play_blue.png +0 -0
  293. data/resources/famfamfam/icons/control_repeat.png +0 -0
  294. data/resources/famfamfam/icons/control_repeat_blue.png +0 -0
  295. data/resources/famfamfam/icons/control_rewind.png +0 -0
  296. data/resources/famfamfam/icons/control_rewind_blue.png +0 -0
  297. data/resources/famfamfam/icons/control_start.png +0 -0
  298. data/resources/famfamfam/icons/control_start_blue.png +0 -0
  299. data/resources/famfamfam/icons/control_stop.png +0 -0
  300. data/resources/famfamfam/icons/control_stop_blue.png +0 -0
  301. data/resources/famfamfam/icons/controller.png +0 -0
  302. data/resources/famfamfam/icons/controller_add.png +0 -0
  303. data/resources/famfamfam/icons/controller_delete.png +0 -0
  304. data/resources/famfamfam/icons/controller_error.png +0 -0
  305. data/resources/famfamfam/icons/creditcards.png +0 -0
  306. data/resources/famfamfam/icons/cross.png +0 -0
  307. data/resources/famfamfam/icons/css.png +0 -0
  308. data/resources/famfamfam/icons/css_add.png +0 -0
  309. data/resources/famfamfam/icons/css_delete.png +0 -0
  310. data/resources/famfamfam/icons/css_go.png +0 -0
  311. data/resources/famfamfam/icons/css_valid.png +0 -0
  312. data/resources/famfamfam/icons/cup.png +0 -0
  313. data/resources/famfamfam/icons/cup_add.png +0 -0
  314. data/resources/famfamfam/icons/cup_delete.png +0 -0
  315. data/resources/famfamfam/icons/cup_edit.png +0 -0
  316. data/resources/famfamfam/icons/cup_error.png +0 -0
  317. data/resources/famfamfam/icons/cup_go.png +0 -0
  318. data/resources/famfamfam/icons/cup_key.png +0 -0
  319. data/resources/famfamfam/icons/cup_link.png +0 -0
  320. data/resources/famfamfam/icons/cursor.png +0 -0
  321. data/resources/famfamfam/icons/cut.png +0 -0
  322. data/resources/famfamfam/icons/cut_red.png +0 -0
  323. data/resources/famfamfam/icons/database.png +0 -0
  324. data/resources/famfamfam/icons/database_add.png +0 -0
  325. data/resources/famfamfam/icons/database_connect.png +0 -0
  326. data/resources/famfamfam/icons/database_delete.png +0 -0
  327. data/resources/famfamfam/icons/database_edit.png +0 -0
  328. data/resources/famfamfam/icons/database_error.png +0 -0
  329. data/resources/famfamfam/icons/database_gear.png +0 -0
  330. data/resources/famfamfam/icons/database_go.png +0 -0
  331. data/resources/famfamfam/icons/database_key.png +0 -0
  332. data/resources/famfamfam/icons/database_lightning.png +0 -0
  333. data/resources/famfamfam/icons/database_link.png +0 -0
  334. data/resources/famfamfam/icons/database_refresh.png +0 -0
  335. data/resources/famfamfam/icons/database_save.png +0 -0
  336. data/resources/famfamfam/icons/database_table.png +0 -0
  337. data/resources/famfamfam/icons/date.png +0 -0
  338. data/resources/famfamfam/icons/date_add.png +0 -0
  339. data/resources/famfamfam/icons/date_delete.png +0 -0
  340. data/resources/famfamfam/icons/date_edit.png +0 -0
  341. data/resources/famfamfam/icons/date_error.png +0 -0
  342. data/resources/famfamfam/icons/date_go.png +0 -0
  343. data/resources/famfamfam/icons/date_link.png +0 -0
  344. data/resources/famfamfam/icons/date_magnify.png +0 -0
  345. data/resources/famfamfam/icons/date_next.png +0 -0
  346. data/resources/famfamfam/icons/date_previous.png +0 -0
  347. data/resources/famfamfam/icons/delete.png +0 -0
  348. data/resources/famfamfam/icons/disconnect.png +0 -0
  349. data/resources/famfamfam/icons/disk.png +0 -0
  350. data/resources/famfamfam/icons/disk_multiple.png +0 -0
  351. data/resources/famfamfam/icons/door.png +0 -0
  352. data/resources/famfamfam/icons/door_in.png +0 -0
  353. data/resources/famfamfam/icons/door_open.png +0 -0
  354. data/resources/famfamfam/icons/door_out.png +0 -0
  355. data/resources/famfamfam/icons/drink.png +0 -0
  356. data/resources/famfamfam/icons/drink_empty.png +0 -0
  357. data/resources/famfamfam/icons/drive.png +0 -0
  358. data/resources/famfamfam/icons/drive_add.png +0 -0
  359. data/resources/famfamfam/icons/drive_burn.png +0 -0
  360. data/resources/famfamfam/icons/drive_cd.png +0 -0
  361. data/resources/famfamfam/icons/drive_cd_empty.png +0 -0
  362. data/resources/famfamfam/icons/drive_delete.png +0 -0
  363. data/resources/famfamfam/icons/drive_disk.png +0 -0
  364. data/resources/famfamfam/icons/drive_edit.png +0 -0
  365. data/resources/famfamfam/icons/drive_error.png +0 -0
  366. data/resources/famfamfam/icons/drive_go.png +0 -0
  367. data/resources/famfamfam/icons/drive_key.png +0 -0
  368. data/resources/famfamfam/icons/drive_link.png +0 -0
  369. data/resources/famfamfam/icons/drive_magnify.png +0 -0
  370. data/resources/famfamfam/icons/drive_network.png +0 -0
  371. data/resources/famfamfam/icons/drive_rename.png +0 -0
  372. data/resources/famfamfam/icons/drive_user.png +0 -0
  373. data/resources/famfamfam/icons/drive_web.png +0 -0
  374. data/resources/famfamfam/icons/dvd.png +0 -0
  375. data/resources/famfamfam/icons/dvd_add.png +0 -0
  376. data/resources/famfamfam/icons/dvd_delete.png +0 -0
  377. data/resources/famfamfam/icons/dvd_edit.png +0 -0
  378. data/resources/famfamfam/icons/dvd_error.png +0 -0
  379. data/resources/famfamfam/icons/dvd_go.png +0 -0
  380. data/resources/famfamfam/icons/dvd_key.png +0 -0
  381. data/resources/famfamfam/icons/dvd_link.png +0 -0
  382. data/resources/famfamfam/icons/email.png +0 -0
  383. data/resources/famfamfam/icons/email_add.png +0 -0
  384. data/resources/famfamfam/icons/email_attach.png +0 -0
  385. data/resources/famfamfam/icons/email_delete.png +0 -0
  386. data/resources/famfamfam/icons/email_edit.png +0 -0
  387. data/resources/famfamfam/icons/email_error.png +0 -0
  388. data/resources/famfamfam/icons/email_go.png +0 -0
  389. data/resources/famfamfam/icons/email_link.png +0 -0
  390. data/resources/famfamfam/icons/email_open.png +0 -0
  391. data/resources/famfamfam/icons/email_open_image.png +0 -0
  392. data/resources/famfamfam/icons/emoticon_evilgrin.png +0 -0
  393. data/resources/famfamfam/icons/emoticon_grin.png +0 -0
  394. data/resources/famfamfam/icons/emoticon_happy.png +0 -0
  395. data/resources/famfamfam/icons/emoticon_smile.png +0 -0
  396. data/resources/famfamfam/icons/emoticon_surprised.png +0 -0
  397. data/resources/famfamfam/icons/emoticon_tongue.png +0 -0
  398. data/resources/famfamfam/icons/emoticon_unhappy.png +0 -0
  399. data/resources/famfamfam/icons/emoticon_waii.png +0 -0
  400. data/resources/famfamfam/icons/emoticon_wink.png +0 -0
  401. data/resources/famfamfam/icons/error.png +0 -0
  402. data/resources/famfamfam/icons/error_add.png +0 -0
  403. data/resources/famfamfam/icons/error_delete.png +0 -0
  404. data/resources/famfamfam/icons/error_go.png +0 -0
  405. data/resources/famfamfam/icons/exclamation.png +0 -0
  406. data/resources/famfamfam/icons/eye.png +0 -0
  407. data/resources/famfamfam/icons/feed.png +0 -0
  408. data/resources/famfamfam/icons/feed_add.png +0 -0
  409. data/resources/famfamfam/icons/feed_delete.png +0 -0
  410. data/resources/famfamfam/icons/feed_disk.png +0 -0
  411. data/resources/famfamfam/icons/feed_edit.png +0 -0
  412. data/resources/famfamfam/icons/feed_error.png +0 -0
  413. data/resources/famfamfam/icons/feed_go.png +0 -0
  414. data/resources/famfamfam/icons/feed_key.png +0 -0
  415. data/resources/famfamfam/icons/feed_link.png +0 -0
  416. data/resources/famfamfam/icons/feed_magnify.png +0 -0
  417. data/resources/famfamfam/icons/female.png +0 -0
  418. data/resources/famfamfam/icons/film.png +0 -0
  419. data/resources/famfamfam/icons/film_add.png +0 -0
  420. data/resources/famfamfam/icons/film_delete.png +0 -0
  421. data/resources/famfamfam/icons/film_edit.png +0 -0
  422. data/resources/famfamfam/icons/film_error.png +0 -0
  423. data/resources/famfamfam/icons/film_go.png +0 -0
  424. data/resources/famfamfam/icons/film_key.png +0 -0
  425. data/resources/famfamfam/icons/film_link.png +0 -0
  426. data/resources/famfamfam/icons/film_save.png +0 -0
  427. data/resources/famfamfam/icons/find.png +0 -0
  428. data/resources/famfamfam/icons/flag_blue.png +0 -0
  429. data/resources/famfamfam/icons/flag_green.png +0 -0
  430. data/resources/famfamfam/icons/flag_orange.png +0 -0
  431. data/resources/famfamfam/icons/flag_pink.png +0 -0
  432. data/resources/famfamfam/icons/flag_purple.png +0 -0
  433. data/resources/famfamfam/icons/flag_red.png +0 -0
  434. data/resources/famfamfam/icons/flag_yellow.png +0 -0
  435. data/resources/famfamfam/icons/folder.png +0 -0
  436. data/resources/famfamfam/icons/folder_add.png +0 -0
  437. data/resources/famfamfam/icons/folder_bell.png +0 -0
  438. data/resources/famfamfam/icons/folder_brick.png +0 -0
  439. data/resources/famfamfam/icons/folder_bug.png +0 -0
  440. data/resources/famfamfam/icons/folder_camera.png +0 -0
  441. data/resources/famfamfam/icons/folder_database.png +0 -0
  442. data/resources/famfamfam/icons/folder_delete.png +0 -0
  443. data/resources/famfamfam/icons/folder_edit.png +0 -0
  444. data/resources/famfamfam/icons/folder_error.png +0 -0
  445. data/resources/famfamfam/icons/folder_explore.png +0 -0
  446. data/resources/famfamfam/icons/folder_feed.png +0 -0
  447. data/resources/famfamfam/icons/folder_find.png +0 -0
  448. data/resources/famfamfam/icons/folder_go.png +0 -0
  449. data/resources/famfamfam/icons/folder_heart.png +0 -0
  450. data/resources/famfamfam/icons/folder_image.png +0 -0
  451. data/resources/famfamfam/icons/folder_key.png +0 -0
  452. data/resources/famfamfam/icons/folder_lightbulb.png +0 -0
  453. data/resources/famfamfam/icons/folder_link.png +0 -0
  454. data/resources/famfamfam/icons/folder_magnify.png +0 -0
  455. data/resources/famfamfam/icons/folder_page.png +0 -0
  456. data/resources/famfamfam/icons/folder_page_white.png +0 -0
  457. data/resources/famfamfam/icons/folder_palette.png +0 -0
  458. data/resources/famfamfam/icons/folder_picture.png +0 -0
  459. data/resources/famfamfam/icons/folder_star.png +0 -0
  460. data/resources/famfamfam/icons/folder_table.png +0 -0
  461. data/resources/famfamfam/icons/folder_user.png +0 -0
  462. data/resources/famfamfam/icons/folder_wrench.png +0 -0
  463. data/resources/famfamfam/icons/font.png +0 -0
  464. data/resources/famfamfam/icons/font_add.png +0 -0
  465. data/resources/famfamfam/icons/font_delete.png +0 -0
  466. data/resources/famfamfam/icons/font_go.png +0 -0
  467. data/resources/famfamfam/icons/group.png +0 -0
  468. data/resources/famfamfam/icons/group_add.png +0 -0
  469. data/resources/famfamfam/icons/group_delete.png +0 -0
  470. data/resources/famfamfam/icons/group_edit.png +0 -0
  471. data/resources/famfamfam/icons/group_error.png +0 -0
  472. data/resources/famfamfam/icons/group_gear.png +0 -0
  473. data/resources/famfamfam/icons/group_go.png +0 -0
  474. data/resources/famfamfam/icons/group_key.png +0 -0
  475. data/resources/famfamfam/icons/group_link.png +0 -0
  476. data/resources/famfamfam/icons/heart.png +0 -0
  477. data/resources/famfamfam/icons/heart_add.png +0 -0
  478. data/resources/famfamfam/icons/heart_delete.png +0 -0
  479. data/resources/famfamfam/icons/help.png +0 -0
  480. data/resources/famfamfam/icons/hourglass.png +0 -0
  481. data/resources/famfamfam/icons/hourglass_add.png +0 -0
  482. data/resources/famfamfam/icons/hourglass_delete.png +0 -0
  483. data/resources/famfamfam/icons/hourglass_go.png +0 -0
  484. data/resources/famfamfam/icons/hourglass_link.png +0 -0
  485. data/resources/famfamfam/icons/house.png +0 -0
  486. data/resources/famfamfam/icons/house_go.png +0 -0
  487. data/resources/famfamfam/icons/house_link.png +0 -0
  488. data/resources/famfamfam/icons/html.png +0 -0
  489. data/resources/famfamfam/icons/html_add.png +0 -0
  490. data/resources/famfamfam/icons/html_delete.png +0 -0
  491. data/resources/famfamfam/icons/html_go.png +0 -0
  492. data/resources/famfamfam/icons/html_valid.png +0 -0
  493. data/resources/famfamfam/icons/image.png +0 -0
  494. data/resources/famfamfam/icons/image_add.png +0 -0
  495. data/resources/famfamfam/icons/image_delete.png +0 -0
  496. data/resources/famfamfam/icons/image_edit.png +0 -0
  497. data/resources/famfamfam/icons/image_link.png +0 -0
  498. data/resources/famfamfam/icons/images.png +0 -0
  499. data/resources/famfamfam/icons/information.png +0 -0
  500. data/resources/famfamfam/icons/ipod.png +0 -0
  501. data/resources/famfamfam/icons/ipod_cast.png +0 -0
  502. data/resources/famfamfam/icons/ipod_cast_add.png +0 -0
  503. data/resources/famfamfam/icons/ipod_cast_delete.png +0 -0
  504. data/resources/famfamfam/icons/ipod_sound.png +0 -0
  505. data/resources/famfamfam/icons/joystick.png +0 -0
  506. data/resources/famfamfam/icons/joystick_add.png +0 -0
  507. data/resources/famfamfam/icons/joystick_delete.png +0 -0
  508. data/resources/famfamfam/icons/joystick_error.png +0 -0
  509. data/resources/famfamfam/icons/key.png +0 -0
  510. data/resources/famfamfam/icons/key_add.png +0 -0
  511. data/resources/famfamfam/icons/key_delete.png +0 -0
  512. data/resources/famfamfam/icons/key_go.png +0 -0
  513. data/resources/famfamfam/icons/keyboard.png +0 -0
  514. data/resources/famfamfam/icons/keyboard_add.png +0 -0
  515. data/resources/famfamfam/icons/keyboard_delete.png +0 -0
  516. data/resources/famfamfam/icons/keyboard_magnify.png +0 -0
  517. data/resources/famfamfam/icons/layers.png +0 -0
  518. data/resources/famfamfam/icons/layout.png +0 -0
  519. data/resources/famfamfam/icons/layout_add.png +0 -0
  520. data/resources/famfamfam/icons/layout_content.png +0 -0
  521. data/resources/famfamfam/icons/layout_delete.png +0 -0
  522. data/resources/famfamfam/icons/layout_edit.png +0 -0
  523. data/resources/famfamfam/icons/layout_error.png +0 -0
  524. data/resources/famfamfam/icons/layout_header.png +0 -0
  525. data/resources/famfamfam/icons/layout_link.png +0 -0
  526. data/resources/famfamfam/icons/layout_sidebar.png +0 -0
  527. data/resources/famfamfam/icons/lightbulb.png +0 -0
  528. data/resources/famfamfam/icons/lightbulb_add.png +0 -0
  529. data/resources/famfamfam/icons/lightbulb_delete.png +0 -0
  530. data/resources/famfamfam/icons/lightbulb_off.png +0 -0
  531. data/resources/famfamfam/icons/lightning.png +0 -0
  532. data/resources/famfamfam/icons/lightning_add.png +0 -0
  533. data/resources/famfamfam/icons/lightning_delete.png +0 -0
  534. data/resources/famfamfam/icons/lightning_go.png +0 -0
  535. data/resources/famfamfam/icons/link.png +0 -0
  536. data/resources/famfamfam/icons/link_add.png +0 -0
  537. data/resources/famfamfam/icons/link_break.png +0 -0
  538. data/resources/famfamfam/icons/link_delete.png +0 -0
  539. data/resources/famfamfam/icons/link_edit.png +0 -0
  540. data/resources/famfamfam/icons/link_error.png +0 -0
  541. data/resources/famfamfam/icons/link_go.png +0 -0
  542. data/resources/famfamfam/icons/lock.png +0 -0
  543. data/resources/famfamfam/icons/lock_add.png +0 -0
  544. data/resources/famfamfam/icons/lock_break.png +0 -0
  545. data/resources/famfamfam/icons/lock_delete.png +0 -0
  546. data/resources/famfamfam/icons/lock_edit.png +0 -0
  547. data/resources/famfamfam/icons/lock_go.png +0 -0
  548. data/resources/famfamfam/icons/lock_open.png +0 -0
  549. data/resources/famfamfam/icons/lorry.png +0 -0
  550. data/resources/famfamfam/icons/lorry_add.png +0 -0
  551. data/resources/famfamfam/icons/lorry_delete.png +0 -0
  552. data/resources/famfamfam/icons/lorry_error.png +0 -0
  553. data/resources/famfamfam/icons/lorry_flatbed.png +0 -0
  554. data/resources/famfamfam/icons/lorry_go.png +0 -0
  555. data/resources/famfamfam/icons/lorry_link.png +0 -0
  556. data/resources/famfamfam/icons/magifier_zoom_out.png +0 -0
  557. data/resources/famfamfam/icons/magnifier.png +0 -0
  558. data/resources/famfamfam/icons/magnifier_zoom_in.png +0 -0
  559. data/resources/famfamfam/icons/male.png +0 -0
  560. data/resources/famfamfam/icons/map.png +0 -0
  561. data/resources/famfamfam/icons/map_add.png +0 -0
  562. data/resources/famfamfam/icons/map_delete.png +0 -0
  563. data/resources/famfamfam/icons/map_edit.png +0 -0
  564. data/resources/famfamfam/icons/map_go.png +0 -0
  565. data/resources/famfamfam/icons/map_magnify.png +0 -0
  566. data/resources/famfamfam/icons/medal_bronze_1.png +0 -0
  567. data/resources/famfamfam/icons/medal_bronze_2.png +0 -0
  568. data/resources/famfamfam/icons/medal_bronze_3.png +0 -0
  569. data/resources/famfamfam/icons/medal_bronze_add.png +0 -0
  570. data/resources/famfamfam/icons/medal_bronze_delete.png +0 -0
  571. data/resources/famfamfam/icons/medal_gold_1.png +0 -0
  572. data/resources/famfamfam/icons/medal_gold_2.png +0 -0
  573. data/resources/famfamfam/icons/medal_gold_3.png +0 -0
  574. data/resources/famfamfam/icons/medal_gold_add.png +0 -0
  575. data/resources/famfamfam/icons/medal_gold_delete.png +0 -0
  576. data/resources/famfamfam/icons/medal_silver_1.png +0 -0
  577. data/resources/famfamfam/icons/medal_silver_2.png +0 -0
  578. data/resources/famfamfam/icons/medal_silver_3.png +0 -0
  579. data/resources/famfamfam/icons/medal_silver_add.png +0 -0
  580. data/resources/famfamfam/icons/medal_silver_delete.png +0 -0
  581. data/resources/famfamfam/icons/money.png +0 -0
  582. data/resources/famfamfam/icons/money_add.png +0 -0
  583. data/resources/famfamfam/icons/money_delete.png +0 -0
  584. data/resources/famfamfam/icons/money_dollar.png +0 -0
  585. data/resources/famfamfam/icons/money_euro.png +0 -0
  586. data/resources/famfamfam/icons/money_pound.png +0 -0
  587. data/resources/famfamfam/icons/money_yen.png +0 -0
  588. data/resources/famfamfam/icons/monitor.png +0 -0
  589. data/resources/famfamfam/icons/monitor_add.png +0 -0
  590. data/resources/famfamfam/icons/monitor_delete.png +0 -0
  591. data/resources/famfamfam/icons/monitor_edit.png +0 -0
  592. data/resources/famfamfam/icons/monitor_error.png +0 -0
  593. data/resources/famfamfam/icons/monitor_go.png +0 -0
  594. data/resources/famfamfam/icons/monitor_lightning.png +0 -0
  595. data/resources/famfamfam/icons/monitor_link.png +0 -0
  596. data/resources/famfamfam/icons/mouse.png +0 -0
  597. data/resources/famfamfam/icons/mouse_add.png +0 -0
  598. data/resources/famfamfam/icons/mouse_delete.png +0 -0
  599. data/resources/famfamfam/icons/mouse_error.png +0 -0
  600. data/resources/famfamfam/icons/music.png +0 -0
  601. data/resources/famfamfam/icons/new.png +0 -0
  602. data/resources/famfamfam/icons/newspaper.png +0 -0
  603. data/resources/famfamfam/icons/newspaper_add.png +0 -0
  604. data/resources/famfamfam/icons/newspaper_delete.png +0 -0
  605. data/resources/famfamfam/icons/newspaper_go.png +0 -0
  606. data/resources/famfamfam/icons/newspaper_link.png +0 -0
  607. data/resources/famfamfam/icons/note.png +0 -0
  608. data/resources/famfamfam/icons/note_add.png +0 -0
  609. data/resources/famfamfam/icons/note_delete.png +0 -0
  610. data/resources/famfamfam/icons/note_edit.png +0 -0
  611. data/resources/famfamfam/icons/note_error.png +0 -0
  612. data/resources/famfamfam/icons/note_go.png +0 -0
  613. data/resources/famfamfam/icons/overlays.png +0 -0
  614. data/resources/famfamfam/icons/package.png +0 -0
  615. data/resources/famfamfam/icons/package_add.png +0 -0
  616. data/resources/famfamfam/icons/package_delete.png +0 -0
  617. data/resources/famfamfam/icons/package_go.png +0 -0
  618. data/resources/famfamfam/icons/package_green.png +0 -0
  619. data/resources/famfamfam/icons/package_link.png +0 -0
  620. data/resources/famfamfam/icons/page.png +0 -0
  621. data/resources/famfamfam/icons/page_add.png +0 -0
  622. data/resources/famfamfam/icons/page_attach.png +0 -0
  623. data/resources/famfamfam/icons/page_code.png +0 -0
  624. data/resources/famfamfam/icons/page_copy.png +0 -0
  625. data/resources/famfamfam/icons/page_delete.png +0 -0
  626. data/resources/famfamfam/icons/page_edit.png +0 -0
  627. data/resources/famfamfam/icons/page_error.png +0 -0
  628. data/resources/famfamfam/icons/page_excel.png +0 -0
  629. data/resources/famfamfam/icons/page_find.png +0 -0
  630. data/resources/famfamfam/icons/page_gear.png +0 -0
  631. data/resources/famfamfam/icons/page_go.png +0 -0
  632. data/resources/famfamfam/icons/page_green.png +0 -0
  633. data/resources/famfamfam/icons/page_key.png +0 -0
  634. data/resources/famfamfam/icons/page_lightning.png +0 -0
  635. data/resources/famfamfam/icons/page_link.png +0 -0
  636. data/resources/famfamfam/icons/page_paintbrush.png +0 -0
  637. data/resources/famfamfam/icons/page_paste.png +0 -0
  638. data/resources/famfamfam/icons/page_red.png +0 -0
  639. data/resources/famfamfam/icons/page_refresh.png +0 -0
  640. data/resources/famfamfam/icons/page_save.png +0 -0
  641. data/resources/famfamfam/icons/page_white.png +0 -0
  642. data/resources/famfamfam/icons/page_white_acrobat.png +0 -0
  643. data/resources/famfamfam/icons/page_white_actionscript.png +0 -0
  644. data/resources/famfamfam/icons/page_white_add.png +0 -0
  645. data/resources/famfamfam/icons/page_white_c.png +0 -0
  646. data/resources/famfamfam/icons/page_white_camera.png +0 -0
  647. data/resources/famfamfam/icons/page_white_cd.png +0 -0
  648. data/resources/famfamfam/icons/page_white_code.png +0 -0
  649. data/resources/famfamfam/icons/page_white_code_red.png +0 -0
  650. data/resources/famfamfam/icons/page_white_coldfusion.png +0 -0
  651. data/resources/famfamfam/icons/page_white_compressed.png +0 -0
  652. data/resources/famfamfam/icons/page_white_copy.png +0 -0
  653. data/resources/famfamfam/icons/page_white_cplusplus.png +0 -0
  654. data/resources/famfamfam/icons/page_white_csharp.png +0 -0
  655. data/resources/famfamfam/icons/page_white_cup.png +0 -0
  656. data/resources/famfamfam/icons/page_white_database.png +0 -0
  657. data/resources/famfamfam/icons/page_white_delete.png +0 -0
  658. data/resources/famfamfam/icons/page_white_dvd.png +0 -0
  659. data/resources/famfamfam/icons/page_white_edit.png +0 -0
  660. data/resources/famfamfam/icons/page_white_error.png +0 -0
  661. data/resources/famfamfam/icons/page_white_excel.png +0 -0
  662. data/resources/famfamfam/icons/page_white_find.png +0 -0
  663. data/resources/famfamfam/icons/page_white_flash.png +0 -0
  664. data/resources/famfamfam/icons/page_white_freehand.png +0 -0
  665. data/resources/famfamfam/icons/page_white_gear.png +0 -0
  666. data/resources/famfamfam/icons/page_white_get.png +0 -0
  667. data/resources/famfamfam/icons/page_white_go.png +0 -0
  668. data/resources/famfamfam/icons/page_white_h.png +0 -0
  669. data/resources/famfamfam/icons/page_white_horizontal.png +0 -0
  670. data/resources/famfamfam/icons/page_white_key.png +0 -0
  671. data/resources/famfamfam/icons/page_white_lightning.png +0 -0
  672. data/resources/famfamfam/icons/page_white_link.png +0 -0
  673. data/resources/famfamfam/icons/page_white_magnify.png +0 -0
  674. data/resources/famfamfam/icons/page_white_medal.png +0 -0
  675. data/resources/famfamfam/icons/page_white_office.png +0 -0
  676. data/resources/famfamfam/icons/page_white_paint.png +0 -0
  677. data/resources/famfamfam/icons/page_white_paintbrush.png +0 -0
  678. data/resources/famfamfam/icons/page_white_paste.png +0 -0
  679. data/resources/famfamfam/icons/page_white_php.png +0 -0
  680. data/resources/famfamfam/icons/page_white_picture.png +0 -0
  681. data/resources/famfamfam/icons/page_white_powerpoint.png +0 -0
  682. data/resources/famfamfam/icons/page_white_put.png +0 -0
  683. data/resources/famfamfam/icons/page_white_ruby.png +0 -0
  684. data/resources/famfamfam/icons/page_white_stack.png +0 -0
  685. data/resources/famfamfam/icons/page_white_star.png +0 -0
  686. data/resources/famfamfam/icons/page_white_swoosh.png +0 -0
  687. data/resources/famfamfam/icons/page_white_text.png +0 -0
  688. data/resources/famfamfam/icons/page_white_text_width.png +0 -0
  689. data/resources/famfamfam/icons/page_white_tux.png +0 -0
  690. data/resources/famfamfam/icons/page_white_vector.png +0 -0
  691. data/resources/famfamfam/icons/page_white_visualstudio.png +0 -0
  692. data/resources/famfamfam/icons/page_white_width.png +0 -0
  693. data/resources/famfamfam/icons/page_white_word.png +0 -0
  694. data/resources/famfamfam/icons/page_white_world.png +0 -0
  695. data/resources/famfamfam/icons/page_white_wrench.png +0 -0
  696. data/resources/famfamfam/icons/page_white_zip.png +0 -0
  697. data/resources/famfamfam/icons/page_word.png +0 -0
  698. data/resources/famfamfam/icons/page_world.png +0 -0
  699. data/resources/famfamfam/icons/paintbrush.png +0 -0
  700. data/resources/famfamfam/icons/paintcan.png +0 -0
  701. data/resources/famfamfam/icons/palette.png +0 -0
  702. data/resources/famfamfam/icons/paste_plain.png +0 -0
  703. data/resources/famfamfam/icons/paste_word.png +0 -0
  704. data/resources/famfamfam/icons/pencil.png +0 -0
  705. data/resources/famfamfam/icons/pencil_add.png +0 -0
  706. data/resources/famfamfam/icons/pencil_delete.png +0 -0
  707. data/resources/famfamfam/icons/pencil_go.png +0 -0
  708. data/resources/famfamfam/icons/phone.png +0 -0
  709. data/resources/famfamfam/icons/phone_add.png +0 -0
  710. data/resources/famfamfam/icons/phone_delete.png +0 -0
  711. data/resources/famfamfam/icons/phone_sound.png +0 -0
  712. data/resources/famfamfam/icons/photo.png +0 -0
  713. data/resources/famfamfam/icons/photo_add.png +0 -0
  714. data/resources/famfamfam/icons/photo_delete.png +0 -0
  715. data/resources/famfamfam/icons/photo_link.png +0 -0
  716. data/resources/famfamfam/icons/photos.png +0 -0
  717. data/resources/famfamfam/icons/picture.png +0 -0
  718. data/resources/famfamfam/icons/picture_add.png +0 -0
  719. data/resources/famfamfam/icons/picture_delete.png +0 -0
  720. data/resources/famfamfam/icons/picture_edit.png +0 -0
  721. data/resources/famfamfam/icons/picture_empty.png +0 -0
  722. data/resources/famfamfam/icons/picture_error.png +0 -0
  723. data/resources/famfamfam/icons/picture_go.png +0 -0
  724. data/resources/famfamfam/icons/picture_key.png +0 -0
  725. data/resources/famfamfam/icons/picture_link.png +0 -0
  726. data/resources/famfamfam/icons/picture_save.png +0 -0
  727. data/resources/famfamfam/icons/pictures.png +0 -0
  728. data/resources/famfamfam/icons/pilcrow.png +0 -0
  729. data/resources/famfamfam/icons/pill.png +0 -0
  730. data/resources/famfamfam/icons/pill_add.png +0 -0
  731. data/resources/famfamfam/icons/pill_delete.png +0 -0
  732. data/resources/famfamfam/icons/pill_go.png +0 -0
  733. data/resources/famfamfam/icons/plugin.png +0 -0
  734. data/resources/famfamfam/icons/plugin_add.png +0 -0
  735. data/resources/famfamfam/icons/plugin_delete.png +0 -0
  736. data/resources/famfamfam/icons/plugin_disabled.png +0 -0
  737. data/resources/famfamfam/icons/plugin_edit.png +0 -0
  738. data/resources/famfamfam/icons/plugin_error.png +0 -0
  739. data/resources/famfamfam/icons/plugin_go.png +0 -0
  740. data/resources/famfamfam/icons/plugin_link.png +0 -0
  741. data/resources/famfamfam/icons/printer.png +0 -0
  742. data/resources/famfamfam/icons/printer_add.png +0 -0
  743. data/resources/famfamfam/icons/printer_delete.png +0 -0
  744. data/resources/famfamfam/icons/printer_empty.png +0 -0
  745. data/resources/famfamfam/icons/printer_error.png +0 -0
  746. data/resources/famfamfam/icons/rainbow.png +0 -0
  747. data/resources/famfamfam/icons/report.png +0 -0
  748. data/resources/famfamfam/icons/report_add.png +0 -0
  749. data/resources/famfamfam/icons/report_delete.png +0 -0
  750. data/resources/famfamfam/icons/report_disk.png +0 -0
  751. data/resources/famfamfam/icons/report_edit.png +0 -0
  752. data/resources/famfamfam/icons/report_go.png +0 -0
  753. data/resources/famfamfam/icons/report_key.png +0 -0
  754. data/resources/famfamfam/icons/report_link.png +0 -0
  755. data/resources/famfamfam/icons/report_magnify.png +0 -0
  756. data/resources/famfamfam/icons/report_picture.png +0 -0
  757. data/resources/famfamfam/icons/report_user.png +0 -0
  758. data/resources/famfamfam/icons/report_word.png +0 -0
  759. data/resources/famfamfam/icons/resultset_first.png +0 -0
  760. data/resources/famfamfam/icons/resultset_last.png +0 -0
  761. data/resources/famfamfam/icons/resultset_next.png +0 -0
  762. data/resources/famfamfam/icons/resultset_previous.png +0 -0
  763. data/resources/famfamfam/icons/rosette.png +0 -0
  764. data/resources/famfamfam/icons/rss.png +0 -0
  765. data/resources/famfamfam/icons/rss_add.png +0 -0
  766. data/resources/famfamfam/icons/rss_delete.png +0 -0
  767. data/resources/famfamfam/icons/rss_go.png +0 -0
  768. data/resources/famfamfam/icons/rss_valid.png +0 -0
  769. data/resources/famfamfam/icons/ruby.png +0 -0
  770. data/resources/famfamfam/icons/ruby_add.png +0 -0
  771. data/resources/famfamfam/icons/ruby_delete.png +0 -0
  772. data/resources/famfamfam/icons/ruby_gear.png +0 -0
  773. data/resources/famfamfam/icons/ruby_get.png +0 -0
  774. data/resources/famfamfam/icons/ruby_go.png +0 -0
  775. data/resources/famfamfam/icons/ruby_key.png +0 -0
  776. data/resources/famfamfam/icons/ruby_link.png +0 -0
  777. data/resources/famfamfam/icons/ruby_put.png +0 -0
  778. data/resources/famfamfam/icons/script.png +0 -0
  779. data/resources/famfamfam/icons/script_add.png +0 -0
  780. data/resources/famfamfam/icons/script_code.png +0 -0
  781. data/resources/famfamfam/icons/script_code_red.png +0 -0
  782. data/resources/famfamfam/icons/script_delete.png +0 -0
  783. data/resources/famfamfam/icons/script_edit.png +0 -0
  784. data/resources/famfamfam/icons/script_error.png +0 -0
  785. data/resources/famfamfam/icons/script_gear.png +0 -0
  786. data/resources/famfamfam/icons/script_go.png +0 -0
  787. data/resources/famfamfam/icons/script_key.png +0 -0
  788. data/resources/famfamfam/icons/script_lightning.png +0 -0
  789. data/resources/famfamfam/icons/script_link.png +0 -0
  790. data/resources/famfamfam/icons/script_palette.png +0 -0
  791. data/resources/famfamfam/icons/script_save.png +0 -0
  792. data/resources/famfamfam/icons/server.png +0 -0
  793. data/resources/famfamfam/icons/server_add.png +0 -0
  794. data/resources/famfamfam/icons/server_chart.png +0 -0
  795. data/resources/famfamfam/icons/server_compressed.png +0 -0
  796. data/resources/famfamfam/icons/server_connect.png +0 -0
  797. data/resources/famfamfam/icons/server_database.png +0 -0
  798. data/resources/famfamfam/icons/server_delete.png +0 -0
  799. data/resources/famfamfam/icons/server_edit.png +0 -0
  800. data/resources/famfamfam/icons/server_error.png +0 -0
  801. data/resources/famfamfam/icons/server_go.png +0 -0
  802. data/resources/famfamfam/icons/server_key.png +0 -0
  803. data/resources/famfamfam/icons/server_lightning.png +0 -0
  804. data/resources/famfamfam/icons/server_link.png +0 -0
  805. data/resources/famfamfam/icons/server_uncompressed.png +0 -0
  806. data/resources/famfamfam/icons/shading.png +0 -0
  807. data/resources/famfamfam/icons/shape_align_bottom.png +0 -0
  808. data/resources/famfamfam/icons/shape_align_center.png +0 -0
  809. data/resources/famfamfam/icons/shape_align_left.png +0 -0
  810. data/resources/famfamfam/icons/shape_align_middle.png +0 -0
  811. data/resources/famfamfam/icons/shape_align_right.png +0 -0
  812. data/resources/famfamfam/icons/shape_align_top.png +0 -0
  813. data/resources/famfamfam/icons/shape_flip_horizontal.png +0 -0
  814. data/resources/famfamfam/icons/shape_flip_vertical.png +0 -0
  815. data/resources/famfamfam/icons/shape_group.png +0 -0
  816. data/resources/famfamfam/icons/shape_handles.png +0 -0
  817. data/resources/famfamfam/icons/shape_move_back.png +0 -0
  818. data/resources/famfamfam/icons/shape_move_backwards.png +0 -0
  819. data/resources/famfamfam/icons/shape_move_forwards.png +0 -0
  820. data/resources/famfamfam/icons/shape_move_front.png +0 -0
  821. data/resources/famfamfam/icons/shape_rotate_anticlockwise.png +0 -0
  822. data/resources/famfamfam/icons/shape_rotate_clockwise.png +0 -0
  823. data/resources/famfamfam/icons/shape_square.png +0 -0
  824. data/resources/famfamfam/icons/shape_square_add.png +0 -0
  825. data/resources/famfamfam/icons/shape_square_delete.png +0 -0
  826. data/resources/famfamfam/icons/shape_square_edit.png +0 -0
  827. data/resources/famfamfam/icons/shape_square_error.png +0 -0
  828. data/resources/famfamfam/icons/shape_square_go.png +0 -0
  829. data/resources/famfamfam/icons/shape_square_key.png +0 -0
  830. data/resources/famfamfam/icons/shape_square_link.png +0 -0
  831. data/resources/famfamfam/icons/shape_ungroup.png +0 -0
  832. data/resources/famfamfam/icons/shield.png +0 -0
  833. data/resources/famfamfam/icons/shield_add.png +0 -0
  834. data/resources/famfamfam/icons/shield_delete.png +0 -0
  835. data/resources/famfamfam/icons/shield_go.png +0 -0
  836. data/resources/famfamfam/icons/sitemap.png +0 -0
  837. data/resources/famfamfam/icons/sitemap_color.png +0 -0
  838. data/resources/famfamfam/icons/sound.png +0 -0
  839. data/resources/famfamfam/icons/sound_add.png +0 -0
  840. data/resources/famfamfam/icons/sound_delete.png +0 -0
  841. data/resources/famfamfam/icons/sound_low.png +0 -0
  842. data/resources/famfamfam/icons/sound_mute.png +0 -0
  843. data/resources/famfamfam/icons/sound_none.png +0 -0
  844. data/resources/famfamfam/icons/spellcheck.png +0 -0
  845. data/resources/famfamfam/icons/sport_8ball.png +0 -0
  846. data/resources/famfamfam/icons/sport_basketball.png +0 -0
  847. data/resources/famfamfam/icons/sport_football.png +0 -0
  848. data/resources/famfamfam/icons/sport_golf.png +0 -0
  849. data/resources/famfamfam/icons/sport_raquet.png +0 -0
  850. data/resources/famfamfam/icons/sport_shuttlecock.png +0 -0
  851. data/resources/famfamfam/icons/sport_soccer.png +0 -0
  852. data/resources/famfamfam/icons/sport_tennis.png +0 -0
  853. data/resources/famfamfam/icons/star.png +0 -0
  854. data/resources/famfamfam/icons/status_away.png +0 -0
  855. data/resources/famfamfam/icons/status_busy.png +0 -0
  856. data/resources/famfamfam/icons/status_offline.png +0 -0
  857. data/resources/famfamfam/icons/status_online.png +0 -0
  858. data/resources/famfamfam/icons/stop.png +0 -0
  859. data/resources/famfamfam/icons/style.png +0 -0
  860. data/resources/famfamfam/icons/style_add.png +0 -0
  861. data/resources/famfamfam/icons/style_delete.png +0 -0
  862. data/resources/famfamfam/icons/style_edit.png +0 -0
  863. data/resources/famfamfam/icons/style_go.png +0 -0
  864. data/resources/famfamfam/icons/sum.png +0 -0
  865. data/resources/famfamfam/icons/tab.png +0 -0
  866. data/resources/famfamfam/icons/tab_add.png +0 -0
  867. data/resources/famfamfam/icons/tab_delete.png +0 -0
  868. data/resources/famfamfam/icons/tab_edit.png +0 -0
  869. data/resources/famfamfam/icons/tab_go.png +0 -0
  870. data/resources/famfamfam/icons/table.png +0 -0
  871. data/resources/famfamfam/icons/table_add.png +0 -0
  872. data/resources/famfamfam/icons/table_delete.png +0 -0
  873. data/resources/famfamfam/icons/table_edit.png +0 -0
  874. data/resources/famfamfam/icons/table_error.png +0 -0
  875. data/resources/famfamfam/icons/table_gear.png +0 -0
  876. data/resources/famfamfam/icons/table_go.png +0 -0
  877. data/resources/famfamfam/icons/table_key.png +0 -0
  878. data/resources/famfamfam/icons/table_lightning.png +0 -0
  879. data/resources/famfamfam/icons/table_link.png +0 -0
  880. data/resources/famfamfam/icons/table_multiple.png +0 -0
  881. data/resources/famfamfam/icons/table_refresh.png +0 -0
  882. data/resources/famfamfam/icons/table_relationship.png +0 -0
  883. data/resources/famfamfam/icons/table_row_delete.png +0 -0
  884. data/resources/famfamfam/icons/table_row_insert.png +0 -0
  885. data/resources/famfamfam/icons/table_save.png +0 -0
  886. data/resources/famfamfam/icons/table_sort.png +0 -0
  887. data/resources/famfamfam/icons/tag.png +0 -0
  888. data/resources/famfamfam/icons/tag_blue.png +0 -0
  889. data/resources/famfamfam/icons/tag_blue_add.png +0 -0
  890. data/resources/famfamfam/icons/tag_blue_delete.png +0 -0
  891. data/resources/famfamfam/icons/tag_blue_edit.png +0 -0
  892. data/resources/famfamfam/icons/tag_green.png +0 -0
  893. data/resources/famfamfam/icons/tag_orange.png +0 -0
  894. data/resources/famfamfam/icons/tag_pink.png +0 -0
  895. data/resources/famfamfam/icons/tag_purple.png +0 -0
  896. data/resources/famfamfam/icons/tag_red.png +0 -0
  897. data/resources/famfamfam/icons/tag_yellow.png +0 -0
  898. data/resources/famfamfam/icons/telephone.png +0 -0
  899. data/resources/famfamfam/icons/telephone_add.png +0 -0
  900. data/resources/famfamfam/icons/telephone_delete.png +0 -0
  901. data/resources/famfamfam/icons/telephone_edit.png +0 -0
  902. data/resources/famfamfam/icons/telephone_error.png +0 -0
  903. data/resources/famfamfam/icons/telephone_go.png +0 -0
  904. data/resources/famfamfam/icons/telephone_key.png +0 -0
  905. data/resources/famfamfam/icons/telephone_link.png +0 -0
  906. data/resources/famfamfam/icons/television.png +0 -0
  907. data/resources/famfamfam/icons/television_add.png +0 -0
  908. data/resources/famfamfam/icons/television_delete.png +0 -0
  909. data/resources/famfamfam/icons/text_align_center.png +0 -0
  910. data/resources/famfamfam/icons/text_align_justify.png +0 -0
  911. data/resources/famfamfam/icons/text_align_left.png +0 -0
  912. data/resources/famfamfam/icons/text_align_right.png +0 -0
  913. data/resources/famfamfam/icons/text_allcaps.png +0 -0
  914. data/resources/famfamfam/icons/text_bold.png +0 -0
  915. data/resources/famfamfam/icons/text_columns.png +0 -0
  916. data/resources/famfamfam/icons/text_dropcaps.png +0 -0
  917. data/resources/famfamfam/icons/text_heading_1.png +0 -0
  918. data/resources/famfamfam/icons/text_heading_2.png +0 -0
  919. data/resources/famfamfam/icons/text_heading_3.png +0 -0
  920. data/resources/famfamfam/icons/text_heading_4.png +0 -0
  921. data/resources/famfamfam/icons/text_heading_5.png +0 -0
  922. data/resources/famfamfam/icons/text_heading_6.png +0 -0
  923. data/resources/famfamfam/icons/text_horizontalrule.png +0 -0
  924. data/resources/famfamfam/icons/text_indent.png +0 -0
  925. data/resources/famfamfam/icons/text_indent_remove.png +0 -0
  926. data/resources/famfamfam/icons/text_italic.png +0 -0
  927. data/resources/famfamfam/icons/text_kerning.png +0 -0
  928. data/resources/famfamfam/icons/text_letter_omega.png +0 -0
  929. data/resources/famfamfam/icons/text_letterspacing.png +0 -0
  930. data/resources/famfamfam/icons/text_linespacing.png +0 -0
  931. data/resources/famfamfam/icons/text_list_bullets.png +0 -0
  932. data/resources/famfamfam/icons/text_list_numbers.png +0 -0
  933. data/resources/famfamfam/icons/text_lowercase.png +0 -0
  934. data/resources/famfamfam/icons/text_padding_bottom.png +0 -0
  935. data/resources/famfamfam/icons/text_padding_left.png +0 -0
  936. data/resources/famfamfam/icons/text_padding_right.png +0 -0
  937. data/resources/famfamfam/icons/text_padding_top.png +0 -0
  938. data/resources/famfamfam/icons/text_replace.png +0 -0
  939. data/resources/famfamfam/icons/text_signature.png +0 -0
  940. data/resources/famfamfam/icons/text_smallcaps.png +0 -0
  941. data/resources/famfamfam/icons/text_strikethrough.png +0 -0
  942. data/resources/famfamfam/icons/text_subscript.png +0 -0
  943. data/resources/famfamfam/icons/text_superscript.png +0 -0
  944. data/resources/famfamfam/icons/text_underline.png +0 -0
  945. data/resources/famfamfam/icons/text_uppercase.png +0 -0
  946. data/resources/famfamfam/icons/textfield.png +0 -0
  947. data/resources/famfamfam/icons/textfield_add.png +0 -0
  948. data/resources/famfamfam/icons/textfield_delete.png +0 -0
  949. data/resources/famfamfam/icons/textfield_key.png +0 -0
  950. data/resources/famfamfam/icons/textfield_rename.png +0 -0
  951. data/resources/famfamfam/icons/thumb_down.png +0 -0
  952. data/resources/famfamfam/icons/thumb_up.png +0 -0
  953. data/resources/famfamfam/icons/tick.png +0 -0
  954. data/resources/famfamfam/icons/time.png +0 -0
  955. data/resources/famfamfam/icons/time_add.png +0 -0
  956. data/resources/famfamfam/icons/time_delete.png +0 -0
  957. data/resources/famfamfam/icons/time_go.png +0 -0
  958. data/resources/famfamfam/icons/timeline_marker.png +0 -0
  959. data/resources/famfamfam/icons/transmit.png +0 -0
  960. data/resources/famfamfam/icons/transmit_add.png +0 -0
  961. data/resources/famfamfam/icons/transmit_blue.png +0 -0
  962. data/resources/famfamfam/icons/transmit_delete.png +0 -0
  963. data/resources/famfamfam/icons/transmit_edit.png +0 -0
  964. data/resources/famfamfam/icons/transmit_error.png +0 -0
  965. data/resources/famfamfam/icons/transmit_go.png +0 -0
  966. data/resources/famfamfam/icons/tux.png +0 -0
  967. data/resources/famfamfam/icons/user.png +0 -0
  968. data/resources/famfamfam/icons/user_add.png +0 -0
  969. data/resources/famfamfam/icons/user_comment.png +0 -0
  970. data/resources/famfamfam/icons/user_delete.png +0 -0
  971. data/resources/famfamfam/icons/user_edit.png +0 -0
  972. data/resources/famfamfam/icons/user_female.png +0 -0
  973. data/resources/famfamfam/icons/user_go.png +0 -0
  974. data/resources/famfamfam/icons/user_gray.png +0 -0
  975. data/resources/famfamfam/icons/user_green.png +0 -0
  976. data/resources/famfamfam/icons/user_orange.png +0 -0
  977. data/resources/famfamfam/icons/user_red.png +0 -0
  978. data/resources/famfamfam/icons/user_suit.png +0 -0
  979. data/resources/famfamfam/icons/vcard.png +0 -0
  980. data/resources/famfamfam/icons/vcard_add.png +0 -0
  981. data/resources/famfamfam/icons/vcard_delete.png +0 -0
  982. data/resources/famfamfam/icons/vcard_edit.png +0 -0
  983. data/resources/famfamfam/icons/vector.png +0 -0
  984. data/resources/famfamfam/icons/vector_add.png +0 -0
  985. data/resources/famfamfam/icons/vector_delete.png +0 -0
  986. data/resources/famfamfam/icons/wand.png +0 -0
  987. data/resources/famfamfam/icons/weather_clouds.png +0 -0
  988. data/resources/famfamfam/icons/weather_cloudy.png +0 -0
  989. data/resources/famfamfam/icons/weather_lightning.png +0 -0
  990. data/resources/famfamfam/icons/weather_rain.png +0 -0
  991. data/resources/famfamfam/icons/weather_snow.png +0 -0
  992. data/resources/famfamfam/icons/weather_sun.png +0 -0
  993. data/resources/famfamfam/icons/webcam.png +0 -0
  994. data/resources/famfamfam/icons/webcam_add.png +0 -0
  995. data/resources/famfamfam/icons/webcam_delete.png +0 -0
  996. data/resources/famfamfam/icons/webcam_error.png +0 -0
  997. data/resources/famfamfam/icons/world.png +0 -0
  998. data/resources/famfamfam/icons/world_add.png +0 -0
  999. data/resources/famfamfam/icons/world_delete.png +0 -0
  1000. data/resources/famfamfam/icons/world_edit.png +0 -0
  1001. data/resources/famfamfam/icons/world_go.png +0 -0
  1002. data/resources/famfamfam/icons/world_link.png +0 -0
  1003. data/resources/famfamfam/icons/wrench.png +0 -0
  1004. data/resources/famfamfam/icons/wrench_orange.png +0 -0
  1005. data/resources/famfamfam/icons/xhtml.png +0 -0
  1006. data/resources/famfamfam/icons/xhtml_add.png +0 -0
  1007. data/resources/famfamfam/icons/xhtml_delete.png +0 -0
  1008. data/resources/famfamfam/icons/xhtml_go.png +0 -0
  1009. data/resources/famfamfam/icons/xhtml_valid.png +0 -0
  1010. data/resources/famfamfam/icons/zoom.png +0 -0
  1011. data/resources/famfamfam/icons/zoom_in.png +0 -0
  1012. data/resources/famfamfam/icons/zoom_out.png +0 -0
  1013. data/resources/famfamfam/readme.html +1495 -0
  1014. data/resources/famfamfam/readme.txt +22 -0
  1015. data/resources/listing.rhtml +68 -0
  1016. data/spec/dir_handler_spec.rb +13 -0
  1017. data/spec/error_handler_spec.rb +13 -0
  1018. data/spec/server_spec.rb +53 -0
  1019. data/spec/spec_helper.rb +8 -0
  1020. metadata +1102 -0
@@ -0,0 +1,27 @@
1
+ require 'heel'
2
+ require 'erb'
3
+
4
+ module Heel
5
+
6
+ class ErrorHandler < ::Mongrel::HttpHandler
7
+
8
+ attr_reader :template
9
+
10
+ def initialize(options = {})
11
+ @template = ::ERB.new File.read(File.join(APP_RESOURCE_DIR,"error.rhtml"))
12
+ end
13
+
14
+ def process(request,response)
15
+ status = response.status
16
+ if status != 200 then
17
+ message = ::Mongrel::HTTP_STATUS_CODES[status]
18
+ base_uri = ::Mongrel::HttpRequest.unescape(request.params[Mongrel::Const::REQUEST_URI])
19
+
20
+ response.start(status) do |head,out|
21
+ head['Content-Type'] = 'text/html'
22
+ out.write(template.result(binding))
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,49 @@
1
+ require 'rubygems'
2
+ require 'heel/specification'
3
+ require 'heel/version'
4
+ require 'rake'
5
+
6
+ module Heel
7
+ SPEC = Heel::Specification.new do |spec|
8
+ spec.name = "heel"
9
+ spec.version = Heel::VERSION
10
+ spec.rubyforge_project = "copiousfreetime"
11
+ spec.author = "Jeremy Hinegardner"
12
+ spec.email = "jeremy@hinegardner.org"
13
+ spec.homepage = "http://copiousfreetime.rubyforge.org/heel/"
14
+
15
+ spec.summary = "A mongrel based static file webserver."
16
+ spec.description = <<-DESC
17
+ Heel is a mongrel based webserver to quickly and easily
18
+ serve up the contents of a directory as webpages.
19
+ DESC
20
+
21
+ spec.extra_rdoc_files = FileList["CHANGES", "LICENSE", "README"]
22
+ spec.has_rdoc = true
23
+ spec.rdoc_main = "README"
24
+ spec.rdoc_options = [ "--line-numbers" , "--inline-source" ]
25
+
26
+ spec.test_files = FileList["spec/**/*.rb"]
27
+ spec.executable = spec.name
28
+ spec.files = spec.test_files + spec.extra_rdoc_files +
29
+ FileList["lib/**/*.rb", "resources/**/*"]
30
+
31
+ spec.add_dependency("mongrel", ">= 1.0.1")
32
+ spec.add_dependency("launchy", ">= 0.1.2")
33
+ spec.add_dependency("mime-types", ">= 1.15")
34
+
35
+ spec.required_ruby_version = ">= 1.8.5"
36
+
37
+ spec.platform = Gem::Platform::RUBY
38
+
39
+ spec.remote_user = "jjh"
40
+ spec.local_rdoc_dir = "doc/rdoc"
41
+ spec.remote_rdoc_dir = ""
42
+ spec.local_coverage_dir = "doc/coverage"
43
+
44
+ spec.remote_site_dir = "#{spec.name}/"
45
+
46
+ end
47
+ end
48
+
49
+
@@ -0,0 +1,216 @@
1
+ require 'heel'
2
+ require 'ostruct'
3
+ require 'daemons/daemonize'
4
+ require 'launchy'
5
+ require 'tmpdir'
6
+ require 'fileutils'
7
+
8
+ module Heel
9
+ class Server
10
+
11
+ attr_accessor :options
12
+ attr_accessor :parsed_options
13
+
14
+ attr_reader :stdout
15
+ attr_reader :stderr
16
+ attr_reader :stdin
17
+
18
+
19
+ class << self
20
+ # thank you Jamis - from Capistrano
21
+ def home_directory # :nodoc:
22
+ ENV["HOME"] ||
23
+ (ENV["HOMEPATH"] && "#{ENV["HOMEDRIVE"]}#{ENV["HOMEPATH"]}") ||
24
+ "/"
25
+ end
26
+ end
27
+
28
+ DEFAULT_DIRECTORY = File.join(home_directory,".heel")
29
+ DEFAULT_PID_FILE = File.join(DEFAULT_DIRECTORY,"heel.pid")
30
+ DEFAULT_LOG_FILE = File.join(DEFAULT_DIRECTORY,"heel.log")
31
+
32
+ def initialize(argv = [])
33
+ argv ||= []
34
+
35
+ set_io
36
+
37
+ @options = default_options
38
+ @parsed_options = ::OpenStruct.new
39
+ @parser = option_parser
40
+ @error_message = nil
41
+
42
+ begin
43
+ @parser.parse!(argv)
44
+ rescue ::OptionParser::ParseError => pe
45
+ msg = ["#{@parser.program_name}: #{pe}",
46
+ "Try `#{@parser.program_name} --help` for more information"]
47
+ @error_message = msg.join("\n")
48
+ end
49
+ end
50
+
51
+ def default_options
52
+ if @default_options.nil? then
53
+ @default_options = ::OpenStruct.new
54
+ @default_options.show_version = false
55
+ @default_options.show_help = false
56
+ @default_options.address = "0.0.0.0"
57
+ @default_options.port = 4331
58
+ @default_options.document_root = Dir.pwd
59
+ @default_options.daemonize = false
60
+ @default_options.kill = false
61
+ end
62
+ return @default_options
63
+ end
64
+
65
+ def option_parser
66
+ OptionParser.new do |op|
67
+ op.separator ""
68
+
69
+ op.on("-a", "--address ADDRESS", "Address to bind to",
70
+ "(default: #{default_options.address})") do |add|
71
+ @parsed_options.address = add
72
+ end
73
+
74
+ op.on("-d", "--daemonize", "Run daemonized in the background") do
75
+ @parsed_options.daemonize = true
76
+ end
77
+
78
+ op.on("-h", "--help", "Display this text") do
79
+ @parsed_options.show_help = true
80
+ end
81
+
82
+ op.on("-k", "--kill", "Kill an existing daemonized heel process") do
83
+ @parsed_options.kill = true
84
+ end
85
+
86
+ op.on("-p", "--port PORT", Integer, "Port to bind to",
87
+ "(default: #{default_options.port})") do |port|
88
+ @parsed_options.port = port
89
+ end
90
+
91
+ op.on("-r","--root ROOT",
92
+ "Set the document root"," (default: #{default_options.document_root})") do |document_root|
93
+ @parsed_options.document_root = File.expand_path(document_root)
94
+ raise ::OptionParser::ParseError, "#{@parsed_options.document_root} is not a valid directory" if not File.directory?(@parsed_options.document_root)
95
+ end
96
+
97
+ op.on("-v", "--version", "Show version") do
98
+ @parsed_options.show_version = true
99
+ end
100
+ end
101
+ end
102
+
103
+ def merge_options
104
+ options = default_options.marshal_dump
105
+ @parsed_options.marshal_dump.each_pair do |key,value|
106
+ options[key] = value
107
+ end
108
+
109
+ @options = OpenStruct.new(options)
110
+ end
111
+
112
+ # set the IO objects in a single method call. This is really only for testing
113
+ # instrumentation
114
+ def set_io(stdin = $stdin, stdout = $stdout ,setderr = $stderr)
115
+ @stdin = stdin
116
+ @stdout = stdout
117
+ @stderr = stderr
118
+ end
119
+
120
+ # if Version or Help options are set, then output the appropriate information instead of
121
+ # running the server.
122
+ def error_version_help_kill
123
+ if @parsed_options.show_version then
124
+ @stdout.puts "#{@parser.program_name}: version #{Heel::VERSION}"
125
+ exit 0
126
+ elsif @parsed_options.show_help then
127
+ @stdout.puts @parser.to_s
128
+ exit 0
129
+ elsif @error_message then
130
+ @stdout.puts @error_message
131
+ exit 1
132
+ elsif @parsed_options.kill then
133
+ kill_existing_proc
134
+ end
135
+ end
136
+
137
+ # kill an already running background heel process
138
+ def kill_existing_proc
139
+ if File.exists?(DEFAULT_PID_FILE) then
140
+ begin
141
+ pid = open(DEFAULT_PID_FILE).read.to_i
142
+ @stdout.puts "Sending TERM to process #{pid}"
143
+ Process.kill("TERM", pid)
144
+ rescue Errno::ESRCH
145
+ @stdout.puts "Process does not exist. Removing stale pid file."
146
+ File.unlink(DEFAULT_PID_FILE)
147
+ end
148
+ else
149
+ @stdout.puts "No pid file exists, no process to kill"
150
+ end
151
+ @stdout.puts "Done."
152
+ exit 0
153
+ end
154
+
155
+ # setup the directory that heel will use as the location to run from, where its logs will
156
+ # be stored and its PID file if backgrounded.
157
+ def setup_heel_dir
158
+ if not File.exists?(DEFAULT_DIRECTORY) then
159
+ FileUtils.mkdir_p(DEFAULT_DIRECTORY)
160
+ @stdout.puts "Created #{DEFAULT_DIRECTORY}"
161
+ @stdout.puts "PID file #{DEFAULT_PID_FILE} is stored here"
162
+ @stdout.puts "along with the log #{DEFAULT_LOG_FILE}"
163
+ end
164
+ end
165
+
166
+ # run the heel server with the current options.
167
+ def run
168
+
169
+ error_version_help_kill
170
+ merge_options
171
+ setup_heel_dir
172
+
173
+ document_root = options.document_root
174
+ background_me = options.daemonize
175
+ stats = ::Mongrel::StatisticsFilter.new(:sample_rate => 1)
176
+ config = ::Mongrel::Configurator.new :host => options.address, :port => options.port, :pid_file => DEFAULT_PID_FILE do
177
+ if background_me then
178
+ if File.exists?(DEFAULT_PID_FILE) then
179
+ log "ERROR: PID File #{DEFAULT_PID_FILE} already exists. Heel may already be running."
180
+ log "ERROR: Check the Log file #{DEFAULT_LOG_FILE}"
181
+ log "ERROR: Heel will not start until the .pid file is cleared."
182
+ exit 1
183
+ end
184
+ daemonize({:cwd => DEFAULT_DIRECTORY, :log_file => DEFAULT_LOG_FILE})
185
+ end
186
+
187
+ listener do
188
+ uri "/", :handler => stats
189
+ uri "/", :handler => Heel::DirHandler.new({:document_root => document_root})
190
+ uri "/", :handler => Heel::ErrorHandler.new
191
+ uri "/icons", :handler => Heel::DirHandler.new({ :document_root =>
192
+ File.join(APP_RESOURCE_DIR, "famfamfam", "icons")})
193
+ uri "/status", :handler => ::Mongrel::StatusHandler.new(:stats_filter => stats)
194
+ end
195
+
196
+ setup_signals
197
+ end
198
+
199
+ config.run
200
+ config.log "heel running at http://#{options.address}:#{options.port} with document root #{options.document_root}"
201
+
202
+ if background_me then
203
+ config.write_pid_file
204
+ else
205
+ config.log "Use Ctrl-C to stop."
206
+ end
207
+
208
+ config.log "Launching your browser..."
209
+ ::Launchy.do_magic("http://#{options.address}:#{options.port}/")
210
+
211
+ config.join
212
+
213
+ end
214
+
215
+ end
216
+ end
@@ -0,0 +1,128 @@
1
+ require 'rubygems'
2
+ require 'rubygems/specification'
3
+ require 'rake'
4
+
5
+ module Heel
6
+ # Add some additional items to Gem::Specification
7
+ # A Heel::Specification adds additional pieces of information the
8
+ # typical gem specification
9
+ class Specification
10
+
11
+ RUBYFORGE_ROOT = "/var/www/gforge-projects/"
12
+
13
+ # user that accesses remote site
14
+ attr_accessor :remote_user
15
+
16
+ # remote host, default 'rubyforge.org'
17
+ attr_accessor :remote_host
18
+
19
+ # name the rdoc main
20
+ attr_accessor :rdoc_main
21
+
22
+ # local directory in development holding the generated rdoc
23
+ # default 'doc'
24
+ attr_accessor :local_rdoc_dir
25
+
26
+ # remote directory for storing rdoc, default 'doc'
27
+ attr_accessor :remote_rdoc_dir
28
+
29
+ # local directory for coverage report
30
+ attr_accessor :local_coverage_dir
31
+
32
+ # remote directory for storing coverage reports
33
+ # This defaults to 'coverage'
34
+ attr_accessor :remote_coverage_dir
35
+
36
+ # local directory for generated website, default +site/public+
37
+ attr_accessor :local_site_dir
38
+
39
+ # remote directory relative to +remote_root+ for the website.
40
+ # website.
41
+ attr_accessor :remote_site_dir
42
+
43
+ # is a .tgz to be created?, default 'true'
44
+ attr_accessor :need_tar
45
+
46
+ # is a .zip to be created, default 'true'
47
+ attr_accessor :need_zip
48
+
49
+
50
+ def initialize
51
+ @remote_user = nil
52
+ @remote_host = "rubyforge.org"
53
+
54
+ @rdoc_main = "README"
55
+ @local_rdoc_dir = "doc"
56
+ @remote_rdoc_dir = "doc"
57
+ @local_coverage_dir = "coverage"
58
+ @remote_coverage_dir = "coverage"
59
+ @local_site_dir = "site/public"
60
+ @remote_site_dir = "."
61
+
62
+ @need_tar = true
63
+ @need_zip = true
64
+
65
+ @spec = Gem::Specification.new
66
+
67
+ yield self if block_given?
68
+
69
+ # update rdoc options to take care of the rdoc_main if it is
70
+ # there, and add a default title if one is not given
71
+ if not @spec.rdoc_options.include?("--main") then
72
+ @spec.rdoc_options.concat(["--main", rdoc_main])
73
+ end
74
+
75
+ if not @spec.rdoc_options.include?("--title") then
76
+ @spec.rdoc_options.concat(["--title","'#{name} -- #{summary}'"])
77
+ end
78
+ end
79
+
80
+ # if this gets set then it overwrites what would be the
81
+ # rubyforge default. If rubyforge project is not set then use
82
+ # name. If rubyforge project and name are set, but they are
83
+ # different then assume that name is a subproject of the
84
+ # rubyforge project
85
+ def remote_root
86
+ if rubyforge_project.nil? or
87
+ rubyforge_project == name then
88
+ return RUBYFORGE_ROOT + "#{name}/"
89
+ else
90
+ return RUBYFORGE_ROOT + "#{rubyforge_project}/#{name}/"
91
+ end
92
+ end
93
+
94
+ # rdoc files is the same as what would be generated during gem
95
+ # installation. That is, everything in the require paths plus
96
+ # the extra_rdoc_files
97
+ #
98
+ def rdoc_files
99
+ flist = extra_rdoc_files.dup
100
+ @spec.require_paths.each do |rp|
101
+ flist << FileList["#{rp}/**/*.rb"]
102
+ end
103
+ flist.flatten.uniq
104
+ end
105
+
106
+ # calculate the remote directories
107
+ def remote_root_location
108
+ "#{remote_user}@#{remote_host}:#{remote_root}"
109
+ end
110
+
111
+ def remote_rdoc_location
112
+ remote_root_location + @remote_rdoc_dir
113
+ end
114
+
115
+ def remote_coverage_location
116
+ remote_root_loation + @remote_coverage_dir
117
+ end
118
+
119
+ def remote_site_location
120
+ remote_root_location + @remote_site_dir
121
+ end
122
+
123
+ # we delegate any other calls to spec
124
+ def method_missing(method_id,*params,&block)
125
+ @spec.send method_id, *params, &block
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,21 @@
1
+ require 'heel'
2
+
3
+ module Heel
4
+ class Version
5
+ MAJOR = 0
6
+ MINOR = 2
7
+ BUILD = 0
8
+
9
+ class << self
10
+ def to_a
11
+ [MAJOR, MINOR, BUILD]
12
+ end
13
+
14
+ def to_s
15
+ to_a.join(".")
16
+ end
17
+ end
18
+ end
19
+ VERSION = Version.to_s
20
+ end
21
+
@@ -0,0 +1,68 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4
+ <head>
5
+ <title>Error <%= status %> </title>
6
+ <style type="text/css">
7
+ body { font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #e0e0e0;}
8
+ div.wrap {
9
+ background: transparent;
10
+ text-align: left;
11
+ width: 400px;
12
+ margin-top: 100px;
13
+ margin-left: auto;
14
+ margin-right: auto;
15
+ }
16
+ div.box {
17
+ border-left: 1px solid #333;
18
+ border-right: 1px solid #333;
19
+ background: #FFF;
20
+ display: block;
21
+ }
22
+ img { padding-right: 20px;}
23
+ h1 { display: inline; font-weight: bold; }
24
+ h2 { display: inline; font-weight: bold; padding-left: 25px;text-align: center;}
25
+ div.header { font-size: x-large; }
26
+ div.content { font-size: x-large; border: 0; padding: 10px 25px 10px 25px;}
27
+ div.footer { text-align: right; width: 400px; }
28
+
29
+ .curved { background: transparent;}
30
+ .curved .c1, .curved .c2, .curved .c3, .curved .c4 {
31
+ display: block;
32
+ overflow: hidden;
33
+ height: 1px;
34
+ font-size: 1px;
35
+ }
36
+ .curved .c2, .curved .c3, .curved .c4 {
37
+ background: #fff;
38
+ border-left: 1px solid #000;
39
+ border-right: 1px solid #000;
40
+ }
41
+ .c1 { margin: 0 5px 0 5px; background: #000; }
42
+ .c2 { margin: 0 3px 0 3px; border-left: 2px solid #000; border-right: 2px solid #000; }
43
+ .c3 { margin: 0 2px 0 2px; }
44
+ .c4 { margin: 0 1px 0 1px; }
45
+ </style>
46
+ </head>
47
+ <body>
48
+ <div class="wrap">
49
+ <div class="header">
50
+ Requested URL: <%= base_uri %>
51
+ </div>
52
+ <div class="curved">
53
+ <b class="c1"></b><b class="c2"></b><b class="c3"></b><b class="c4"></b>
54
+ <div class="box">
55
+ <div class="content">
56
+ <img src="/icons/error.png"><h1>Error <%= status %></h1>
57
+ <br />
58
+ <h2><%= message %></h2>
59
+ </div>
60
+ </div>
61
+ <b class="c4"></b><b class="c3"></b><b class="c2"></b><b class="c1"></b>
62
+ </div>
63
+ <div class="footer">
64
+ <a href="<%= Heel::SPEC::homepage %>">heel</a>/v<%= Heel::VERSION %>
65
+ </div>
66
+ </div>
67
+ </body>
68
+ </html>