mole 1.0.12 → 1.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. metadata +24 -146
  2. data/History.txt +0 -17
  3. data/Manifest.txt +0 -132
  4. data/README.txt +0 -216
  5. data/Rakefile +0 -46
  6. data/config/database.yml +0 -21
  7. data/config/test_database.yml +0 -69
  8. data/lib/mole.rb +0 -260
  9. data/lib/mole/db/migrate.rb +0 -90
  10. data/lib/mole/e_mole.rb +0 -75
  11. data/lib/mole/logger.rb +0 -134
  12. data/lib/mole/models/mole_feature.rb +0 -58
  13. data/lib/mole/models/mole_log.rb +0 -31
  14. data/lib/mole/module.rb +0 -292
  15. data/lib/mole/moler.rb +0 -71
  16. data/lib/mole/utils/frameworks.rb +0 -53
  17. data/lib/mole/version.rb +0 -15
  18. data/samples/merbapp/README +0 -14
  19. data/samples/merbapp/Rakefile +0 -124
  20. data/samples/merbapp/app/controllers/application.rb +0 -3
  21. data/samples/merbapp/app/controllers/exceptions.rb +0 -13
  22. data/samples/merbapp/app/controllers/moled.rb +0 -25
  23. data/samples/merbapp/app/helpers/global_helper.rb +0 -5
  24. data/samples/merbapp/app/mailers/views/layout/application.html.erb +0 -1
  25. data/samples/merbapp/app/mailers/views/layout/application.text.erb +0 -1
  26. data/samples/merbapp/app/parts/views/layout/application.html.erb +0 -1
  27. data/samples/merbapp/app/views/exceptions/internal_server_error.html.erb +0 -216
  28. data/samples/merbapp/app/views/exceptions/not_acceptable.html.erb +0 -38
  29. data/samples/merbapp/app/views/exceptions/not_found.html.erb +0 -40
  30. data/samples/merbapp/app/views/layout/application.html.erb +0 -11
  31. data/samples/merbapp/app/views/moled/index.html.erb +0 -5
  32. data/samples/merbapp/app/views/moled/result.html.erb +0 -5
  33. data/samples/merbapp/config/boot.rb +0 -11
  34. data/samples/merbapp/config/dependencies.rb +0 -41
  35. data/samples/merbapp/config/environments/development.rb +0 -1
  36. data/samples/merbapp/config/environments/production.rb +0 -1
  37. data/samples/merbapp/config/environments/test.rb +0 -1
  38. data/samples/merbapp/config/merb.yml +0 -82
  39. data/samples/merbapp/config/merb_init.rb +0 -26
  40. data/samples/merbapp/config/mole_config.rb +0 -33
  41. data/samples/merbapp/config/router.rb +0 -38
  42. data/samples/merbapp/config/upload.conf +0 -0
  43. data/samples/merbapp/public/images/merb.jpg +0 -0
  44. data/samples/merbapp/public/merb.fcgi +0 -6
  45. data/samples/merbapp/public/stylesheets/master.css +0 -119
  46. data/samples/merbapp/script/destroy +0 -32
  47. data/samples/merbapp/script/generate +0 -32
  48. data/samples/merbapp/script/stop_merb +0 -13
  49. data/samples/merbapp/spec/spec_helper.rb +0 -15
  50. data/samples/merbapp/test/test_helper.rb +0 -14
  51. data/samples/railsapp/README +0 -14
  52. data/samples/railsapp/Rakefile +0 -10
  53. data/samples/railsapp/app/controllers/application.rb +0 -13
  54. data/samples/railsapp/app/controllers/moled_controller.rb +0 -23
  55. data/samples/railsapp/app/helpers/application_helper.rb +0 -3
  56. data/samples/railsapp/app/views/moled/index.html.erb +0 -5
  57. data/samples/railsapp/app/views/moled/result.html.erb +0 -5
  58. data/samples/railsapp/config/boot.rb +0 -109
  59. data/samples/railsapp/config/database.yml +0 -13
  60. data/samples/railsapp/config/environment.rb +0 -59
  61. data/samples/railsapp/config/environments/development.rb +0 -18
  62. data/samples/railsapp/config/environments/production.rb +0 -20
  63. data/samples/railsapp/config/environments/test.rb +0 -22
  64. data/samples/railsapp/config/initializers/inflections.rb +0 -10
  65. data/samples/railsapp/config/initializers/mime_types.rb +0 -5
  66. data/samples/railsapp/config/initializers/mole.rb +0 -10
  67. data/samples/railsapp/config/moles/mole_config.rb +0 -44
  68. data/samples/railsapp/config/routes.rb +0 -35
  69. data/samples/railsapp/doc/README_FOR_APP +0 -2
  70. data/samples/railsapp/public/.htaccess +0 -40
  71. data/samples/railsapp/public/404.html +0 -30
  72. data/samples/railsapp/public/422.html +0 -30
  73. data/samples/railsapp/public/500.html +0 -30
  74. data/samples/railsapp/public/dispatch.cgi +0 -10
  75. data/samples/railsapp/public/dispatch.fcgi +0 -24
  76. data/samples/railsapp/public/dispatch.rb +0 -10
  77. data/samples/railsapp/public/favicon.ico +0 -0
  78. data/samples/railsapp/public/images/rails.png +0 -0
  79. data/samples/railsapp/public/javascripts/application.js +0 -2
  80. data/samples/railsapp/public/javascripts/controls.js +0 -963
  81. data/samples/railsapp/public/javascripts/dragdrop.js +0 -972
  82. data/samples/railsapp/public/javascripts/effects.js +0 -1120
  83. data/samples/railsapp/public/javascripts/prototype.js +0 -4225
  84. data/samples/railsapp/public/robots.txt +0 -5
  85. data/samples/railsapp/script/about +0 -3
  86. data/samples/railsapp/script/console +0 -3
  87. data/samples/railsapp/script/destroy +0 -3
  88. data/samples/railsapp/script/generate +0 -3
  89. data/samples/railsapp/script/performance/benchmarker +0 -3
  90. data/samples/railsapp/script/performance/profiler +0 -3
  91. data/samples/railsapp/script/performance/request +0 -3
  92. data/samples/railsapp/script/plugin +0 -3
  93. data/samples/railsapp/script/process/inspector +0 -3
  94. data/samples/railsapp/script/process/reaper +0 -3
  95. data/samples/railsapp/script/process/spawner +0 -3
  96. data/samples/railsapp/script/runner +0 -3
  97. data/samples/railsapp/script/server +0 -3
  98. data/samples/railsapp/test/test_helper.rb +0 -38
  99. data/samples/rubyapp/README +0 -22
  100. data/samples/rubyapp/bin/ruby_app +0 -35
  101. data/samples/rubyapp/config/mole_conf.rb +0 -31
  102. data/samples/rubyapp/lib/fred.rb +0 -22
  103. data/spec/config/auto_mole_config.rb +0 -26
  104. data/spec/config/mole_config.rb +0 -0
  105. data/spec/config/moles/fred_config.rb +0 -0
  106. data/spec/data/blee.rb +0 -64
  107. data/spec/db/migrate_spec.rb +0 -19
  108. data/spec/emole_spec.rb +0 -43
  109. data/spec/logger_spec.rb +0 -56
  110. data/spec/models/mole_feature_spec.rb +0 -48
  111. data/spec/models/mole_log_spec.rb +0 -62
  112. data/spec/module_spec.rb +0 -229
  113. data/spec/mole_spec.rb +0 -135
  114. data/spec/moler_spec.rb +0 -77
  115. data/spec/spec_helper.rb +0 -76
  116. data/spec/utils/framework_spec.rb +0 -99
  117. data/tasks/ann.rake +0 -76
  118. data/tasks/annotations.rake +0 -22
  119. data/tasks/doc.rake +0 -48
  120. data/tasks/gem.rake +0 -110
  121. data/tasks/manifest.rake +0 -49
  122. data/tasks/mole.rake +0 -115
  123. data/tasks/post_load.rake +0 -26
  124. data/tasks/rubyforge.rake +0 -57
  125. data/tasks/setup.rb +0 -227
  126. data/tasks/spec.rake +0 -54
  127. data/tasks/svn.rake +0 -44
  128. data/tasks/test.rake +0 -38
  129. data/templates/mole/e_mole/exception_alerts.rhtml +0 -14
  130. data/templates/mole/e_mole/feature_alerts.rhtml +0 -11
  131. data/templates/mole/e_mole/perf_alerts.rhtml +0 -12
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mole
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.12
4
+ version: 1.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fernand Galiana
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-19 00:00:00 -06:00
12
+ date: 2009-11-04 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -18,9 +18,9 @@ dependencies:
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ">="
21
+ - - ~>
22
22
  - !ruby/object:Gem::Version
