heel 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +17 -0
- data/LICENSE +31 -0
- data/README +84 -0
- data/bin/heel +10 -0
- data/lib/heel.rb +16 -0
- data/lib/heel/dir_handler.rb +284 -0
- data/lib/heel/error_handler.rb +27 -0
- data/lib/heel/gemspec.rb +49 -0
- data/lib/heel/server.rb +216 -0
- data/lib/heel/specification.rb +128 -0
- data/lib/heel/version.rb +21 -0
- data/resources/error.rhtml +68 -0
- data/resources/famfamfam/icons/accept.png +0 -0
- data/resources/famfamfam/icons/add.png +0 -0
- data/resources/famfamfam/icons/anchor.png +0 -0
- data/resources/famfamfam/icons/application.png +0 -0
- data/resources/famfamfam/icons/application_add.png +0 -0
- data/resources/famfamfam/icons/application_cascade.png +0 -0
- data/resources/famfamfam/icons/application_delete.png +0 -0
- data/resources/famfamfam/icons/application_double.png +0 -0
- data/resources/famfamfam/icons/application_edit.png +0 -0
- data/resources/famfamfam/icons/application_error.png +0 -0
- data/resources/famfamfam/icons/application_form.png +0 -0
- data/resources/famfamfam/icons/application_form_add.png +0 -0
- data/resources/famfamfam/icons/application_form_delete.png +0 -0
- data/resources/famfamfam/icons/application_form_edit.png +0 -0
- data/resources/famfamfam/icons/application_form_magnify.png +0 -0
- data/resources/famfamfam/icons/application_get.png +0 -0
- data/resources/famfamfam/icons/application_go.png +0 -0
- data/resources/famfamfam/icons/application_home.png +0 -0
- data/resources/famfamfam/icons/application_key.png +0 -0
- data/resources/famfamfam/icons/application_lightning.png +0 -0
- data/resources/famfamfam/icons/application_link.png +0 -0
- data/resources/famfamfam/icons/application_osx.png +0 -0
- data/resources/famfamfam/icons/application_osx_terminal.png +0 -0
- data/resources/famfamfam/icons/application_put.png +0 -0
- data/resources/famfamfam/icons/application_side_boxes.png +0 -0
- data/resources/famfamfam/icons/application_side_contract.png +0 -0
- data/resources/famfamfam/icons/application_side_expand.png +0 -0
- data/resources/famfamfam/icons/application_side_list.png +0 -0
- data/resources/famfamfam/icons/application_side_tree.png +0 -0
- data/resources/famfamfam/icons/application_split.png +0 -0
- data/resources/famfamfam/icons/application_tile_horizontal.png +0 -0
- data/resources/famfamfam/icons/application_tile_vertical.png +0 -0
- data/resources/famfamfam/icons/application_view_columns.png +0 -0
- data/resources/famfamfam/icons/application_view_detail.png +0 -0
- data/resources/famfamfam/icons/application_view_gallery.png +0 -0
- data/resources/famfamfam/icons/application_view_icons.png +0 -0
- data/resources/famfamfam/icons/application_view_list.png +0 -0
- data/resources/famfamfam/icons/application_view_tile.png +0 -0
- data/resources/famfamfam/icons/application_xp.png +0 -0
- data/resources/famfamfam/icons/application_xp_terminal.png +0 -0
- data/resources/famfamfam/icons/arrow_branch.png +0 -0
- data/resources/famfamfam/icons/arrow_divide.png +0 -0
- data/resources/famfamfam/icons/arrow_down.png +0 -0
- data/resources/famfamfam/icons/arrow_in.png +0 -0
- data/resources/famfamfam/icons/arrow_inout.png +0 -0
- data/resources/famfamfam/icons/arrow_join.png +0 -0
- data/resources/famfamfam/icons/arrow_left.png +0 -0
- data/resources/famfamfam/icons/arrow_merge.png +0 -0
- data/resources/famfamfam/icons/arrow_out.png +0 -0
- data/resources/famfamfam/icons/arrow_redo.png +0 -0
- data/resources/famfamfam/icons/arrow_refresh.png +0 -0
- data/resources/famfamfam/icons/arrow_refresh_small.png +0 -0
- data/resources/famfamfam/icons/arrow_right.png +0 -0
- data/resources/famfamfam/icons/arrow_rotate_anticlockwise.png +0 -0
- data/resources/famfamfam/icons/arrow_rotate_clockwise.png +0 -0
- data/resources/famfamfam/icons/arrow_switch.png +0 -0
- data/resources/famfamfam/icons/arrow_turn_left.png +0 -0
- data/resources/famfamfam/icons/arrow_turn_right.png +0 -0
- data/resources/famfamfam/icons/arrow_undo.png +0 -0
- data/resources/famfamfam/icons/arrow_up.png +0 -0
- data/resources/famfamfam/icons/asterisk_orange.png +0 -0
- data/resources/famfamfam/icons/asterisk_yellow.png +0 -0
- data/resources/famfamfam/icons/attach.png +0 -0
- data/resources/famfamfam/icons/award_star_add.png +0 -0
- data/resources/famfamfam/icons/award_star_bronze_1.png +0 -0
- data/resources/famfamfam/icons/award_star_bronze_2.png +0 -0
- data/resources/famfamfam/icons/award_star_bronze_3.png +0 -0
- data/resources/famfamfam/icons/award_star_delete.png +0 -0
- data/resources/famfamfam/icons/award_star_gold_1.png +0 -0
- data/resources/famfamfam/icons/award_star_gold_2.png +0 -0
- data/resources/famfamfam/icons/award_star_gold_3.png +0 -0
- data/resources/famfamfam/icons/award_star_silver_1.png +0 -0
- data/resources/famfamfam/icons/award_star_silver_2.png +0 -0
- data/resources/famfamfam/icons/award_star_silver_3.png +0 -0
- data/resources/famfamfam/icons/basket.png +0 -0
- data/resources/famfamfam/icons/basket_add.png +0 -0
- data/resources/famfamfam/icons/basket_delete.png +0 -0
- data/resources/famfamfam/icons/basket_edit.png +0 -0
- data/resources/famfamfam/icons/basket_error.png +0 -0
- data/resources/famfamfam/icons/basket_go.png +0 -0
- data/resources/famfamfam/icons/basket_put.png +0 -0
- data/resources/famfamfam/icons/basket_remove.png +0 -0
- data/resources/famfamfam/icons/bell.png +0 -0
- data/resources/famfamfam/icons/bell_add.png +0 -0
- data/resources/famfamfam/icons/bell_delete.png +0 -0
- data/resources/famfamfam/icons/bell_error.png +0 -0
- data/resources/famfamfam/icons/bell_go.png +0 -0
- data/resources/famfamfam/icons/bell_link.png +0 -0
- data/resources/famfamfam/icons/bin.png +0 -0
- data/resources/famfamfam/icons/bin_closed.png +0 -0
- data/resources/famfamfam/icons/bin_empty.png +0 -0
- data/resources/famfamfam/icons/bomb.png +0 -0
- data/resources/famfamfam/icons/book.png +0 -0
- data/resources/famfamfam/icons/book_add.png +0 -0
- data/resources/famfamfam/icons/book_addresses.png +0 -0
- data/resources/famfamfam/icons/book_delete.png +0 -0
- data/resources/famfamfam/icons/book_edit.png +0 -0
- data/resources/famfamfam/icons/book_error.png +0 -0
- data/resources/famfamfam/icons/book_go.png +0 -0
- data/resources/famfamfam/icons/book_key.png +0 -0
- data/resources/famfamfam/icons/book_link.png +0 -0
- data/resources/famfamfam/icons/book_next.png +0 -0
- data/resources/famfamfam/icons/book_open.png +0 -0
- data/resources/famfamfam/icons/book_previous.png +0 -0
- data/resources/famfamfam/icons/box.png +0 -0
- data/resources/famfamfam/icons/brick.png +0 -0
- data/resources/famfamfam/icons/brick_add.png +0 -0
- data/resources/famfamfam/icons/brick_delete.png +0 -0
- data/resources/famfamfam/icons/brick_edit.png +0 -0
- data/resources/famfamfam/icons/brick_error.png +0 -0
- data/resources/famfamfam/icons/brick_go.png +0 -0
- data/resources/famfamfam/icons/brick_link.png +0 -0
- data/resources/famfamfam/icons/bricks.png +0 -0
- data/resources/famfamfam/icons/briefcase.png +0 -0
- data/resources/famfamfam/icons/bug.png +0 -0
- data/resources/famfamfam/icons/bug_add.png +0 -0
- data/resources/famfamfam/icons/bug_delete.png +0 -0
- data/resources/famfamfam/icons/bug_edit.png +0 -0
- data/resources/famfamfam/icons/bug_error.png +0 -0
- data/resources/famfamfam/icons/bug_go.png +0 -0
- data/resources/famfamfam/icons/bug_link.png +0 -0
- data/resources/famfamfam/icons/building.png +0 -0
- data/resources/famfamfam/icons/building_add.png +0 -0
- data/resources/famfamfam/icons/building_delete.png +0 -0
- data/resources/famfamfam/icons/building_edit.png +0 -0
- data/resources/famfamfam/icons/building_error.png +0 -0
- data/resources/famfamfam/icons/building_go.png +0 -0
- data/resources/famfamfam/icons/building_key.png +0 -0
- data/resources/famfamfam/icons/building_link.png +0 -0
- data/resources/famfamfam/icons/bullet_add.png +0 -0
- data/resources/famfamfam/icons/bullet_arrow_bottom.png +0 -0
- data/resources/famfamfam/icons/bullet_arrow_down.png +0 -0
- data/resources/famfamfam/icons/bullet_arrow_top.png +0 -0
- data/resources/famfamfam/icons/bullet_arrow_up.png +0 -0
- data/resources/famfamfam/icons/bullet_black.png +0 -0
- data/resources/famfamfam/icons/bullet_blue.png +0 -0
- data/resources/famfamfam/icons/bullet_delete.png +0 -0
- data/resources/famfamfam/icons/bullet_disk.png +0 -0
- data/resources/famfamfam/icons/bullet_error.png +0 -0
- data/resources/famfamfam/icons/bullet_feed.png +0 -0
- data/resources/famfamfam/icons/bullet_go.png +0 -0
- data/resources/famfamfam/icons/bullet_green.png +0 -0
- data/resources/famfamfam/icons/bullet_key.png +0 -0
- data/resources/famfamfam/icons/bullet_orange.png +0 -0
- data/resources/famfamfam/icons/bullet_picture.png +0 -0
- data/resources/famfamfam/icons/bullet_pink.png +0 -0
- data/resources/famfamfam/icons/bullet_purple.png +0 -0
- data/resources/famfamfam/icons/bullet_red.png +0 -0
- data/resources/famfamfam/icons/bullet_star.png +0 -0
- data/resources/famfamfam/icons/bullet_toggle_minus.png +0 -0
- data/resources/famfamfam/icons/bullet_toggle_plus.png +0 -0
- data/resources/famfamfam/icons/bullet_white.png +0 -0
- data/resources/famfamfam/icons/bullet_wrench.png +0 -0
- data/resources/famfamfam/icons/bullet_yellow.png +0 -0
- data/resources/famfamfam/icons/cake.png +0 -0
- data/resources/famfamfam/icons/calculator.png +0 -0
- data/resources/famfamfam/icons/calculator_add.png +0 -0
- data/resources/famfamfam/icons/calculator_delete.png +0 -0
- data/resources/famfamfam/icons/calculator_edit.png +0 -0
- data/resources/famfamfam/icons/calculator_error.png +0 -0
- data/resources/famfamfam/icons/calculator_link.png +0 -0
- data/resources/famfamfam/icons/calendar.png +0 -0
- data/resources/famfamfam/icons/calendar_add.png +0 -0
- data/resources/famfamfam/icons/calendar_delete.png +0 -0
- data/resources/famfamfam/icons/calendar_edit.png +0 -0
- data/resources/famfamfam/icons/calendar_link.png +0 -0
- data/resources/famfamfam/icons/calendar_view_day.png +0 -0
- data/resources/famfamfam/icons/calendar_view_month.png +0 -0
- data/resources/famfamfam/icons/calendar_view_week.png +0 -0
- data/resources/famfamfam/icons/camera.png +0 -0
- data/resources/famfamfam/icons/camera_add.png +0 -0
- data/resources/famfamfam/icons/camera_delete.png +0 -0
- data/resources/famfamfam/icons/camera_edit.png +0 -0
- data/resources/famfamfam/icons/camera_error.png +0 -0
- data/resources/famfamfam/icons/camera_go.png +0 -0
- data/resources/famfamfam/icons/camera_link.png +0 -0
- data/resources/famfamfam/icons/camera_small.png +0 -0
- data/resources/famfamfam/icons/cancel.png +0 -0
- data/resources/famfamfam/icons/car.png +0 -0
- data/resources/famfamfam/icons/car_add.png +0 -0
- data/resources/famfamfam/icons/car_delete.png +0 -0
- data/resources/famfamfam/icons/cart.png +0 -0
- data/resources/famfamfam/icons/cart_add.png +0 -0
- data/resources/famfamfam/icons/cart_delete.png +0 -0
- data/resources/famfamfam/icons/cart_edit.png +0 -0
- data/resources/famfamfam/icons/cart_error.png +0 -0
- data/resources/famfamfam/icons/cart_go.png +0 -0
- data/resources/famfamfam/icons/cart_put.png +0 -0
- data/resources/famfamfam/icons/cart_remove.png +0 -0
- data/resources/famfamfam/icons/cd.png +0 -0
- data/resources/famfamfam/icons/cd_add.png +0 -0
- data/resources/famfamfam/icons/cd_burn.png +0 -0
- data/resources/famfamfam/icons/cd_delete.png +0 -0
- data/resources/famfamfam/icons/cd_edit.png +0 -0
- data/resources/famfamfam/icons/cd_eject.png +0 -0
- data/resources/famfamfam/icons/cd_go.png +0 -0
- data/resources/famfamfam/icons/chart_bar.png +0 -0
- data/resources/famfamfam/icons/chart_bar_add.png +0 -0
- data/resources/famfamfam/icons/chart_bar_delete.png +0 -0
- data/resources/famfamfam/icons/chart_bar_edit.png +0 -0
- data/resources/famfamfam/icons/chart_bar_error.png +0 -0
- data/resources/famfamfam/icons/chart_bar_link.png +0 -0
- data/resources/famfamfam/icons/chart_curve.png +0 -0
- data/resources/famfamfam/icons/chart_curve_add.png +0 -0
- data/resources/famfamfam/icons/chart_curve_delete.png +0 -0
- data/resources/famfamfam/icons/chart_curve_edit.png +0 -0
- data/resources/famfamfam/icons/chart_curve_error.png +0 -0
- data/resources/famfamfam/icons/chart_curve_go.png +0 -0
- data/resources/famfamfam/icons/chart_curve_link.png +0 -0
- data/resources/famfamfam/icons/chart_line.png +0 -0
- data/resources/famfamfam/icons/chart_line_add.png +0 -0
- data/resources/famfamfam/icons/chart_line_delete.png +0 -0
- data/resources/famfamfam/icons/chart_line_edit.png +0 -0
- data/resources/famfamfam/icons/chart_line_error.png +0 -0
- data/resources/famfamfam/icons/chart_line_link.png +0 -0
- data/resources/famfamfam/icons/chart_organisation.png +0 -0
- data/resources/famfamfam/icons/chart_organisation_add.png +0 -0
- data/resources/famfamfam/icons/chart_organisation_delete.png +0 -0
- data/resources/famfamfam/icons/chart_pie.png +0 -0
- data/resources/famfamfam/icons/chart_pie_add.png +0 -0
- data/resources/famfamfam/icons/chart_pie_delete.png +0 -0
- data/resources/famfamfam/icons/chart_pie_edit.png +0 -0
- data/resources/famfamfam/icons/chart_pie_error.png +0 -0
- data/resources/famfamfam/icons/chart_pie_link.png +0 -0
- data/resources/famfamfam/icons/clock.png +0 -0
- data/resources/famfamfam/icons/clock_add.png +0 -0
- data/resources/famfamfam/icons/clock_delete.png +0 -0
- data/resources/famfamfam/icons/clock_edit.png +0 -0
- data/resources/famfamfam/icons/clock_error.png +0 -0
- data/resources/famfamfam/icons/clock_go.png +0 -0
- data/resources/famfamfam/icons/clock_link.png +0 -0
- data/resources/famfamfam/icons/clock_pause.png +0 -0
- data/resources/famfamfam/icons/clock_play.png +0 -0
- data/resources/famfamfam/icons/clock_red.png +0 -0
- data/resources/famfamfam/icons/clock_stop.png +0 -0
- data/resources/famfamfam/icons/cog.png +0 -0
- data/resources/famfamfam/icons/cog_add.png +0 -0
- data/resources/famfamfam/icons/cog_delete.png +0 -0
- data/resources/famfamfam/icons/cog_edit.png +0 -0
- data/resources/famfamfam/icons/cog_error.png +0 -0
- data/resources/famfamfam/icons/cog_go.png +0 -0
- data/resources/famfamfam/icons/coins.png +0 -0
- data/resources/famfamfam/icons/coins_add.png +0 -0
- data/resources/famfamfam/icons/coins_delete.png +0 -0
- data/resources/famfamfam/icons/color_swatch.png +0 -0
- data/resources/famfamfam/icons/color_wheel.png +0 -0
- data/resources/famfamfam/icons/comment.png +0 -0
- data/resources/famfamfam/icons/comment_add.png +0 -0
- data/resources/famfamfam/icons/comment_delete.png +0 -0
- data/resources/famfamfam/icons/comment_edit.png +0 -0
- data/resources/famfamfam/icons/comments.png +0 -0
- data/resources/famfamfam/icons/comments_add.png +0 -0
- data/resources/famfamfam/icons/comments_delete.png +0 -0
- data/resources/famfamfam/icons/compress.png +0 -0
- data/resources/famfamfam/icons/computer.png +0 -0
- data/resources/famfamfam/icons/computer_add.png +0 -0
- data/resources/famfamfam/icons/computer_delete.png +0 -0
- data/resources/famfamfam/icons/computer_edit.png +0 -0
- data/resources/famfamfam/icons/computer_error.png +0 -0
- data/resources/famfamfam/icons/computer_go.png +0 -0
- data/resources/famfamfam/icons/computer_key.png +0 -0
- data/resources/famfamfam/icons/computer_link.png +0 -0
- data/resources/famfamfam/icons/connect.png +0 -0
- data/resources/famfamfam/icons/contrast.png +0 -0
- data/resources/famfamfam/icons/contrast_decrease.png +0 -0
- data/resources/famfamfam/icons/contrast_high.png +0 -0
- data/resources/famfamfam/icons/contrast_increase.png +0 -0
- data/resources/famfamfam/icons/contrast_low.png +0 -0
- data/resources/famfamfam/icons/control_eject.png +0 -0
- data/resources/famfamfam/icons/control_eject_blue.png +0 -0
- data/resources/famfamfam/icons/control_end.png +0 -0
- data/resources/famfamfam/icons/control_end_blue.png +0 -0
- data/resources/famfamfam/icons/control_equalizer.png +0 -0
- data/resources/famfamfam/icons/control_equalizer_blue.png +0 -0
- data/resources/famfamfam/icons/control_fastforward.png +0 -0
- data/resources/famfamfam/icons/control_fastforward_blue.png +0 -0
- data/resources/famfamfam/icons/control_pause.png +0 -0
- data/resources/famfamfam/icons/control_pause_blue.png +0 -0
- data/resources/famfamfam/icons/control_play.png +0 -0
- data/resources/famfamfam/icons/control_play_blue.png +0 -0
- data/resources/famfamfam/icons/control_repeat.png +0 -0
- data/resources/famfamfam/icons/control_repeat_blue.png +0 -0
- data/resources/famfamfam/icons/control_rewind.png +0 -0
- data/resources/famfamfam/icons/control_rewind_blue.png +0 -0
- data/resources/famfamfam/icons/control_start.png +0 -0
- data/resources/famfamfam/icons/control_start_blue.png +0 -0
- data/resources/famfamfam/icons/control_stop.png +0 -0
- data/resources/famfamfam/icons/control_stop_blue.png +0 -0
- data/resources/famfamfam/icons/controller.png +0 -0
- data/resources/famfamfam/icons/controller_add.png +0 -0
- data/resources/famfamfam/icons/controller_delete.png +0 -0
- data/resources/famfamfam/icons/controller_error.png +0 -0
- data/resources/famfamfam/icons/creditcards.png +0 -0
- data/resources/famfamfam/icons/cross.png +0 -0
- data/resources/famfamfam/icons/css.png +0 -0
- data/resources/famfamfam/icons/css_add.png +0 -0
- data/resources/famfamfam/icons/css_delete.png +0 -0
- data/resources/famfamfam/icons/css_go.png +0 -0
- data/resources/famfamfam/icons/css_valid.png +0 -0
- data/resources/famfamfam/icons/cup.png +0 -0
- data/resources/famfamfam/icons/cup_add.png +0 -0
- data/resources/famfamfam/icons/cup_delete.png +0 -0
- data/resources/famfamfam/icons/cup_edit.png +0 -0
- data/resources/famfamfam/icons/cup_error.png +0 -0
- data/resources/famfamfam/icons/cup_go.png +0 -0
- data/resources/famfamfam/icons/cup_key.png +0 -0
- data/resources/famfamfam/icons/cup_link.png +0 -0
- data/resources/famfamfam/icons/cursor.png +0 -0
- data/resources/famfamfam/icons/cut.png +0 -0
- data/resources/famfamfam/icons/cut_red.png +0 -0
- data/resources/famfamfam/icons/database.png +0 -0
- data/resources/famfamfam/icons/database_add.png +0 -0
- data/resources/famfamfam/icons/database_connect.png +0 -0
- data/resources/famfamfam/icons/database_delete.png +0 -0
- data/resources/famfamfam/icons/database_edit.png +0 -0
- data/resources/famfamfam/icons/database_error.png +0 -0
- data/resources/famfamfam/icons/database_gear.png +0 -0
- data/resources/famfamfam/icons/database_go.png +0 -0
- data/resources/famfamfam/icons/database_key.png +0 -0
- data/resources/famfamfam/icons/database_lightning.png +0 -0
- data/resources/famfamfam/icons/database_link.png +0 -0
- data/resources/famfamfam/icons/database_refresh.png +0 -0
- data/resources/famfamfam/icons/database_save.png +0 -0
- data/resources/famfamfam/icons/database_table.png +0 -0
- data/resources/famfamfam/icons/date.png +0 -0
- data/resources/famfamfam/icons/date_add.png +0 -0
- data/resources/famfamfam/icons/date_delete.png +0 -0
- data/resources/famfamfam/icons/date_edit.png +0 -0
- data/resources/famfamfam/icons/date_error.png +0 -0
- data/resources/famfamfam/icons/date_go.png +0 -0
- data/resources/famfamfam/icons/date_link.png +0 -0
- data/resources/famfamfam/icons/date_magnify.png +0 -0
- data/resources/famfamfam/icons/date_next.png +0 -0
- data/resources/famfamfam/icons/date_previous.png +0 -0
- data/resources/famfamfam/icons/delete.png +0 -0
- data/resources/famfamfam/icons/disconnect.png +0 -0
- data/resources/famfamfam/icons/disk.png +0 -0
- data/resources/famfamfam/icons/disk_multiple.png +0 -0
- data/resources/famfamfam/icons/door.png +0 -0
- data/resources/famfamfam/icons/door_in.png +0 -0
- data/resources/famfamfam/icons/door_open.png +0 -0
- data/resources/famfamfam/icons/door_out.png +0 -0
- data/resources/famfamfam/icons/drink.png +0 -0
- data/resources/famfamfam/icons/drink_empty.png +0 -0
- data/resources/famfamfam/icons/drive.png +0 -0
- data/resources/famfamfam/icons/drive_add.png +0 -0
- data/resources/famfamfam/icons/drive_burn.png +0 -0
- data/resources/famfamfam/icons/drive_cd.png +0 -0
- data/resources/famfamfam/icons/drive_cd_empty.png +0 -0
- data/resources/famfamfam/icons/drive_delete.png +0 -0
- data/resources/famfamfam/icons/drive_disk.png +0 -0
- data/resources/famfamfam/icons/drive_edit.png +0 -0
- data/resources/famfamfam/icons/drive_error.png +0 -0
- data/resources/famfamfam/icons/drive_go.png +0 -0
- data/resources/famfamfam/icons/drive_key.png +0 -0
- data/resources/famfamfam/icons/drive_link.png +0 -0
- data/resources/famfamfam/icons/drive_magnify.png +0 -0
- data/resources/famfamfam/icons/drive_network.png +0 -0
- data/resources/famfamfam/icons/drive_rename.png +0 -0
- data/resources/famfamfam/icons/drive_user.png +0 -0
- data/resources/famfamfam/icons/drive_web.png +0 -0
- data/resources/famfamfam/icons/dvd.png +0 -0
- data/resources/famfamfam/icons/dvd_add.png +0 -0
- data/resources/famfamfam/icons/dvd_delete.png +0 -0
- data/resources/famfamfam/icons/dvd_edit.png +0 -0
- data/resources/famfamfam/icons/dvd_error.png +0 -0
- data/resources/famfamfam/icons/dvd_go.png +0 -0
- data/resources/famfamfam/icons/dvd_key.png +0 -0
- data/resources/famfamfam/icons/dvd_link.png +0 -0
- data/resources/famfamfam/icons/email.png +0 -0
- data/resources/famfamfam/icons/email_add.png +0 -0
- data/resources/famfamfam/icons/email_attach.png +0 -0
- data/resources/famfamfam/icons/email_delete.png +0 -0
- data/resources/famfamfam/icons/email_edit.png +0 -0
- data/resources/famfamfam/icons/email_error.png +0 -0
- data/resources/famfamfam/icons/email_go.png +0 -0
- data/resources/famfamfam/icons/email_link.png +0 -0
- data/resources/famfamfam/icons/email_open.png +0 -0
- data/resources/famfamfam/icons/email_open_image.png +0 -0
- data/resources/famfamfam/icons/emoticon_evilgrin.png +0 -0
- data/resources/famfamfam/icons/emoticon_grin.png +0 -0
- data/resources/famfamfam/icons/emoticon_happy.png +0 -0
- data/resources/famfamfam/icons/emoticon_smile.png +0 -0
- data/resources/famfamfam/icons/emoticon_surprised.png +0 -0
- data/resources/famfamfam/icons/emoticon_tongue.png +0 -0
- data/resources/famfamfam/icons/emoticon_unhappy.png +0 -0
- data/resources/famfamfam/icons/emoticon_waii.png +0 -0
- data/resources/famfamfam/icons/emoticon_wink.png +0 -0
- data/resources/famfamfam/icons/error.png +0 -0
- data/resources/famfamfam/icons/error_add.png +0 -0
- data/resources/famfamfam/icons/error_delete.png +0 -0
- data/resources/famfamfam/icons/error_go.png +0 -0
- data/resources/famfamfam/icons/exclamation.png +0 -0
- data/resources/famfamfam/icons/eye.png +0 -0
- data/resources/famfamfam/icons/feed.png +0 -0
- data/resources/famfamfam/icons/feed_add.png +0 -0
- data/resources/famfamfam/icons/feed_delete.png +0 -0
- data/resources/famfamfam/icons/feed_disk.png +0 -0
- data/resources/famfamfam/icons/feed_edit.png +0 -0
- data/resources/famfamfam/icons/feed_error.png +0 -0
- data/resources/famfamfam/icons/feed_go.png +0 -0
- data/resources/famfamfam/icons/feed_key.png +0 -0
- data/resources/famfamfam/icons/feed_link.png +0 -0
- data/resources/famfamfam/icons/feed_magnify.png +0 -0
- data/resources/famfamfam/icons/female.png +0 -0
- data/resources/famfamfam/icons/film.png +0 -0
- data/resources/famfamfam/icons/film_add.png +0 -0
- data/resources/famfamfam/icons/film_delete.png +0 -0
- data/resources/famfamfam/icons/film_edit.png +0 -0
- data/resources/famfamfam/icons/film_error.png +0 -0
- data/resources/famfamfam/icons/film_go.png +0 -0
- data/resources/famfamfam/icons/film_key.png +0 -0
- data/resources/famfamfam/icons/film_link.png +0 -0
- data/resources/famfamfam/icons/film_save.png +0 -0
- data/resources/famfamfam/icons/find.png +0 -0
- data/resources/famfamfam/icons/flag_blue.png +0 -0
- data/resources/famfamfam/icons/flag_green.png +0 -0
- data/resources/famfamfam/icons/flag_orange.png +0 -0
- data/resources/famfamfam/icons/flag_pink.png +0 -0
- data/resources/famfamfam/icons/flag_purple.png +0 -0
- data/resources/famfamfam/icons/flag_red.png +0 -0
- data/resources/famfamfam/icons/flag_yellow.png +0 -0
- data/resources/famfamfam/icons/folder.png +0 -0
- data/resources/famfamfam/icons/folder_add.png +0 -0
- data/resources/famfamfam/icons/folder_bell.png +0 -0
- data/resources/famfamfam/icons/folder_brick.png +0 -0
- data/resources/famfamfam/icons/folder_bug.png +0 -0
- data/resources/famfamfam/icons/folder_camera.png +0 -0
- data/resources/famfamfam/icons/folder_database.png +0 -0
- data/resources/famfamfam/icons/folder_delete.png +0 -0
- data/resources/famfamfam/icons/folder_edit.png +0 -0
- data/resources/famfamfam/icons/folder_error.png +0 -0
- data/resources/famfamfam/icons/folder_explore.png +0 -0
- data/resources/famfamfam/icons/folder_feed.png +0 -0
- data/resources/famfamfam/icons/folder_find.png +0 -0
- data/resources/famfamfam/icons/folder_go.png +0 -0
- data/resources/famfamfam/icons/folder_heart.png +0 -0
- data/resources/famfamfam/icons/folder_image.png +0 -0
- data/resources/famfamfam/icons/folder_key.png +0 -0
- data/resources/famfamfam/icons/folder_lightbulb.png +0 -0
- data/resources/famfamfam/icons/folder_link.png +0 -0
- data/resources/famfamfam/icons/folder_magnify.png +0 -0
- data/resources/famfamfam/icons/folder_page.png +0 -0
- data/resources/famfamfam/icons/folder_page_white.png +0 -0
- data/resources/famfamfam/icons/folder_palette.png +0 -0
- data/resources/famfamfam/icons/folder_picture.png +0 -0
- data/resources/famfamfam/icons/folder_star.png +0 -0
- data/resources/famfamfam/icons/folder_table.png +0 -0
- data/resources/famfamfam/icons/folder_user.png +0 -0
- data/resources/famfamfam/icons/folder_wrench.png +0 -0
- data/resources/famfamfam/icons/font.png +0 -0
- data/resources/famfamfam/icons/font_add.png +0 -0
- data/resources/famfamfam/icons/font_delete.png +0 -0
- data/resources/famfamfam/icons/font_go.png +0 -0
- data/resources/famfamfam/icons/group.png +0 -0
- data/resources/famfamfam/icons/group_add.png +0 -0
- data/resources/famfamfam/icons/group_delete.png +0 -0
- data/resources/famfamfam/icons/group_edit.png +0 -0
- data/resources/famfamfam/icons/group_error.png +0 -0
- data/resources/famfamfam/icons/group_gear.png +0 -0
- data/resources/famfamfam/icons/group_go.png +0 -0
- data/resources/famfamfam/icons/group_key.png +0 -0
- data/resources/famfamfam/icons/group_link.png +0 -0
- data/resources/famfamfam/icons/heart.png +0 -0
- data/resources/famfamfam/icons/heart_add.png +0 -0
- data/resources/famfamfam/icons/heart_delete.png +0 -0
- data/resources/famfamfam/icons/help.png +0 -0
- data/resources/famfamfam/icons/hourglass.png +0 -0
- data/resources/famfamfam/icons/hourglass_add.png +0 -0
- data/resources/famfamfam/icons/hourglass_delete.png +0 -0
- data/resources/famfamfam/icons/hourglass_go.png +0 -0
- data/resources/famfamfam/icons/hourglass_link.png +0 -0
- data/resources/famfamfam/icons/house.png +0 -0
- data/resources/famfamfam/icons/house_go.png +0 -0
- data/resources/famfamfam/icons/house_link.png +0 -0
- data/resources/famfamfam/icons/html.png +0 -0
- data/resources/famfamfam/icons/html_add.png +0 -0
- data/resources/famfamfam/icons/html_delete.png +0 -0
- data/resources/famfamfam/icons/html_go.png +0 -0
- data/resources/famfamfam/icons/html_valid.png +0 -0
- data/resources/famfamfam/icons/image.png +0 -0
- data/resources/famfamfam/icons/image_add.png +0 -0
- data/resources/famfamfam/icons/image_delete.png +0 -0
- data/resources/famfamfam/icons/image_edit.png +0 -0
- data/resources/famfamfam/icons/image_link.png +0 -0
- data/resources/famfamfam/icons/images.png +0 -0
- data/resources/famfamfam/icons/information.png +0 -0
- data/resources/famfamfam/icons/ipod.png +0 -0
- data/resources/famfamfam/icons/ipod_cast.png +0 -0
- data/resources/famfamfam/icons/ipod_cast_add.png +0 -0
- data/resources/famfamfam/icons/ipod_cast_delete.png +0 -0
- data/resources/famfamfam/icons/ipod_sound.png +0 -0
- data/resources/famfamfam/icons/joystick.png +0 -0
- data/resources/famfamfam/icons/joystick_add.png +0 -0
- data/resources/famfamfam/icons/joystick_delete.png +0 -0
- data/resources/famfamfam/icons/joystick_error.png +0 -0
- data/resources/famfamfam/icons/key.png +0 -0
- data/resources/famfamfam/icons/key_add.png +0 -0
- data/resources/famfamfam/icons/key_delete.png +0 -0
- data/resources/famfamfam/icons/key_go.png +0 -0
- data/resources/famfamfam/icons/keyboard.png +0 -0
- data/resources/famfamfam/icons/keyboard_add.png +0 -0
- data/resources/famfamfam/icons/keyboard_delete.png +0 -0
- data/resources/famfamfam/icons/keyboard_magnify.png +0 -0
- data/resources/famfamfam/icons/layers.png +0 -0
- data/resources/famfamfam/icons/layout.png +0 -0
- data/resources/famfamfam/icons/layout_add.png +0 -0
- data/resources/famfamfam/icons/layout_content.png +0 -0
- data/resources/famfamfam/icons/layout_delete.png +0 -0
- data/resources/famfamfam/icons/layout_edit.png +0 -0
- data/resources/famfamfam/icons/layout_error.png +0 -0
- data/resources/famfamfam/icons/layout_header.png +0 -0
- data/resources/famfamfam/icons/layout_link.png +0 -0
- data/resources/famfamfam/icons/layout_sidebar.png +0 -0
- data/resources/famfamfam/icons/lightbulb.png +0 -0
- data/resources/famfamfam/icons/lightbulb_add.png +0 -0
- data/resources/famfamfam/icons/lightbulb_delete.png +0 -0
- data/resources/famfamfam/icons/lightbulb_off.png +0 -0
- data/resources/famfamfam/icons/lightning.png +0 -0
- data/resources/famfamfam/icons/lightning_add.png +0 -0
- data/resources/famfamfam/icons/lightning_delete.png +0 -0
- data/resources/famfamfam/icons/lightning_go.png +0 -0
- data/resources/famfamfam/icons/link.png +0 -0
- data/resources/famfamfam/icons/link_add.png +0 -0
- data/resources/famfamfam/icons/link_break.png +0 -0
- data/resources/famfamfam/icons/link_delete.png +0 -0
- data/resources/famfamfam/icons/link_edit.png +0 -0
- data/resources/famfamfam/icons/link_error.png +0 -0
- data/resources/famfamfam/icons/link_go.png +0 -0
- data/resources/famfamfam/icons/lock.png +0 -0
- data/resources/famfamfam/icons/lock_add.png +0 -0
- data/resources/famfamfam/icons/lock_break.png +0 -0
- data/resources/famfamfam/icons/lock_delete.png +0 -0
- data/resources/famfamfam/icons/lock_edit.png +0 -0
- data/resources/famfamfam/icons/lock_go.png +0 -0
- data/resources/famfamfam/icons/lock_open.png +0 -0
- data/resources/famfamfam/icons/lorry.png +0 -0
- data/resources/famfamfam/icons/lorry_add.png +0 -0
- data/resources/famfamfam/icons/lorry_delete.png +0 -0
- data/resources/famfamfam/icons/lorry_error.png +0 -0
- data/resources/famfamfam/icons/lorry_flatbed.png +0 -0
- data/resources/famfamfam/icons/lorry_go.png +0 -0
- data/resources/famfamfam/icons/lorry_link.png +0 -0
- data/resources/famfamfam/icons/magifier_zoom_out.png +0 -0
- data/resources/famfamfam/icons/magnifier.png +0 -0
- data/resources/famfamfam/icons/magnifier_zoom_in.png +0 -0
- data/resources/famfamfam/icons/male.png +0 -0
- data/resources/famfamfam/icons/map.png +0 -0
- data/resources/famfamfam/icons/map_add.png +0 -0
- data/resources/famfamfam/icons/map_delete.png +0 -0
- data/resources/famfamfam/icons/map_edit.png +0 -0
- data/resources/famfamfam/icons/map_go.png +0 -0
- data/resources/famfamfam/icons/map_magnify.png +0 -0
- data/resources/famfamfam/icons/medal_bronze_1.png +0 -0
- data/resources/famfamfam/icons/medal_bronze_2.png +0 -0
- data/resources/famfamfam/icons/medal_bronze_3.png +0 -0
- data/resources/famfamfam/icons/medal_bronze_add.png +0 -0
- data/resources/famfamfam/icons/medal_bronze_delete.png +0 -0
- data/resources/famfamfam/icons/medal_gold_1.png +0 -0
- data/resources/famfamfam/icons/medal_gold_2.png +0 -0
- data/resources/famfamfam/icons/medal_gold_3.png +0 -0
- data/resources/famfamfam/icons/medal_gold_add.png +0 -0
- data/resources/famfamfam/icons/medal_gold_delete.png +0 -0
- data/resources/famfamfam/icons/medal_silver_1.png +0 -0
- data/resources/famfamfam/icons/medal_silver_2.png +0 -0
- data/resources/famfamfam/icons/medal_silver_3.png +0 -0
- data/resources/famfamfam/icons/medal_silver_add.png +0 -0
- data/resources/famfamfam/icons/medal_silver_delete.png +0 -0
- data/resources/famfamfam/icons/money.png +0 -0
- data/resources/famfamfam/icons/money_add.png +0 -0
- data/resources/famfamfam/icons/money_delete.png +0 -0
- data/resources/famfamfam/icons/money_dollar.png +0 -0
- data/resources/famfamfam/icons/money_euro.png +0 -0
- data/resources/famfamfam/icons/money_pound.png +0 -0
- data/resources/famfamfam/icons/money_yen.png +0 -0
- data/resources/famfamfam/icons/monitor.png +0 -0
- data/resources/famfamfam/icons/monitor_add.png +0 -0
- data/resources/famfamfam/icons/monitor_delete.png +0 -0
- data/resources/famfamfam/icons/monitor_edit.png +0 -0
- data/resources/famfamfam/icons/monitor_error.png +0 -0
- data/resources/famfamfam/icons/monitor_go.png +0 -0
- data/resources/famfamfam/icons/monitor_lightning.png +0 -0
- data/resources/famfamfam/icons/monitor_link.png +0 -0
- data/resources/famfamfam/icons/mouse.png +0 -0
- data/resources/famfamfam/icons/mouse_add.png +0 -0
- data/resources/famfamfam/icons/mouse_delete.png +0 -0
- data/resources/famfamfam/icons/mouse_error.png +0 -0
- data/resources/famfamfam/icons/music.png +0 -0
- data/resources/famfamfam/icons/new.png +0 -0
- data/resources/famfamfam/icons/newspaper.png +0 -0
- data/resources/famfamfam/icons/newspaper_add.png +0 -0
- data/resources/famfamfam/icons/newspaper_delete.png +0 -0
- data/resources/famfamfam/icons/newspaper_go.png +0 -0
- data/resources/famfamfam/icons/newspaper_link.png +0 -0
- data/resources/famfamfam/icons/note.png +0 -0
- data/resources/famfamfam/icons/note_add.png +0 -0
- data/resources/famfamfam/icons/note_delete.png +0 -0
- data/resources/famfamfam/icons/note_edit.png +0 -0
- data/resources/famfamfam/icons/note_error.png +0 -0
- data/resources/famfamfam/icons/note_go.png +0 -0
- data/resources/famfamfam/icons/overlays.png +0 -0
- data/resources/famfamfam/icons/package.png +0 -0
- data/resources/famfamfam/icons/package_add.png +0 -0
- data/resources/famfamfam/icons/package_delete.png +0 -0
- data/resources/famfamfam/icons/package_go.png +0 -0
- data/resources/famfamfam/icons/package_green.png +0 -0
- data/resources/famfamfam/icons/package_link.png +0 -0
- data/resources/famfamfam/icons/page.png +0 -0
- data/resources/famfamfam/icons/page_add.png +0 -0
- data/resources/famfamfam/icons/page_attach.png +0 -0
- data/resources/famfamfam/icons/page_code.png +0 -0
- data/resources/famfamfam/icons/page_copy.png +0 -0
- data/resources/famfamfam/icons/page_delete.png +0 -0
- data/resources/famfamfam/icons/page_edit.png +0 -0
- data/resources/famfamfam/icons/page_error.png +0 -0
- data/resources/famfamfam/icons/page_excel.png +0 -0
- data/resources/famfamfam/icons/page_find.png +0 -0
- data/resources/famfamfam/icons/page_gear.png +0 -0
- data/resources/famfamfam/icons/page_go.png +0 -0
- data/resources/famfamfam/icons/page_green.png +0 -0
- data/resources/famfamfam/icons/page_key.png +0 -0
- data/resources/famfamfam/icons/page_lightning.png +0 -0
- data/resources/famfamfam/icons/page_link.png +0 -0
- data/resources/famfamfam/icons/page_paintbrush.png +0 -0
- data/resources/famfamfam/icons/page_paste.png +0 -0
- data/resources/famfamfam/icons/page_red.png +0 -0
- data/resources/famfamfam/icons/page_refresh.png +0 -0
- data/resources/famfamfam/icons/page_save.png +0 -0
- data/resources/famfamfam/icons/page_white.png +0 -0
- data/resources/famfamfam/icons/page_white_acrobat.png +0 -0
- data/resources/famfamfam/icons/page_white_actionscript.png +0 -0
- data/resources/famfamfam/icons/page_white_add.png +0 -0
- data/resources/famfamfam/icons/page_white_c.png +0 -0
- data/resources/famfamfam/icons/page_white_camera.png +0 -0
- data/resources/famfamfam/icons/page_white_cd.png +0 -0
- data/resources/famfamfam/icons/page_white_code.png +0 -0
- data/resources/famfamfam/icons/page_white_code_red.png +0 -0
- data/resources/famfamfam/icons/page_white_coldfusion.png +0 -0
- data/resources/famfamfam/icons/page_white_compressed.png +0 -0
- data/resources/famfamfam/icons/page_white_copy.png +0 -0
- data/resources/famfamfam/icons/page_white_cplusplus.png +0 -0
- data/resources/famfamfam/icons/page_white_csharp.png +0 -0
- data/resources/famfamfam/icons/page_white_cup.png +0 -0
- data/resources/famfamfam/icons/page_white_database.png +0 -0
- data/resources/famfamfam/icons/page_white_delete.png +0 -0
- data/resources/famfamfam/icons/page_white_dvd.png +0 -0
- data/resources/famfamfam/icons/page_white_edit.png +0 -0
- data/resources/famfamfam/icons/page_white_error.png +0 -0
- data/resources/famfamfam/icons/page_white_excel.png +0 -0
- data/resources/famfamfam/icons/page_white_find.png +0 -0
- data/resources/famfamfam/icons/page_white_flash.png +0 -0
- data/resources/famfamfam/icons/page_white_freehand.png +0 -0
- data/resources/famfamfam/icons/page_white_gear.png +0 -0
- data/resources/famfamfam/icons/page_white_get.png +0 -0
- data/resources/famfamfam/icons/page_white_go.png +0 -0
- data/resources/famfamfam/icons/page_white_h.png +0 -0
- data/resources/famfamfam/icons/page_white_horizontal.png +0 -0
- data/resources/famfamfam/icons/page_white_key.png +0 -0
- data/resources/famfamfam/icons/page_white_lightning.png +0 -0
- data/resources/famfamfam/icons/page_white_link.png +0 -0
- data/resources/famfamfam/icons/page_white_magnify.png +0 -0
- data/resources/famfamfam/icons/page_white_medal.png +0 -0
- data/resources/famfamfam/icons/page_white_office.png +0 -0
- data/resources/famfamfam/icons/page_white_paint.png +0 -0
- data/resources/famfamfam/icons/page_white_paintbrush.png +0 -0
- data/resources/famfamfam/icons/page_white_paste.png +0 -0
- data/resources/famfamfam/icons/page_white_php.png +0 -0
- data/resources/famfamfam/icons/page_white_picture.png +0 -0
- data/resources/famfamfam/icons/page_white_powerpoint.png +0 -0
- data/resources/famfamfam/icons/page_white_put.png +0 -0
- data/resources/famfamfam/icons/page_white_ruby.png +0 -0
- data/resources/famfamfam/icons/page_white_stack.png +0 -0
- data/resources/famfamfam/icons/page_white_star.png +0 -0
- data/resources/famfamfam/icons/page_white_swoosh.png +0 -0
- data/resources/famfamfam/icons/page_white_text.png +0 -0
- data/resources/famfamfam/icons/page_white_text_width.png +0 -0
- data/resources/famfamfam/icons/page_white_tux.png +0 -0
- data/resources/famfamfam/icons/page_white_vector.png +0 -0
- data/resources/famfamfam/icons/page_white_visualstudio.png +0 -0
- data/resources/famfamfam/icons/page_white_width.png +0 -0
- data/resources/famfamfam/icons/page_white_word.png +0 -0
- data/resources/famfamfam/icons/page_white_world.png +0 -0
- data/resources/famfamfam/icons/page_white_wrench.png +0 -0
- data/resources/famfamfam/icons/page_white_zip.png +0 -0
- data/resources/famfamfam/icons/page_word.png +0 -0
- data/resources/famfamfam/icons/page_world.png +0 -0
- data/resources/famfamfam/icons/paintbrush.png +0 -0
- data/resources/famfamfam/icons/paintcan.png +0 -0
- data/resources/famfamfam/icons/palette.png +0 -0
- data/resources/famfamfam/icons/paste_plain.png +0 -0
- data/resources/famfamfam/icons/paste_word.png +0 -0
- data/resources/famfamfam/icons/pencil.png +0 -0
- data/resources/famfamfam/icons/pencil_add.png +0 -0
- data/resources/famfamfam/icons/pencil_delete.png +0 -0
- data/resources/famfamfam/icons/pencil_go.png +0 -0
- data/resources/famfamfam/icons/phone.png +0 -0
- data/resources/famfamfam/icons/phone_add.png +0 -0
- data/resources/famfamfam/icons/phone_delete.png +0 -0
- data/resources/famfamfam/icons/phone_sound.png +0 -0
- data/resources/famfamfam/icons/photo.png +0 -0
- data/resources/famfamfam/icons/photo_add.png +0 -0
- data/resources/famfamfam/icons/photo_delete.png +0 -0
- data/resources/famfamfam/icons/photo_link.png +0 -0
- data/resources/famfamfam/icons/photos.png +0 -0
- data/resources/famfamfam/icons/picture.png +0 -0
- data/resources/famfamfam/icons/picture_add.png +0 -0
- data/resources/famfamfam/icons/picture_delete.png +0 -0
- data/resources/famfamfam/icons/picture_edit.png +0 -0
- data/resources/famfamfam/icons/picture_empty.png +0 -0
- data/resources/famfamfam/icons/picture_error.png +0 -0
- data/resources/famfamfam/icons/picture_go.png +0 -0
- data/resources/famfamfam/icons/picture_key.png +0 -0
- data/resources/famfamfam/icons/picture_link.png +0 -0
- data/resources/famfamfam/icons/picture_save.png +0 -0
- data/resources/famfamfam/icons/pictures.png +0 -0
- data/resources/famfamfam/icons/pilcrow.png +0 -0
- data/resources/famfamfam/icons/pill.png +0 -0
- data/resources/famfamfam/icons/pill_add.png +0 -0
- data/resources/famfamfam/icons/pill_delete.png +0 -0
- data/resources/famfamfam/icons/pill_go.png +0 -0
- data/resources/famfamfam/icons/plugin.png +0 -0
- data/resources/famfamfam/icons/plugin_add.png +0 -0
- data/resources/famfamfam/icons/plugin_delete.png +0 -0
- data/resources/famfamfam/icons/plugin_disabled.png +0 -0
- data/resources/famfamfam/icons/plugin_edit.png +0 -0
- data/resources/famfamfam/icons/plugin_error.png +0 -0
- data/resources/famfamfam/icons/plugin_go.png +0 -0
- data/resources/famfamfam/icons/plugin_link.png +0 -0
- data/resources/famfamfam/icons/printer.png +0 -0
- data/resources/famfamfam/icons/printer_add.png +0 -0
- data/resources/famfamfam/icons/printer_delete.png +0 -0
- data/resources/famfamfam/icons/printer_empty.png +0 -0
- data/resources/famfamfam/icons/printer_error.png +0 -0
- data/resources/famfamfam/icons/rainbow.png +0 -0
- data/resources/famfamfam/icons/report.png +0 -0
- data/resources/famfamfam/icons/report_add.png +0 -0
- data/resources/famfamfam/icons/report_delete.png +0 -0
- data/resources/famfamfam/icons/report_disk.png +0 -0
- data/resources/famfamfam/icons/report_edit.png +0 -0
- data/resources/famfamfam/icons/report_go.png +0 -0
- data/resources/famfamfam/icons/report_key.png +0 -0
- data/resources/famfamfam/icons/report_link.png +0 -0
- data/resources/famfamfam/icons/report_magnify.png +0 -0
- data/resources/famfamfam/icons/report_picture.png +0 -0
- data/resources/famfamfam/icons/report_user.png +0 -0
- data/resources/famfamfam/icons/report_word.png +0 -0
- data/resources/famfamfam/icons/resultset_first.png +0 -0
- data/resources/famfamfam/icons/resultset_last.png +0 -0
- data/resources/famfamfam/icons/resultset_next.png +0 -0
- data/resources/famfamfam/icons/resultset_previous.png +0 -0
- data/resources/famfamfam/icons/rosette.png +0 -0
- data/resources/famfamfam/icons/rss.png +0 -0
- data/resources/famfamfam/icons/rss_add.png +0 -0
- data/resources/famfamfam/icons/rss_delete.png +0 -0
- data/resources/famfamfam/icons/rss_go.png +0 -0
- data/resources/famfamfam/icons/rss_valid.png +0 -0
- data/resources/famfamfam/icons/ruby.png +0 -0
- data/resources/famfamfam/icons/ruby_add.png +0 -0
- data/resources/famfamfam/icons/ruby_delete.png +0 -0
- data/resources/famfamfam/icons/ruby_gear.png +0 -0
- data/resources/famfamfam/icons/ruby_get.png +0 -0
- data/resources/famfamfam/icons/ruby_go.png +0 -0
- data/resources/famfamfam/icons/ruby_key.png +0 -0
- data/resources/famfamfam/icons/ruby_link.png +0 -0
- data/resources/famfamfam/icons/ruby_put.png +0 -0
- data/resources/famfamfam/icons/script.png +0 -0
- data/resources/famfamfam/icons/script_add.png +0 -0
- data/resources/famfamfam/icons/script_code.png +0 -0
- data/resources/famfamfam/icons/script_code_red.png +0 -0
- data/resources/famfamfam/icons/script_delete.png +0 -0
- data/resources/famfamfam/icons/script_edit.png +0 -0
- data/resources/famfamfam/icons/script_error.png +0 -0
- data/resources/famfamfam/icons/script_gear.png +0 -0
- data/resources/famfamfam/icons/script_go.png +0 -0
- data/resources/famfamfam/icons/script_key.png +0 -0
- data/resources/famfamfam/icons/script_lightning.png +0 -0
- data/resources/famfamfam/icons/script_link.png +0 -0
- data/resources/famfamfam/icons/script_palette.png +0 -0
- data/resources/famfamfam/icons/script_save.png +0 -0
- data/resources/famfamfam/icons/server.png +0 -0
- data/resources/famfamfam/icons/server_add.png +0 -0
- data/resources/famfamfam/icons/server_chart.png +0 -0
- data/resources/famfamfam/icons/server_compressed.png +0 -0
- data/resources/famfamfam/icons/server_connect.png +0 -0
- data/resources/famfamfam/icons/server_database.png +0 -0
- data/resources/famfamfam/icons/server_delete.png +0 -0
- data/resources/famfamfam/icons/server_edit.png +0 -0
- data/resources/famfamfam/icons/server_error.png +0 -0
- data/resources/famfamfam/icons/server_go.png +0 -0
- data/resources/famfamfam/icons/server_key.png +0 -0
- data/resources/famfamfam/icons/server_lightning.png +0 -0
- data/resources/famfamfam/icons/server_link.png +0 -0
- data/resources/famfamfam/icons/server_uncompressed.png +0 -0
- data/resources/famfamfam/icons/shading.png +0 -0
- data/resources/famfamfam/icons/shape_align_bottom.png +0 -0
- data/resources/famfamfam/icons/shape_align_center.png +0 -0
- data/resources/famfamfam/icons/shape_align_left.png +0 -0
- data/resources/famfamfam/icons/shape_align_middle.png +0 -0
- data/resources/famfamfam/icons/shape_align_right.png +0 -0
- data/resources/famfamfam/icons/shape_align_top.png +0 -0
- data/resources/famfamfam/icons/shape_flip_horizontal.png +0 -0
- data/resources/famfamfam/icons/shape_flip_vertical.png +0 -0
- data/resources/famfamfam/icons/shape_group.png +0 -0
- data/resources/famfamfam/icons/shape_handles.png +0 -0
- data/resources/famfamfam/icons/shape_move_back.png +0 -0
- data/resources/famfamfam/icons/shape_move_backwards.png +0 -0
- data/resources/famfamfam/icons/shape_move_forwards.png +0 -0
- data/resources/famfamfam/icons/shape_move_front.png +0 -0
- data/resources/famfamfam/icons/shape_rotate_anticlockwise.png +0 -0
- data/resources/famfamfam/icons/shape_rotate_clockwise.png +0 -0
- data/resources/famfamfam/icons/shape_square.png +0 -0
- data/resources/famfamfam/icons/shape_square_add.png +0 -0
- data/resources/famfamfam/icons/shape_square_delete.png +0 -0
- data/resources/famfamfam/icons/shape_square_edit.png +0 -0
- data/resources/famfamfam/icons/shape_square_error.png +0 -0
- data/resources/famfamfam/icons/shape_square_go.png +0 -0
- data/resources/famfamfam/icons/shape_square_key.png +0 -0
- data/resources/famfamfam/icons/shape_square_link.png +0 -0
- data/resources/famfamfam/icons/shape_ungroup.png +0 -0
- data/resources/famfamfam/icons/shield.png +0 -0
- data/resources/famfamfam/icons/shield_add.png +0 -0
- data/resources/famfamfam/icons/shield_delete.png +0 -0
- data/resources/famfamfam/icons/shield_go.png +0 -0
- data/resources/famfamfam/icons/sitemap.png +0 -0
- data/resources/famfamfam/icons/sitemap_color.png +0 -0
- data/resources/famfamfam/icons/sound.png +0 -0
- data/resources/famfamfam/icons/sound_add.png +0 -0
- data/resources/famfamfam/icons/sound_delete.png +0 -0
- data/resources/famfamfam/icons/sound_low.png +0 -0
- data/resources/famfamfam/icons/sound_mute.png +0 -0
- data/resources/famfamfam/icons/sound_none.png +0 -0
- data/resources/famfamfam/icons/spellcheck.png +0 -0
- data/resources/famfamfam/icons/sport_8ball.png +0 -0
- data/resources/famfamfam/icons/sport_basketball.png +0 -0
- data/resources/famfamfam/icons/sport_football.png +0 -0
- data/resources/famfamfam/icons/sport_golf.png +0 -0
- data/resources/famfamfam/icons/sport_raquet.png +0 -0
- data/resources/famfamfam/icons/sport_shuttlecock.png +0 -0
- data/resources/famfamfam/icons/sport_soccer.png +0 -0
- data/resources/famfamfam/icons/sport_tennis.png +0 -0
- data/resources/famfamfam/icons/star.png +0 -0
- data/resources/famfamfam/icons/status_away.png +0 -0
- data/resources/famfamfam/icons/status_busy.png +0 -0
- data/resources/famfamfam/icons/status_offline.png +0 -0
- data/resources/famfamfam/icons/status_online.png +0 -0
- data/resources/famfamfam/icons/stop.png +0 -0
- data/resources/famfamfam/icons/style.png +0 -0
- data/resources/famfamfam/icons/style_add.png +0 -0
- data/resources/famfamfam/icons/style_delete.png +0 -0
- data/resources/famfamfam/icons/style_edit.png +0 -0
- data/resources/famfamfam/icons/style_go.png +0 -0
- data/resources/famfamfam/icons/sum.png +0 -0
- data/resources/famfamfam/icons/tab.png +0 -0
- data/resources/famfamfam/icons/tab_add.png +0 -0
- data/resources/famfamfam/icons/tab_delete.png +0 -0
- data/resources/famfamfam/icons/tab_edit.png +0 -0
- data/resources/famfamfam/icons/tab_go.png +0 -0
- data/resources/famfamfam/icons/table.png +0 -0
- data/resources/famfamfam/icons/table_add.png +0 -0
- data/resources/famfamfam/icons/table_delete.png +0 -0
- data/resources/famfamfam/icons/table_edit.png +0 -0
- data/resources/famfamfam/icons/table_error.png +0 -0
- data/resources/famfamfam/icons/table_gear.png +0 -0
- data/resources/famfamfam/icons/table_go.png +0 -0
- data/resources/famfamfam/icons/table_key.png +0 -0
- data/resources/famfamfam/icons/table_lightning.png +0 -0
- data/resources/famfamfam/icons/table_link.png +0 -0
- data/resources/famfamfam/icons/table_multiple.png +0 -0
- data/resources/famfamfam/icons/table_refresh.png +0 -0
- data/resources/famfamfam/icons/table_relationship.png +0 -0
- data/resources/famfamfam/icons/table_row_delete.png +0 -0
- data/resources/famfamfam/icons/table_row_insert.png +0 -0
- data/resources/famfamfam/icons/table_save.png +0 -0
- data/resources/famfamfam/icons/table_sort.png +0 -0
- data/resources/famfamfam/icons/tag.png +0 -0
- data/resources/famfamfam/icons/tag_blue.png +0 -0
- data/resources/famfamfam/icons/tag_blue_add.png +0 -0
- data/resources/famfamfam/icons/tag_blue_delete.png +0 -0
- data/resources/famfamfam/icons/tag_blue_edit.png +0 -0
- data/resources/famfamfam/icons/tag_green.png +0 -0
- data/resources/famfamfam/icons/tag_orange.png +0 -0
- data/resources/famfamfam/icons/tag_pink.png +0 -0
- data/resources/famfamfam/icons/tag_purple.png +0 -0
- data/resources/famfamfam/icons/tag_red.png +0 -0
- data/resources/famfamfam/icons/tag_yellow.png +0 -0
- data/resources/famfamfam/icons/telephone.png +0 -0
- data/resources/famfamfam/icons/telephone_add.png +0 -0
- data/resources/famfamfam/icons/telephone_delete.png +0 -0
- data/resources/famfamfam/icons/telephone_edit.png +0 -0
- data/resources/famfamfam/icons/telephone_error.png +0 -0
- data/resources/famfamfam/icons/telephone_go.png +0 -0
- data/resources/famfamfam/icons/telephone_key.png +0 -0
- data/resources/famfamfam/icons/telephone_link.png +0 -0
- data/resources/famfamfam/icons/television.png +0 -0
- data/resources/famfamfam/icons/television_add.png +0 -0
- data/resources/famfamfam/icons/television_delete.png +0 -0
- data/resources/famfamfam/icons/text_align_center.png +0 -0
- data/resources/famfamfam/icons/text_align_justify.png +0 -0
- data/resources/famfamfam/icons/text_align_left.png +0 -0
- data/resources/famfamfam/icons/text_align_right.png +0 -0
- data/resources/famfamfam/icons/text_allcaps.png +0 -0
- data/resources/famfamfam/icons/text_bold.png +0 -0
- data/resources/famfamfam/icons/text_columns.png +0 -0
- data/resources/famfamfam/icons/text_dropcaps.png +0 -0
- data/resources/famfamfam/icons/text_heading_1.png +0 -0
- data/resources/famfamfam/icons/text_heading_2.png +0 -0
- data/resources/famfamfam/icons/text_heading_3.png +0 -0
- data/resources/famfamfam/icons/text_heading_4.png +0 -0
- data/resources/famfamfam/icons/text_heading_5.png +0 -0
- data/resources/famfamfam/icons/text_heading_6.png +0 -0
- data/resources/famfamfam/icons/text_horizontalrule.png +0 -0
- data/resources/famfamfam/icons/text_indent.png +0 -0
- data/resources/famfamfam/icons/text_indent_remove.png +0 -0
- data/resources/famfamfam/icons/text_italic.png +0 -0
- data/resources/famfamfam/icons/text_kerning.png +0 -0
- data/resources/famfamfam/icons/text_letter_omega.png +0 -0
- data/resources/famfamfam/icons/text_letterspacing.png +0 -0
- data/resources/famfamfam/icons/text_linespacing.png +0 -0
- data/resources/famfamfam/icons/text_list_bullets.png +0 -0
- data/resources/famfamfam/icons/text_list_numbers.png +0 -0
- data/resources/famfamfam/icons/text_lowercase.png +0 -0
- data/resources/famfamfam/icons/text_padding_bottom.png +0 -0
- data/resources/famfamfam/icons/text_padding_left.png +0 -0
- data/resources/famfamfam/icons/text_padding_right.png +0 -0
- data/resources/famfamfam/icons/text_padding_top.png +0 -0
- data/resources/famfamfam/icons/text_replace.png +0 -0
- data/resources/famfamfam/icons/text_signature.png +0 -0
- data/resources/famfamfam/icons/text_smallcaps.png +0 -0
- data/resources/famfamfam/icons/text_strikethrough.png +0 -0
- data/resources/famfamfam/icons/text_subscript.png +0 -0
- data/resources/famfamfam/icons/text_superscript.png +0 -0
- data/resources/famfamfam/icons/text_underline.png +0 -0
- data/resources/famfamfam/icons/text_uppercase.png +0 -0
- data/resources/famfamfam/icons/textfield.png +0 -0
- data/resources/famfamfam/icons/textfield_add.png +0 -0
- data/resources/famfamfam/icons/textfield_delete.png +0 -0
- data/resources/famfamfam/icons/textfield_key.png +0 -0
- data/resources/famfamfam/icons/textfield_rename.png +0 -0
- data/resources/famfamfam/icons/thumb_down.png +0 -0
- data/resources/famfamfam/icons/thumb_up.png +0 -0
- data/resources/famfamfam/icons/tick.png +0 -0
- data/resources/famfamfam/icons/time.png +0 -0
- data/resources/famfamfam/icons/time_add.png +0 -0
- data/resources/famfamfam/icons/time_delete.png +0 -0
- data/resources/famfamfam/icons/time_go.png +0 -0
- data/resources/famfamfam/icons/timeline_marker.png +0 -0
- data/resources/famfamfam/icons/transmit.png +0 -0
- data/resources/famfamfam/icons/transmit_add.png +0 -0
- data/resources/famfamfam/icons/transmit_blue.png +0 -0
- data/resources/famfamfam/icons/transmit_delete.png +0 -0
- data/resources/famfamfam/icons/transmit_edit.png +0 -0
- data/resources/famfamfam/icons/transmit_error.png +0 -0
- data/resources/famfamfam/icons/transmit_go.png +0 -0
- data/resources/famfamfam/icons/tux.png +0 -0
- data/resources/famfamfam/icons/user.png +0 -0
- data/resources/famfamfam/icons/user_add.png +0 -0
- data/resources/famfamfam/icons/user_comment.png +0 -0
- data/resources/famfamfam/icons/user_delete.png +0 -0
- data/resources/famfamfam/icons/user_edit.png +0 -0
- data/resources/famfamfam/icons/user_female.png +0 -0
- data/resources/famfamfam/icons/user_go.png +0 -0
- data/resources/famfamfam/icons/user_gray.png +0 -0
- data/resources/famfamfam/icons/user_green.png +0 -0
- data/resources/famfamfam/icons/user_orange.png +0 -0
- data/resources/famfamfam/icons/user_red.png +0 -0
- data/resources/famfamfam/icons/user_suit.png +0 -0
- data/resources/famfamfam/icons/vcard.png +0 -0
- data/resources/famfamfam/icons/vcard_add.png +0 -0
- data/resources/famfamfam/icons/vcard_delete.png +0 -0
- data/resources/famfamfam/icons/vcard_edit.png +0 -0
- data/resources/famfamfam/icons/vector.png +0 -0
- data/resources/famfamfam/icons/vector_add.png +0 -0
- data/resources/famfamfam/icons/vector_delete.png +0 -0
- data/resources/famfamfam/icons/wand.png +0 -0
- data/resources/famfamfam/icons/weather_clouds.png +0 -0
- data/resources/famfamfam/icons/weather_cloudy.png +0 -0
- data/resources/famfamfam/icons/weather_lightning.png +0 -0
- data/resources/famfamfam/icons/weather_rain.png +0 -0
- data/resources/famfamfam/icons/weather_snow.png +0 -0
- data/resources/famfamfam/icons/weather_sun.png +0 -0
- data/resources/famfamfam/icons/webcam.png +0 -0
- data/resources/famfamfam/icons/webcam_add.png +0 -0
- data/resources/famfamfam/icons/webcam_delete.png +0 -0
- data/resources/famfamfam/icons/webcam_error.png +0 -0
- data/resources/famfamfam/icons/world.png +0 -0
- data/resources/famfamfam/icons/world_add.png +0 -0
- data/resources/famfamfam/icons/world_delete.png +0 -0
- data/resources/famfamfam/icons/world_edit.png +0 -0
- data/resources/famfamfam/icons/world_go.png +0 -0
- data/resources/famfamfam/icons/world_link.png +0 -0
- data/resources/famfamfam/icons/wrench.png +0 -0
- data/resources/famfamfam/icons/wrench_orange.png +0 -0
- data/resources/famfamfam/icons/xhtml.png +0 -0
- data/resources/famfamfam/icons/xhtml_add.png +0 -0
- data/resources/famfamfam/icons/xhtml_delete.png +0 -0
- data/resources/famfamfam/icons/xhtml_go.png +0 -0
- data/resources/famfamfam/icons/xhtml_valid.png +0 -0
- data/resources/famfamfam/icons/zoom.png +0 -0
- data/resources/famfamfam/icons/zoom_in.png +0 -0
- data/resources/famfamfam/icons/zoom_out.png +0 -0
- data/resources/famfamfam/readme.html +1495 -0
- data/resources/famfamfam/readme.txt +22 -0
- data/resources/listing.rhtml +68 -0
- data/spec/dir_handler_spec.rb +13 -0
- data/spec/error_handler_spec.rb +13 -0
- data/spec/server_spec.rb +53 -0
- data/spec/spec_helper.rb +8 -0
- 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
|
data/lib/heel/gemspec.rb
ADDED
@@ -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
|
+
|
data/lib/heel/server.rb
ADDED
@@ -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
|
data/lib/heel/version.rb
ADDED
@@ -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>
|