mole 1.0.12 → 1.0.15

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 (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.