wackamole 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+