wackamole 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. data/.bnsignore +16 -0
  2. data/.gitignore +2 -0
  3. data/History.txt +4 -0
  4. data/README.rdoc +88 -0
  5. data/Rakefile +42 -0
  6. data/aa.rb +25 -0
  7. data/aaa.txt +13 -0
  8. data/bin/wackamole +77 -0
  9. data/lib/app.rb +63 -0
  10. data/lib/controllers/dashboard.rb +30 -0
  11. data/lib/controllers/features.rb +41 -0
  12. data/lib/controllers/logs.rb +49 -0
  13. data/lib/controllers/mission.rb +27 -0
  14. data/lib/controllers/users.rb +41 -0
  15. data/lib/helpers/dashboard_helper.rb +32 -0
  16. data/lib/helpers/features_helper.rb +13 -0
  17. data/lib/helpers/flash_helper.rb +16 -0
  18. data/lib/helpers/logs_helper.rb +116 -0
  19. data/lib/helpers/main_helper.rb +182 -0
  20. data/lib/helpers/mission_helper.rb +59 -0
  21. data/lib/helpers/rails_helper.rb +7 -0
  22. data/lib/wackamole.rb +47 -0
  23. data/lib/wackamole/core_ext/date_time.rb +8 -0
  24. data/lib/wackamole/core_ext/time.rb +9 -0
  25. data/lib/wackamole/models/control.rb +132 -0
  26. data/lib/wackamole/models/feature.rb +74 -0
  27. data/lib/wackamole/models/log.rb +45 -0
  28. data/lib/wackamole/models/mission.rb +164 -0
  29. data/lib/wackamole/models/mole_info.rb +94 -0
  30. data/lib/wackamole/models/search_filter.rb +192 -0
  31. data/lib/wackamole/models/user.rb +46 -0
  32. data/public/favicon.ico +0 -0
  33. data/public/images/.DS_Store +0 -0
  34. data/public/images/browsers/.DS_Store +0 -0
  35. data/public/images/browsers/MSIE 6.png +0 -0
  36. data/public/images/browsers/MSIE 8.0 +0 -0
  37. data/public/images/browsers/MSIE 8.0.png +0 -0
  38. data/public/images/browsers/chrome.png +0 -0
  39. data/public/images/browsers/firefox.png +0 -0
  40. data/public/images/browsers/ie 6.0.png +0 -0
  41. data/public/images/browsers/ie6.jpg +0 -0
  42. data/public/images/browsers/ie7.jpg +0 -0
  43. data/public/images/browsers/ie7.png +0 -0
  44. data/public/images/browsers/msie 6.0.png +0 -0
  45. data/public/images/browsers/msie 7.0.png +0 -0
  46. data/public/images/browsers/opera.jpg +0 -0
  47. data/public/images/browsers/opera.png +0 -0
  48. data/public/images/browsers/safari.jpg +0 -0
  49. data/public/images/browsers/safari.png +0 -0
  50. data/public/images/browsers/unknown_browser.png +0 -0
  51. data/public/images/close.png +0 -0
  52. data/public/images/error.png +0 -0
  53. data/public/images/fade.png +0 -0
  54. data/public/images/fault_big.png +0 -0
  55. data/public/images/fault_small.png +0 -0
  56. data/public/images/feature.png +0 -0
  57. data/public/images/h300.png +0 -0
  58. data/public/images/hori_large.png +0 -0
  59. data/public/images/info_big.png +0 -0
  60. data/public/images/info_small.png +0 -0
  61. data/public/images/loading.gif +0 -0
  62. data/public/images/loading1.gif +0 -0
  63. data/public/images/mole_error.png +0 -0
  64. data/public/images/more.gif +0 -0
  65. data/public/images/next.png +0 -0
  66. data/public/images/perf_big.png +0 -0
  67. data/public/images/perf_small.png +0 -0
  68. data/public/images/powered_by.png +0 -0
  69. data/public/images/prev.png +0 -0
  70. data/public/images/row_fade.png +0 -0
  71. data/public/images/search.png +0 -0
  72. data/public/images/small_logo.png +0 -0
  73. data/public/images/spaceball.gif +0 -0
  74. data/public/images/tick.png +0 -0
  75. data/public/images/users.png +0 -0
  76. data/public/images/wackamole_logo.png +0 -0
  77. data/public/javascripts/.DS_Store +0 -0
  78. data/public/javascripts/application.js +28 -0
  79. data/public/javascripts/g.dot.min.js +7 -0
  80. data/public/javascripts/g.raphael.min.js +7 -0
  81. data/public/javascripts/jit.js +9052 -0
  82. data/public/javascripts/jit.min.js +1 -0
  83. data/public/javascripts/jquery-ui.js +188 -0
  84. data/public/javascripts/jquery.example.js +160 -0
  85. data/public/javascripts/jquery.js +19 -0
  86. data/public/javascripts/jquery.tools.min.js +38 -0
  87. data/public/javascripts/jquery_ba-url.js +9 -0
  88. data/public/javascripts/jquery_min.js +19 -0
  89. data/public/javascripts/jquery_ui_min.js +298 -0
  90. data/public/javascripts/raphael.min.js +7 -0
  91. data/public/stylesheets/tabs-slideshow.css +95 -0
  92. data/public/stylesheets/wackamole.css +684 -0
  93. data/spec/config/bogus_test.yml +3 -0
  94. data/spec/config/test.yml +3 -0
  95. data/spec/core_ext/date_time_spec.rb +8 -0
  96. data/spec/core_ext/time_spec.rb +12 -0
  97. data/spec/data/fixtures.rb +92 -0
  98. data/spec/models/control_spec.rb +98 -0
  99. data/spec/models/feature_spec.rb +52 -0
  100. data/spec/models/log_spec.rb +43 -0
  101. data/spec/models/mission_spec.rb +225 -0
  102. data/spec/models/moled_info_spec.rb +30 -0
  103. data/spec/models/search_filter_spec.rb +151 -0
  104. data/spec/models/user_spec.rb +44 -0
  105. data/spec/spec_helper.rb +14 -0
  106. data/spec/wackamole_spec.rb +20 -0
  107. data/tasks/bones.rake +20 -0
  108. data/tasks/fixtures.rake +13 -0
  109. data/tasks/gem.rake +201 -0
  110. data/tasks/git.rake +40 -0
  111. data/tasks/notes.rake +27 -0
  112. data/tasks/post_load.rake +32 -0
  113. data/tasks/rdoc.rake +54 -0
  114. data/tasks/rubyforge.rake +55 -0
  115. data/tasks/setup.rb +290 -0
  116. data/tasks/spec.rake +54 -0
  117. data/tasks/svn.rake +46 -0
  118. data/views/dashboard/_report.erb +118 -0
  119. data/views/dashboard/index.erb +4 -0
  120. data/views/dashboard/refresh_js.erb +3 -0
  121. data/views/features/_rows.erb +26 -0
  122. data/views/features/filter.js.erb +2 -0
  123. data/views/features/index.erb +24 -0
  124. data/views/features/index.js.erb +2 -0
  125. data/views/layout.erb +47 -0
  126. data/views/logs/_array.erb +12 -0
  127. data/views/logs/_hash.erb +14 -0
  128. data/views/logs/_rows.erb +65 -0
  129. data/views/logs/filter.js.erb +4 -0
  130. data/views/logs/index.erb +13 -0
  131. data/views/logs/index.js.erb +2 -0
  132. data/views/logs/show.erb +66 -0
  133. data/views/mission/_report.erb +49 -0
  134. data/views/mission/index.erb +7 -0
  135. data/views/mission/refresh_js.erb +3 -0
  136. data/views/shared/_filter.erb +63 -0
  137. data/views/shared/_flash.erb +3 -0
  138. data/views/shared/_search.erb +25 -0
  139. data/views/shared/_timestamp.erb +1 -0
  140. data/views/shared/_wait.erb +1 -0
  141. data/views/shared/flash.js.erb +10 -0
  142. data/views/users/_rows.erb +26 -0
  143. data/views/users/filter.js.erb +4 -0
  144. data/views/users/index.erb +24 -0
  145. data/views/users/index.js.erb +2 -0
  146. metadata +347 -0