23
- version: 0.7.1
23
+ version: 1.2.2
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
@@ -28,9 +28,19 @@ dependencies:
28
28
  version_requirement:
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.2
33
+ version: 2.3.2
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: twitter4r
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 0.3.0
34
44
  version:
35
45
  description: A flexible way to track user's interactions within your ruby web applications
36
46
  email: fernand@liquidrail.com
@@ -38,146 +48,14 @@ executables:
38
48
  - molify
39
49
  extensions: []
40
50
 
41
- extra_rdoc_files:
42
- - History.txt
43
- - README.txt
44
- - bin/molify
45
- - samples/railsapp/public/robots.txt
46
- files:
47
- - History.txt
48
- - Manifest.txt
49
- - README.txt
50
- - Rakefile
51
- - bin/molify
52
- - config/database.yml
53
- - config/test_database.yml
54
- - lib/mole.rb
55
- - lib/mole/db/migrate.rb
56
- - lib/mole/e_mole.rb
57
- - lib/mole/logger.rb
58
- - lib/mole/models/mole_feature.rb
59
- - lib/mole/models/mole_log.rb
60
- - lib/mole/module.rb
61
- - lib/mole/moler.rb
62
- - lib/mole/utils/frameworks.rb
63
- - lib/mole/version.rb
64
- - samples/merbapp/README
65
- - samples/merbapp/Rakefile
66
- - samples/merbapp/app/controllers/application.rb
67
- - samples/merbapp/app/controllers/exceptions.rb
68
- - samples/merbapp/app/controllers/moled.rb
69
- - samples/merbapp/app/helpers/global_helper.rb
70
- - samples/merbapp/app/mailers/views/layout/application.html.erb
71
- - samples/merbapp/app/mailers/views/layout/application.text.erb
72
- - samples/merbapp/app/parts/views/layout/application.html.erb
73
- - samples/merbapp/app/views/exceptions/internal_server_error.html.erb
74
- - samples/merbapp/app/views/exceptions/not_acceptable.html.erb
75
- - samples/merbapp/app/views/exceptions/not_found.html.erb
76
- - samples/merbapp/app/views/layout/application.html.erb
77
- - samples/merbapp/app/views/moled/index.html.erb
78
- - samples/merbapp/app/views/moled/result.html.erb
79
- - samples/merbapp/config/boot.rb
80
- - samples/merbapp/config/dependencies.rb
81
- - samples/merbapp/config/environments/development.rb
82
- - samples/merbapp/config/environments/production.rb
83
- - samples/merbapp/config/environments/test.rb
84
- - samples/merbapp/config/merb.yml
85
- - samples/merbapp/config/merb_init.rb
86
- - samples/merbapp/config/mole_config.rb
87
- - samples/merbapp/config/router.rb
88
- - samples/merbapp/config/upload.conf
89
- - samples/merbapp/public/images/merb.jpg
90
- - samples/merbapp/public/merb.fcgi
91
- - samples/merbapp/public/stylesheets/master.css
92
- - samples/merbapp/script/destroy
93
- - samples/merbapp/script/generate
94
- - samples/merbapp/script/stop_merb
95
- - samples/merbapp/spec/spec_helper.rb
96
- - samples/merbapp/test/test_helper.rb
97
- - samples/railsapp/README
98
- - samples/railsapp/Rakefile
99
- - samples/railsapp/app/controllers/application.rb
100
- - samples/railsapp/app/controllers/moled_controller.rb
101
- - samples/railsapp/app/helpers/application_helper.rb
102
- - samples/railsapp/app/views/moled/index.html.erb
103
- - samples/railsapp/app/views/moled/result.html.erb
104
- - samples/railsapp/config/boot.rb
105
- - samples/railsapp/config/database.yml
106
- - samples/railsapp/config/environment.rb
107
- - samples/railsapp/config/environments/development.rb
108
- - samples/railsapp/config/environments/production.rb
109
- - samples/railsapp/config/environments/test.rb
110
- - samples/railsapp/config/initializers/inflections.rb
111
- - samples/railsapp/config/initializers/mime_types.rb
112
- - samples/railsapp/config/initializers/mole.rb
113
- - samples/railsapp/config/moles/mole_config.rb
114
- - samples/railsapp/config/routes.rb
115
- - samples/railsapp/doc/README_FOR_APP
116
- - samples/railsapp/public/.htaccess
117
- - samples/railsapp/public/404.html
118
- - samples/railsapp/public/422.html
119
- - samples/railsapp/public/500.html
120
- - samples/railsapp/public/dispatch.cgi
121
- - samples/railsapp/public/dispatch.fcgi
122
- - samples/railsapp/public/dispatch.rb
123
- - samples/railsapp/public/favicon.ico
124
- - samples/railsapp/public/images/rails.png
125
- - samples/railsapp/public/javascripts/application.js
126
- - samples/railsapp/public/javascripts/controls.js
127
- - samples/railsapp/public/javascripts/dragdrop.js
128
- - samples/railsapp/public/javascripts/effects.js
129
- - samples/railsapp/public/javascripts/prototype.js
130
- - samples/railsapp/public/robots.txt
131
- - samples/railsapp/script/about
132
- - samples/railsapp/script/console
133
- - samples/railsapp/script/destroy
134
- - samples/railsapp/script/generate
135
- - samples/railsapp/script/performance/benchmarker
136
- - samples/railsapp/script/performance/profiler
137
- - samples/railsapp/script/performance/request
138
- - samples/railsapp/script/plugin
139
- - samples/railsapp/script/process/inspector
140
- - samples/railsapp/script/process/reaper
141
- - samples/railsapp/script/process/spawner
142
- - samples/railsapp/script/runner
143
- - samples/railsapp/script/server
144
- - samples/railsapp/test/test_helper.rb
145
- - samples/rubyapp/README
146
- - samples/rubyapp/bin/ruby_app
147
- - samples/rubyapp/config/mole_conf.rb
148
- - samples/rubyapp/lib/fred.rb
149
- - spec/config/auto_mole_config.rb
150
- - spec/config/mole_config.rb
151
- - spec/config/moles/fred_config.rb
152
- - spec/data/blee.rb
153
- - spec/db/migrate_spec.rb
154
- - spec/emole_spec.rb
155
- - spec/logger_spec.rb
156
- - spec/models/mole_feature_spec.rb
157
- - spec/models/mole_log_spec.rb
158
- - spec/module_spec.rb
159
- - spec/mole_spec.rb
160
- - spec/moler_spec.rb
161
- - spec/spec_helper.rb
162
- - spec/utils/framework_spec.rb
163
- - tasks/ann.rake
164
- - tasks/annotations.rake
165
- - tasks/doc.rake
166
- - tasks/gem.rake
167
- - tasks/manifest.rake
168
- - tasks/mole.rake
169
- - tasks/post_load.rake
170
- - tasks/rubyforge.rake
171
- - tasks/setup.rb
172
- - tasks/spec.rake
173
- - tasks/svn.rake
174
- - tasks/test.rake
175
- - templates/mole/e_mole/exception_alerts.rhtml
176
- - templates/mole/e_mole/feature_alerts.rhtml
177
- - templates/mole/e_mole/perf_alerts.rhtml
178
- - test/test_mole.rb
51
+ extra_rdoc_files: []
52
+
53
+ files: []
54
+
179
55
  has_rdoc: true