@@ -0,0 +1,2 @@
1
+ $('#logs').html( '<%= escape_javascript( partial( :'logs/rows' ) ) %>')
2
+ $('p#timestamp').html( "<%=escape_javascript(partial(:'shared/timestamp'))%>" );
@@ -0,0 +1,66 @@
1
+ <p id="info">
2
+ <%=image_tag mole_type_icon( @log['typ'] ), :border => 0 %>
3
+ <p class="title" id="type">
4
+ <%=human_type @log['typ'] %>
5
+ </p>
6
+ <p class="title" id="feature">
7
+ <%=feature_name_for @log['fid'] %>
8
+ </p>
9
+ </p>
10
+
11
+ <div id="info">
12
+ <table class="info" width="100%" cellspacing="0" cellpadding="0" style="">
13
+ <tbody>
14
+ <% if @log['pat'] %>
15
+ <tr>
16
+ <td class="label">Path</td>
17
+ <td><%=@log['pat']%></td>
18
+ </tr>
19
+ <% end %>
20
+ <tr>
21
+ <td class="label">User</td>
22
+ <td><%=user_name_for @log['uid'] %></td>
23
+ </tr>
24
+ <tr>
25
+ <td class="label">Method</td>
26
+ <td><%=@log['met']%></td>
27
+ </tr>
28
+ <tr>
29
+ <td class="label">Url</td>
30
+ <td><%=@log['url']%></td>
31
+ </tr>
32
+ <% if @log['rti'] %>
33
+ <tr>
34
+ <td class="label">Duration</td>
35
+ <td><%="%4.2f secs" % @log['rti']%></td>
36
+ </tr>
37
+ <% end %>
38
+ <tr>
39
+ <td class="label">Software</td>
40
+ <td><%=@log['sof']%></td>
41
+ </tr>
42
+ <% if @log['msg'] %>
43
+ <tr>
44
+ <td class="label" valign="top">Error</td>
45
+ <td><%=truncate( @log['msg'], 300 )%></td>
46
+ </tr>
47
+ <tr>
48
+ <td class="label" valign="top">Stack [<%=@log['sta'].size%>]</td>
49
+ <td><%=partial :'logs/array', :object => @log['sta']%></td>
50
+ </tr>
51
+ <% end %>
52
+ <% if @log['par'] %>
53
+ <tr>
54
+ <td class="label" valign="top">Parameters</td>
55
+ <td><%=partial :'logs/hash', :object => @log['par']%></td>
56
+ </tr>
57
+ <% end %>
58
+ <% if @log['ses'] %>
59
+ <tr>
60
+ <td class="label" valign="top">Session</td>
61
+ <td><%=partial :'logs/hash', :object => @log['ses']%></td>
62
+ </tr>
63
+ <% end %>
64
+ </tbody>
65
+ </table>
66
+ </div>
@@ -0,0 +1,49 @@
1
+ <% if @reports.count == 0 %>
2
+ <div class="doh">
3
+ <p>Unable to find a Rackamole MongoDb database on this connection.</p>
4
+ <p>Make sure you moled database follows this naming convention</p>
5
+ <p>mole_{<i>application name in lower case</i>}_{<i>environment</i>}_mdb</p>
6
+ </div>
7
+ <% else %>
8
+ <% @reports.each do |report| %>
9
+ <div class="mission">
10
+ <p class="app_name"><%= report['app'] %></p>
11
+ <% report['envs'].keys.sort.each do |env| %>
12
+ <div class="environment">
13
+ <div class="env">
14
+ <%= link_to env, "/dashboard/#{report['app']}/#{env}", :class => 'site_link app_link' %>
15
+ </div>
16
+ <div class="details">
17
+ <table border='0' width="100%">
18
+ <% report['envs'][env].each do |type, count| %>
19
+ <% diff = compute_diff( report['app'], env, type, count )%>
20
+ <tr>
21
+ <td class="<%=assign_class( type, count, diff )%>" align="left">
22
+ <%=type.capitalize %>
23
+ </td>
24
+ <td>
25
+ <%=count%>
26
+ </td>
27
+ <td>
28
+ &lsaquo;<%= delta?( diff ) %>&rsaquo;
29
+ </td>
30
+ <% if type != 'features' and count > 0%>
31
+ <td align='right'>
32
+ <%= link_to_remote 'fixed',
33
+ "/mission/fixed/#{report['app']}/#{env}/#{type}",
34
+ :class => "fixed" %>
35
+ </td>
36
+ <% else %>
37
+ <td>
38
+ <p style="width:30px"></p>
39
+ </td>
40
+ <% end %>
41
+ </tr>
42
+ <% end %>
43
+ </table>
44
+ </div>
45
+ </div>
46
+ <% end %>
47
+ </div>
48
+ <% end %>
49
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <p class="title">Mission Control</p>
2
+
3
+ <div id="dash">
4
+ <%= partial :'mission/report' %>
5
+ </div>
6
+
7
+ <%= periodically_call_remote :url => '/mission/refresh', :frequency => @refresh_rate %>
@@ -0,0 +1,3 @@
1
+ $('p#timestamp').html( "<%=escape_javascript(partial(:'shared/timestamp'))%>" );
2
+
3
+ $('div#dash').html( "<%=escape_javascript(partial(:'mission/report'))%>" );
@@ -0,0 +1,63 @@
1
+ <div id="filters">
2
+ <form id="filter_form">
3
+ <fieldset id="submit">
4
+ <label>
5
+ &nbsp;
6
+ <input type="submit" name="commit" value="Filter"/>
7
+ <%= image_tag 'loading.gif', :border => '0', :size => '24x24', :id => 'loading' %>
8
+ </label>
9
+ </fieldset>
10
+
11
+ <fieldset class="inline">
12
+ <label for="time_frame">
13
+ Time range:
14
+ <select id="time_frame" name="filter[time_frame]">
15
+ <%= options_for_select Wackamole::SearchFilter.time_frames, @filter.time_frame %>
16
+ </select>
17
+ </label>
18
+ </fieldset>
19
+
20
+ <fieldset class="inline">
21
+ <label for="type">
22
+ Type:
23
+ <select id="type" name="filter[type]">
24
+ <%= options_for_select Wackamole::SearchFilter.mole_types, @filter.type %>
25
+ </select>
26
+ </label>
27
+ </fieldset>
28
+
29
+ <fieldset class="inline">
30
+ <label for="browser_type">
31
+ Browser:
32
+ <select id="browser_type" name="filter[browser_type]">
33
+ <%= options_for_select Wackamole::SearchFilter.browser_types, @filter.browser_type %>
34
+ </select>
35
+ </label>
36
+ </fieldset>
37
+
38
+ <fieldset class="inline">
39
+ <label for="feature">
40
+ Context:
41
+ <select id="feature" name="filter[feature_id]">
42
+ <%= options_for_select @filter.features, @filter.feature_id %>
43
+ </select>
44
+ </label>
45
+ </fieldset>
46
+ </form>
47
+ </div>
48
+
49
+ <%= partial :'shared/search' %>
50
+
51
+ <script>
52
+ $( function() {
53
+ $('form#filter_form').submit( function() {
54
+ $.ajax( { beforeSend: function(request){ $('#loading' ).show(); },
55
+ complete: function(request){ $('#loading' ).hide(); },
56
+ data: $.param( $(this).serializeArray() ),
57
+ dataType: 'script',
58
+ type: 'post',
59
+ url: '<%=@filter_path%>' });
60
+ return false;
61
+ });
62
+ });
63
+ </script>
@@ -0,0 +1,3 @@
1
+ <% if @flash and !@flash.empty? %>
2
+ <%=(@flash[:error] ? @flash[:error] : @flash[:info]) %>
3
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <div id="search">
2
+ <form id="search_form">
3
+ <input id="search_term" class="search" type="text" size="30" name="search_filter[search_terms]"/>
4
+ <%= image_tag 'loading.gif', :border => 0, :size => "22x22", :id => "search_loader" %>
5
+ <input type="submit" value="Search" style="display: none;" name="commit"/>
6
+ </form>
7
+ </div>
8
+
9
+ <script>
10
+ $(document).ready( function() {
11
+ $('input#search_term').example( 'Search...' );
12
+
13
+ $('form#search_form' ).submit( function() {
14
+ $.ajax( {
15
+ beforeSend: function(request){ $('img#search_loader' ).show(); },
16
+ complete: function(request){ $('img#search_loader' ).hide(); },
17
+ data: $.param( $(this).serializeArray() ),
18
+ dataType: 'script',
19
+ type: 'post',
20
+ url: '<%=@search_path%>'
21
+ });
22
+ return false;
23
+ });
24
+ });
25
+ </script>
@@ -0,0 +1 @@
1
+ <%= @updated_on.strftime( "%m/%d/%y %H:%M:%S") %>
@@ -0,0 +1 @@
1
+ <p style="text-align:center"><%= image_tag "loading1.gif", :border => 0, :size => "64x88" %></p>
@@ -0,0 +1,10 @@
1
+ <% if @flash %>
2
+ $('div.flash').html( "<%=escape_javascript(partial(:'shared/flash'))%>" );
3
+ $('div.flash').show();
4
+ <% if @flash[:error] %>
5
+ $('div.flash').attr( 'class', 'flash flash_error' );
6
+ <% else %>
7
+ $('div.flash').attr( 'class', 'flash flash_info' );
8
+ <% end %>
9
+ $('div.flash').fadeOut( 3000 );
10
+ <% end %>
@@ -0,0 +1,26 @@
1
+ <div class="page_entries">
2
+ <%= page_entries_info @users, :entry_name => 'users' %>
3
+ </div>
4
+
5
+ <div id="content">
6
+ <table border="0" class="logs">
7
+ <thead>
8
+ <tr>
9
+ <th width="25%">Username</th>
10
+ <th align='right' width="5%">Totals</th>
11
+ <tr>
12
+ </thead>
13
+ <tbody>
14
+ <% count=0;@users.each do |row| %>
15
+ <% color = count % 2 == 0 ? 'transparent' : 'transparent url(/images/fade.png) repeat-x' %>
16
+ <tr style="background:<%=color%>">
17
+ <td><b><%=row[:name]%></b></td>
18
+ <td align="right"><b><%=row[:total]%></b></td>
19
+ </tr>
20
+ <% count+=1;end %>
21
+ </tbody>
22
+ </table>
23
+ </div>
24
+ <div class="pages">
25
+ <%= will_paginate @users, :previous_label => "&nbsp;&nbsp;", :next_label => "&nbsp;&nbsp;", :params => { :url => "/users" } %>
26
+ </div>
@@ -0,0 +1,4 @@
1
+ <%= erb :'shared/flash.js', :layout => false %>
2
+
3
+ $('#users').html( '<%= escape_javascript( partial( :'users/rows' ) ) %>')
4
+ $('p#timestamp').html( "<%=escape_javascript(partial(:'shared/timestamp'))%>" );
@@ -0,0 +1,24 @@
1
+ <%= partial :'shared/filter' %>
2
+
3
+ <div id="users">
4
+ <%= partial :'users/rows'%>
5
+ </div>
6
+
7
+ <script>
8
+ $( function() {
9
+ $('a.users').addClass( 'current' );
10
+
11
+ $('a.nav_link').click( function() {
12
+ $("a.nav_link").removeClass( "current" );
13
+ $(this).addClass( 'current' );
14
+ return true;
15
+ });
16
+
17
+ $('.pagination a').live( 'click', function() {
18
+ $("#content").html( '<%=partial :"shared/wait"%>' );
19
+ $.getScript( this.href );
20
+ return false;
21
+ });
22
+ });
23
+ </script>
24
+
@@ -0,0 +1,2 @@
1
+ $('#users').html( '<%= escape_javascript( partial( :'users/_rows' ) ) %>')
2
+ $('p#timestamp').html( "<%=escape_javascript(partial(:'shared/timestamp'))%>" );
metadata ADDED
@@ -0,0 +1,347 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wackamole
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Fernand Galiana
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-20 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mongo
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.18.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: mongo_ext
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.18.1
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: agnostic-will_paginate
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 3.0.0
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: memcache-client
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.5.0
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: mongo_rack
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 0.0.1
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: main
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 4.2.0
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: sinatra
77
+ type: :runtime
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 0.9.4
84
+ version:
85
+ - !ruby/object:Gem::Dependency
86
+ name: mongo_rack
87
+ type: :runtime
88
+ version_requirement:
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.3
94
+ version:
95
+ - !ruby/object:Gem::Dependency
96
+ name: bones
97
+ type: :development
98
+ version_requirement:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.5.1
104
+ version:
105
+ description: |-
106
+ This is a companion sinatra app for the Rackamole framework which provides for recording
107
+ interactions with your rack applications. Wackamole allows you to view, filter and drilldown
108
+ on the collected moled information, hence allowing you to observe your
109
+ applications live in the wild...
110
+ email: fernand.galiana@gmail.com
111
+ executables:
112
+ - wackamole
113
+ extensions: []
114
+
115
+ extra_rdoc_files:
116
+ - views/dashboard/_report.erb
117
+ - views/dashboard/index.erb
118
+ - views/dashboard/refresh_js.erb
119
+ - views/features/_rows.erb
120
+ - views/features/filter.js.erb
121
+ - views/features/index.erb
122
+ - views/features/index.js.erb
123
+ - views/layout.erb
124
+ - views/logs/_array.erb
125
+ - views/logs/_hash.erb
126
+ - views/logs/_rows.erb
127
+ - views/logs/filter.js.erb
128
+ - views/logs/index.erb
129
+ - views/logs/index.js.erb
130
+ - views/logs/show.erb
131
+ - views/mission/_report.erb
132
+ - views/mission/index.erb
133
+ - views/mission/refresh_js.erb
134
+ - views/shared/_filter.erb
135
+ - views/shared/_flash.erb
136
+ - views/shared/_search.erb
137
+ - views/shared/_timestamp.erb
138
+ - views/shared/_wait.erb
139
+ - views/shared/flash.js.erb
140
+ - views/users/_rows.erb
141
+ - views/users/filter.js.erb
142
+ - views/users/index.erb
143
+ - views/users/index.js.erb
144
+ files:
145
+ - .bnsignore
146
+ - .gitignore
147
+ - History.txt
148
+ - README.rdoc
149
+ - Rakefile
150
+ - aa.rb
151
+ - aaa.txt
152
+ - bin/wackamole
153
+ - lib/app.rb
154
+ - lib/controllers/dashboard.rb
155
+ - lib/controllers/features.rb
156
+ - lib/controllers/logs.rb
157
+ - lib/controllers/mission.rb
158
+ - lib/controllers/users.rb
159
+ - lib/helpers/dashboard_helper.rb
160
+ - lib/helpers/features_helper.rb
161
+ - lib/helpers/flash_helper.rb
162
+ - lib/helpers/logs_helper.rb
163
+ - lib/helpers/main_helper.rb
164
+ - lib/helpers/mission_helper.rb
165
+ - lib/helpers/rails_helper.rb
166
+ - lib/wackamole.rb
167
+ - lib/wackamole/core_ext/date_time.rb
168
+ - lib/wackamole/core_ext/time.rb
169
+ - lib/wackamole/models/control.rb
170
+ - lib/wackamole/models/feature.rb
171
+ - lib/wackamole/models/log.rb
172
+ - lib/wackamole/models/mission.rb
173
+ - lib/wackamole/models/mole_info.rb
174
+ - lib/wackamole/models/search_filter.rb
175
+ - lib/wackamole/models/user.rb
176
+ - public/favicon.ico
177
+ - public/images/.DS_Store
178
+ - public/images/browsers/.DS_Store
179
+ - public/images/browsers/MSIE 6.0.psd
180
+ - public/images/browsers/MSIE 6.png
181
+ - public/images/browsers/MSIE 7.0.psd
182
+ - public/images/browsers/MSIE 8.0
183
+ - public/images/browsers/MSIE 8.0.png
184
+ - public/images/browsers/chrome.png
185
+ - public/images/browsers/chrome.psd
186
+ - public/images/browsers/firefox.png
187
+ - public/images/browsers/firefox.psd
188
+ - public/images/browsers/ie 6.0.png
189
+ - public/images/browsers/ie 6.psd
190
+ - public/images/browsers/ie6.jpg
191
+ - public/images/browsers/ie7.0.psd
192
+ - public/images/browsers/ie7.jpg
193
+ - public/images/browsers/ie7.png
194
+ - public/images/browsers/ie7.psd
195
+ - public/images/browsers/msie 6.0.png
196
+ - public/images/browsers/msie 7.0.png
197
+ - public/images/browsers/opera.jpg
198
+ - public/images/browsers/opera.png
199
+ - public/images/browsers/opera.psd
200
+ - public/images/browsers/safari.jpg
201
+ - public/images/browsers/safari.png
202
+ - public/images/browsers/safari.psd
203
+ - public/images/browsers/unknown_browser.png
204
+ - public/images/browsers/unknown_browser.psd
205
+ - public/images/close.png
206
+ - public/images/error.png
207
+ - public/images/error.psd
208
+ - public/images/fade.png
209
+ - public/images/fault_big.png
210
+ - public/images/fault_big.psd
211
+ - public/images/fault_small.png
212
+ - public/images/fault_small.psd
213
+ - public/images/feature.png
214
+ - public/images/feature.psd
215
+ - public/images/h300.png
216
+ - public/images/hori_large.png
217
+ - public/images/info_big.png
218
+ - public/images/info_big.psd
219
+ - public/images/info_small.png
220
+ - public/images/info_small.psd
221
+ - public/images/loading.gif
222
+ - public/images/loading1.gif
223
+ - public/images/mole_error.png
224
+ - public/images/mole_error.psd
225
+ - public/images/more.gif
226
+ - public/images/next.png
227
+ - public/images/next.psd
228
+ - public/images/perf_big.png
229
+ - public/images/perf_big.psd
230
+ - public/images/perf_small.png
231
+ - public/images/perf_small.psd
232
+ - public/images/powered_by.png
233
+ - public/images/powered_by.psd
234
+ - public/images/prev.png
235
+ - public/images/prev.psd
236
+ - public/images/row_fade.png
237
+ - public/images/search.png
238
+ - public/images/search.psd
239
+ - public/images/small_logo.png
240
+ - public/images/spaceball.gif
241
+ - public/images/tick.png
242
+ - public/images/users.png
243
+ - public/images/users.psd
244
+ - public/images/wackamole_logo.png
245
+ - public/images/wackamole_logo.psd
246
+ - public/javascripts/.DS_Store
247
+ - public/javascripts/application.js
248
+ - public/javascripts/g.dot.min.js
249
+ - public/javascripts/g.raphael.min.js
250
+ - public/javascripts/jit.js
251
+ - public/javascripts/jit.min.js
252
+ - public/javascripts/jquery-ui.js
253
+ - public/javascripts/jquery.example.js
254
+ - public/javascripts/jquery.js
255
+ - public/javascripts/jquery.tools.min.js
256
+ - public/javascripts/jquery_ba-url.js
257
+ - public/javascripts/jquery_min.js
258
+ - public/javascripts/jquery_ui_min.js
259
+ - public/javascripts/raphael.min.js
260
+ - public/stylesheets/tabs-slideshow.css
261
+ - public/stylesheets/wackamole.css
262
+ - spec/config/bogus_test.yml
263
+ - spec/config/test.yml
264
+ - spec/core_ext/date_time_spec.rb
265
+ - spec/core_ext/time_spec.rb
266
+ - spec/data/fixtures.rb
267
+ - spec/models/control_spec.rb
268
+ - spec/models/feature_spec.rb
269
+ - spec/models/log_spec.rb
270
+ - spec/models/mission_spec.rb
271
+ - spec/models/moled_info_spec.rb
272
+ - spec/models/search_filter_spec.rb
273
+ - spec/models/user_spec.rb
274
+ - spec/spec_helper.rb
275
+ - spec/wackamole_spec.rb
276
+ - tasks/bones.rake
277
+ - tasks/fixtures.rake
278
+ - tasks/gem.rake
279
+ - tasks/git.rake
280
+ - tasks/notes.rake
281
+ - tasks/post_load.rake
282
+ - tasks/rdoc.rake
283
+ - tasks/rubyforge.rake
284
+ - tasks/setup.rb
285
+ - tasks/spec.rake
286
+ - tasks/svn.rake
287
+ - views/dashboard/_report.erb
288
+ - views/dashboard/index.erb
289
+ - views/dashboard/refresh_js.erb
290
+ - views/features/_rows.erb
291
+ - views/features/filter.js.erb
292
+ - views/features/index.erb
293
+ - views/features/index.js.erb
294
+ - views/layout.erb
295
+ - views/logs/_array.erb
296
+ - views/logs/_hash.erb
297
+ - views/logs/_rows.erb
298
+ - views/logs/filter.js.erb
299
+ - views/logs/index.erb
300
+ - views/logs/index.js.erb
301
+ - views/logs/show.erb
302
+ - views/mission/_report.erb
303
+ - views/mission/index.erb
304
+ - views/mission/refresh_js.erb
305
+ - views/shared/_filter.erb
306
+ - views/shared/_flash.erb
307
+ - views/shared/_search.erb
308
+ - views/shared/_timestamp.erb
309
+ - views/shared/_wait.erb
310
+ - views/shared/flash.js.erb
311
+ - views/users/_rows.erb
312
+ - views/users/filter.js.erb
313
+ - views/users/index.erb
314
+ - views/users/index.js.erb
315
+ has_rdoc: true
316
+ homepage: http://www.rackamole.com
317
+ licenses: []
318
+
319
+ post_install_message:
320
+ rdoc_options:
321
+ - --main
322
+ - README.rdoc
323
+ require_paths:
324
+ - lib
325
+ required_ruby_version: !ruby/object:Gem::Requirement
326
+ requirements:
327
+ - - ">="
328
+ - !ruby/object:Gem::Version
329
+ version: "0"
330
+ version:
331
+ required_rubygems_version: !ruby/object:Gem::Requirement
332
+ requirements:
333
+ - - ">="
334
+ - !ruby/object:Gem::Version
335
+ version: "0"
336
+ version:
337
+ requirements: []
338
+
339
+ rubyforge_project: !binary |
340
+ AA==
341
+
342
+ rubygems_version: 1.3.5
343
+ signing_key:
344
+ specification_version: 3
345
+ summary: A companion web app to Rackamole
346
+ test_files: []
347
+