180
56
  homepage: http://mole.rubyforge.org
57
+ licenses: []
58
+
181
59
  post_install_message:
182
60
  rdoc_options:
183
61
  - --main
@@ -199,9 +77,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
77
  requirements: []
200
78
 
201
79
  rubyforge_project: mole
202
- rubygems_version: 1.2.0
80
+ rubygems_version: 1.3.5
203
81
  signing_key:
204
- specification_version: 2
82
+ specification_version: 3
205
83
  summary: A flexible way to track user's interactions within your ruby web applications
206
84
  test_files:
207
85
  - test/test_mole.rb
@@ -1,17 +0,0 @@
1
- == 1.0.0 / 2008-02-04
2
-
3
- * 1 Initial drop
4
- * Converted from rails plugin into gem
5
- * Retrofited to work with pure ruby, merb and rails env
6
-
7
- == 1.0.1 / 2008-02-04
8
-
9
- * 1 Documentation enhancements
10
-
11
- == 1.0.2 / 2008-02-04
12
-
13
- * 1 Added Snitch support
14
-
15
- == 1.0.3 / 2008-02-05
16
-
17
- * 1 Bug Fixes
@@ -1,132 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- README.txt
4
- Rakefile
5
- bin/molify
6
- config/database.yml
7
- config/test_database.yml
8
- lib/mole.rb
9
- lib/mole/db/migrate.rb
10
- lib/mole/e_mole.rb
11
- lib/mole/logger.rb
12
- lib/mole/models/mole_feature.rb
13
- lib/mole/models/mole_log.rb
14
- lib/mole/module.rb
15
- lib/mole/moler.rb
16
- lib/mole/utils/frameworks.rb
17
- lib/mole/version.rb
18
- samples/merbapp/README
19
- samples/merbapp/Rakefile
20
- samples/merbapp/app/controllers/application.rb
21
- samples/merbapp/app/controllers/exceptions.rb
22
- samples/merbapp/app/controllers/moled.rb
23
- samples/merbapp/app/helpers/global_helper.rb
24
- samples/merbapp/app/mailers/views/layout/application.html.erb
25
- samples/merbapp/app/mailers/views/layout/application.text.erb
26
- samples/merbapp/app/parts/views/layout/application.html.erb
27
- samples/merbapp/app/views/exceptions/internal_server_error.html.erb
28
- samples/merbapp/app/views/exceptions/not_acceptable.html.erb
29
- samples/merbapp/app/views/exceptions/not_found.html.erb
30
- samples/merbapp/app/views/layout/application.html.erb
31
- samples/merbapp/app/views/moled/index.html.erb
32
- samples/merbapp/app/views/moled/result.html.erb
33
- samples/merbapp/config/boot.rb
34
- samples/merbapp/config/dependencies.rb
35
- samples/merbapp/config/environments/development.rb
36
- samples/merbapp/config/environments/production.rb
37
- samples/merbapp/config/environments/test.rb
38
- samples/merbapp/config/merb.yml
39
- samples/merbapp/config/merb_init.rb
40
- samples/merbapp/config/mole_config.rb
41
- samples/merbapp/config/router.rb
42
- samples/merbapp/config/upload.conf
43
- samples/merbapp/public/images/merb.jpg
44
- samples/merbapp/public/merb.fcgi
45
- samples/merbapp/public/stylesheets/master.css
46
- samples/merbapp/script/destroy
47
- samples/merbapp/script/generate
48
- samples/merbapp/script/stop_merb
49
- samples/merbapp/spec/spec_helper.rb
50
- samples/merbapp/test/test_helper.rb
51
- samples/railsapp/README
52
- samples/railsapp/Rakefile
53
- samples/railsapp/app/controllers/application.rb
54
- samples/railsapp/app/controllers/moled_controller.rb
55
- samples/railsapp/app/helpers/application_helper.rb
56
- samples/railsapp/app/views/moled/index.html.erb
57
- samples/railsapp/app/views/moled/result.html.erb
58
- samples/railsapp/config/boot.rb
59
- samples/railsapp/config/database.yml
60
- samples/railsapp/config/environment.rb
61
- samples/railsapp/config/environments/development.rb
62
- samples/railsapp/config/environments/production.rb
63
- samples/railsapp/config/environments/test.rb
64
- samples/railsapp/config/initializers/inflections.rb
65
- samples/railsapp/config/initializers/mime_types.rb
66
- samples/railsapp/config/initializers/mole.rb
67
- samples/railsapp/config/moles/mole_config.rb
68
- samples/railsapp/config/routes.rb
69
- samples/railsapp/doc/README_FOR_APP
70
- samples/railsapp/public/.htaccess
71
- samples/railsapp/public/404.html
72
- samples/railsapp/public/422.html
73
- samples/railsapp/public/500.html
74
- samples/railsapp/public/dispatch.cgi
75
- samples/railsapp/public/dispatch.fcgi
76
- samples/railsapp/public/dispatch.rb
77
- samples/railsapp/public/favicon.ico
78
- samples/railsapp/public/images/rails.png
79
- samples/railsapp/public/javascripts/application.js
80
- samples/railsapp/public/javascripts/controls.js
81
- samples/railsapp/public/javascripts/dragdrop.js
82
- samples/railsapp/public/javascripts/effects.js
83
- samples/railsapp/public/javascripts/prototype.js
84
- samples/railsapp/public/robots.txt
85
- samples/railsapp/script/about
86
- samples/railsapp/script/console
87
- samples/railsapp/script/destroy
88
- samples/railsapp/script/generate
89
- samples/railsapp/script/performance/benchmarker
90
- samples/railsapp/script/performance/profiler
91
- samples/railsapp/script/performance/request
92
- samples/railsapp/script/plugin
93
- samples/railsapp/script/process/inspector
94
- samples/railsapp/script/process/reaper
95
- samples/railsapp/script/process/spawner
96
- samples/railsapp/script/runner
97
- samples/railsapp/script/server
98
- samples/railsapp/test/test_helper.rb
99
- samples/rubyapp/README
100
- samples/rubyapp/bin/ruby_app
101
- samples/rubyapp/config/mole_conf.rb
102
- samples/rubyapp/lib/fred.rb
103
- spec/config/auto_mole_config.rb
104
- spec/config/mole_config.rb
105
- spec/config/moles/fred_config.rb
106
- spec/data/blee.rb
107
- spec/db/migrate_spec.rb
108
- spec/emole_spec.rb
109
- spec/logger_spec.rb
110
- spec/models/mole_feature_spec.rb
111
- spec/models/mole_log_spec.rb
112
- spec/module_spec.rb
113
- spec/mole_spec.rb
114
- spec/moler_spec.rb
115
- spec/spec_helper.rb
116
- spec/utils/framework_spec.rb
117
- tasks/ann.rake
118
- tasks/annotations.rake
119
- tasks/doc.rake
120
- tasks/gem.rake
121
- tasks/manifest.rake
122
- tasks/mole.rake
123
- tasks/post_load.rake
124
- tasks/rubyforge.rake
125
- tasks/setup.rb
126
- tasks/spec.rake
127
- tasks/svn.rake
128
- tasks/test.rake
129
- templates/mole/e_mole/exception_alerts.rhtml
130
- templates/mole/e_mole/feature_alerts.rhtml
131
- templates/mole/e_mole/perf_alerts.rhtml
132
- test/test_mole.rb
data/README.txt DELETED
@@ -1,216 +0,0 @@
1
- The MOle
2
- by Fernand Galiana
3
- liquidrail.com
4
-
5
- == DESCRIPTION:
6
-
7
- The MOle allows you to track user's interactions with your ruby application and closely monitors
8
- how your customers are using your application. This is a must cheaper way than to hire a monitoring
9
- service and produces much more detailed information on your application behavior and usage. To boot
10
- your managers will love you !
11
-
12
- Whether you are releasing a new application or improving on an old one, it is always a good thing
13
- to know if anyone is using your application and if they are, how they are using it.
14
- What features are your users most fond of and which features find their way into the abyss?
15
- Using the MOle you'll be able to rapidly assess whether or not your application is a hit and if
16
- your coolest features are thought as such by your users. You will be able to elegantly record user
17
- interactions and leverage these findings for the next iteration of your application.
18
-
19
- The MOle was initialy released as a Rails plugin, but we found the behavior usefull in other types
20
- of projects such as Merb or straight up ruby applications, and decided to re-release it as a gem
21
- instead.
22
-
23
- == PROJECT INFORMATION
24
-
25
- * Developer: Fernand Galiana [liquidrail.com]
26
- * Forum: http://groups.google.com/group/mole-plugin
27
- * Home: mole.rubyforge.org
28
- * Svn: svn://rubyforge.org/var/svn/mole/mole/trunk
29
- * Git: git://github.com/derailed/mole.git
30
- * Snitch Svn: svn://rubyforge.org/var/svn/mole/snitch/trunk
31
- * Examples: svn://rubyforge.org/var/svn/mole/samples
32
-
33
- == FEATURES:
34
-
35
- The MOle allows you to easily
36
-
37
- * Trap method calls within your ruby application. You can use the MOle with either a straight ruby
38
- application, Rails or Merb. The MOle allows you to inject aspects across various method calls.
39
- You are in full control on how and where to trap the calls and the arguments you want to record.
40
- 'Moled' methods are not limited to controller's actions, you can also mole any third party or library methods.
41
-
42
- * Single configuration file. You won't have to sprinkle MOle code all over your application.
43
- The MOle instructions reside in a single file easy to manage and maintain.
44
-
45
- * Trap and surface uncaught exceptions in one easy call. The MOle will watch your execution stack
46
- and alert you when an unexpected exception is encountered
47
-
48
- * Trap and surface performance bottle neck in your ruby application in one easy call. You can
49
- specify a performance threshold within the MOle configuration file. Any methods taking longer
50
- than the specified threshold will trip an alert.
51
-
52
- * You can record users interaction by either using the MOle is a transient or persistent mode.
53
- In the persistent mode, users interactions will be recorded in your database. In the transient
54
- case, MOle events will be recorded in your application logs.
55
-
56
- == INSTALL:
57
-
58
- * sudo gem install mole
59
-
60
- == SYNOPSIS:
61
-
62
- * The MOle can operate in 2 different modes: transient or persistent. The transient mode will
63
- simply record MOle interactions within your log file. If you opt to use the
64
- persistent mode (recommanded!) which will allow to leverage the Snitch Application
65
- and also draw out MOle usage reports from you database, you will need to install the 2 MOle tables in your database.
66
- This is achived via the 'molify' command. In order to 'MOle' an application using the persistent
67
- mode, you will need to issue the following commands:
68
-
69
- > cd my_non_moled_application
70
- > molify --up --config config/database.yml --env test
71
-
72
- This command will update your test database and create the MOle tables required when
73
- the MOle is in a persistent mode. Namely, these tables are mole_features and mole_logs.
74
-
75
- You can use molify --help to see usage information.
76
-
77
- * Mole initialization. This must be specified during your application initialization code.
78
- In a rails app, this can be set in you application controller class or environment.rb. In
79
- a Merb app, this can be set in your merb_init.rb file.
80
-
81
- require 'mole'
82
- Mole.initialize( :moleable => true,
83
- :application => "Smf",
84
- :emole_from => "MoleBeatch@liquidrail.com",
85
- :emole_recipients => ['fernand@liquidrail.com'],
86
- :mode => :persistent,
87
- :log_file => $stdout,
88
- :log_level => :debug,
89
- :perf_threshold => 2,
90
- :mole_config => File.join( File.dirname(__FILE__), %w[mole.rb] ) )
91
- # Load the MOle configuration file(s)
92
- ::Mole.load_configuration
93
-
94
- NOTE: The mole_config can either be a single ruby file or a directory containing multiple MOle
95
- configuration files. Thanks to Ian Schreuder for the suggestion !
96
-
97
- NOTE: For rails applications you can either put the MOle initialization code in a custom initializer
98
- ie config/initializers/mole.rb or in your environment file (config/environments/production.rb).
99
- You will need to make the load_configuration call in your application controller(application.rb) as follows:
100
-
101
- ::Mole.load_mole_configuration rescue nil
102
-
103
- In dev env, the MOle will reload the configuration so you can tweak your app on the fly. In production
104
- env the MOle configuration will be loaded once.
105
-
106
- * Now you'll need to create a mole.rb specification file to specify the various aspects you'll want
107
- to inject. This file is specified in the initialize call via the :mole_config tag.
108
-
109
- To trap a feature before or after it occurs you can use the mole_before/mole_after
110
- interceptors. The following will mole the "Posts" class after the "show" method is called.
111
- The context argument hands you an execution context. In a rails/merb environment
112
- this will be your controller object. You can handle this interaction any way
113
- you want. The MOle provides a convenience class to record this interaction via
114
- the database or the MOle logger in the guise of Mole::Moler. But you can also log it to
115
- any media you'll find suitable. In a rails/merb context, you'll be able to extract session/params information
116
- as in this case.
117
-
118
- Posts.mole_after( :feature => :show ) { |context, feature, ret, block, *args|
119
- # Records the interaction to the database
120
- Mole::Moler.mole_it( context, feature,
121
- context.session[:user_id], # Retrieves which user performed this action
122
- :post_id=> context.params[:post_id], # Records request parameter post id
123
- :url => context.instance_variable_get( "@url" ) ) # Retrieves controller state
124
- end
125
- }
126
-
127
- To record performance issues, you will need to provide a collection of
128
- methods that must be watched on a given class. In the case of rails or merb you can easily fetch the list
129
- of actions from the controller api and pass it to the MOle. The MOle provides convenience
130
- classes to log the perf issues to your database and send out alerts when a perf condition is met.
131
- Upon invocation, you will be handed a calling context, that comprises the feature (method) being
132
- called, the actual time it took to complete the call and any args/block that was passed into
133
- the feature that causes the performance threshold to be triggered. Setting the :email option
134
- to true will also send out an email alert.
135
-
136
- Posts.mole_perf( :features => merb_actions ) do |context, feature, elapsed_time, ret, block, *args|
137
- user = context.instance_variable_get( "@user" )
138
- key = context.params[:key], "N/A"
139
- request = context.request.nil? ? "N/A" : context.request.remote_ip,
140
- Mole::Moler.perf_it( context, user.id,
141
- :controller => context.class.name,
142
- :feature => feature,
143
- :key => key,
144
- :request => request,
145
- :user => user.user_name,
146
- :elapsed_time => "%3.3f" % elapsed_time,
147
- :email => true )
148
- end
149
-
150
- The unchecked exception trap works very similarly to the mole_perf trap. It will pass in
151
- the context of the method that triggered the exception.
152
-
153
- Posts.mole_unchecked( :features => merb_actions ) do |context, action, boom, block, *args|
154
- sub = context.instance_variable_get("@sub")
155
- user_id = "N/A"
156
- user_id = sub.user.id if sub and sub.user
157
- Mole::Moler.check_it( context, user_id,
158
- :controller => context.class.name,
159
- :action => action,
160
- :boom => boom,
161
- :email => true )
162
- end
163
-
164
- == Snitch
165
-
166
- To view MOle interaction simply, we've created the "Snitch" a rails console application that
167
- allows you to see the results of your MOled application. The Snitch is a Rails 2.0 application.
168
- It is available at http://mole.rubyforge.org/svn/snitch/trunk/.
169
-
170
- In order to start using the Snitch you will have to perform the following steps:
171
-
172
- * Download the Snitch
173
- svn co http://mole.rubyforge.org/svn/snitch/trunk/
174
-
175
- * The Snitch needs to access your user table to provide user related log information. So
176
- you will need to run the following rake task and provide your users table description.
177
-
178
- > rake setup
179
-
180
- * Edit the Snitch database.yml to point to your application database.
181
-
182
- * Out of the box the Snitch will monitor and application named "Default". You will want
183
- to match the application name that you've used in the Mole.initialize call. So you
184
- should now be able to specify the following commands:
185
-
186
- > script/server
187
-
188
- Then in your browser
189
-
190
- http://localhost:3000?app_name=my_moled_application_name
191
-
192
- * NOTE: You will keep enhancing the Snitch to provide capistrano deployment scripts,
193
- auto application name detection and many other enhancements...
194
-
195
- == LICENSE:
196
-
197
- MIT Copyright (c) 2008
198
-
199
- Permission is hereby granted, free of charge, to any person obtaining
200
- a copy of this software and associated documentation files (the
201
- 'Software'), to deal in the Software without restriction, including
202
- without limitation the rights to use, copy, modify, merge, publish,
203
- distribute, sublicense, and/or sell copies of the Software, and to
204
- permit persons to whom the Software is furnished to do so, subject to
205
- the following conditions:
206
-
207
- The above copyright notice and this permission notice shall be
208
- included in all copies or substantial portions of the Software.
209
-
210
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
211
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
212
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
213
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
214
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
215
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
216
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.