deforest 1.0.1 → 1.1.0

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/deforest/files_controller.rb +0 -37
  3. data/app/views/deforest/files/_percentile_table.html.erb +2 -8
  4. data/app/views/deforest/files/dashboard.html.erb +23 -24
  5. data/lib/deforest/version.rb +1 -1
  6. data/lib/deforest.rb +66 -96
  7. data/lib/generators/deforest/USAGE +9 -0
  8. data/lib/generators/deforest/deforest_generator.rb +39 -0
  9. data/lib/{tasks/deforest_initializer.rb → generators/deforest/templates/classic_enabled_initializer.rb} +0 -2
  10. data/lib/generators/deforest/templates/migration.rb +12 -0
  11. data/lib/generators/deforest/templates/zeitwerk_enabled_initializer.rb +8 -0
  12. data/test/deforest_test.rb +6 -6
  13. data/test/dummy/db/test.sqlite3 +0 -0
  14. data/test/dummy/deforest_db_sync.txt +1 -0
  15. data/test/dummy/log/test.log +2489 -17212
  16. data/test/models/post_test.rb +29 -3
  17. metadata +10 -68
  18. data/app/assets/javascripts/deforest/bootstrap.js +0 -4356
  19. data/app/assets/javascripts/deforest/bootstrap.js.map +0 -1
  20. data/app/assets/stylesheets/deforest/bootstrap-grid.css +0 -3872
  21. data/app/assets/stylesheets/deforest/bootstrap.css +0 -10332
  22. data/app/assets/stylesheets/deforest/bootstrap.css.map +0 -1
  23. data/app/views/deforest/files/index.html.erb +0 -16
  24. data/app/views/deforest/files/show.html.erb +0 -39
  25. data/lib/tasks/deforest_tasks.rake +0 -7
  26. data/test/dummy/db/development.sqlite3 +0 -0
  27. data/test/dummy/log/development.log +0 -248
  28. data/test/dummy/tmp/cache/assets/sprockets/v3.0/-T/-T8OIATNI3evoKq5bZdOBNbU0tZeQYxDHGmMOQnF2MM.cache +0 -1
  29. data/test/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +0 -2
  30. data/test/dummy/tmp/cache/assets/sprockets/v3.0/5U/5U1ZhgjUSyIuw2yEYRCbe2n0xGeyHmYwnDlSdtQ2Dnw.cache +0 -1
  31. data/test/dummy/tmp/cache/assets/sprockets/v3.0/AX/AXrDvl0RN_5S8jW0MwnE13ukiiihtUTsaSvoKDVlam4.cache +0 -0
  32. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Cz/Cz2gWla4RNTXNuZf93le7clQqax63V1EHdQWaHR0s-8.cache +0 -1
  33. data/test/dummy/tmp/cache/assets/sprockets/v3.0/DS/DSvREN-eIb--STC5GdXcwmlJjFTw6ZmUVNmW_Sdh1-s.cache +0 -0
  34. data/test/dummy/tmp/cache/assets/sprockets/v3.0/GH/GH5mD035fZ1hsoErrkyMEorz6bwqi30T9a8f3zBIqtE.cache +0 -1
  35. data/test/dummy/tmp/cache/assets/sprockets/v3.0/NL/NLspqKUPe4g6Q4WEvWHMjSTqkF8YS4m2vcBhHBuhVqc.cache +0 -2
  36. data/test/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +0 -2
  37. data/test/dummy/tmp/cache/assets/sprockets/v3.0/S3/S36SlXZyuQfqj2KG4e2Dpj_ZdUQbe2VflfsqjgLNSag.cache +0 -1
  38. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Sh/ShNcRHXrLA44HDRhTj2J11rZhqAuc56Kdr5Ea6O31Mk.cache +0 -0
  39. data/test/dummy/tmp/cache/assets/sprockets/v3.0/TL/TLNT1dXfMKTBmLi7RI_AoPSFmUtB9LfMeG6OuTkR1HQ.cache +0 -1
  40. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ba/ba0VOL0KrwkwcfcuKSnYe1tT0ccddXS8z2KVn_cjtnI.cache +0 -1
  41. data/test/dummy/tmp/cache/assets/sprockets/v3.0/eV/eVN4NMxJn9WpXFRvBaX65H7Ni3Ux4agZLg6r04-9Zf0.cache +0 -0
  42. data/test/dummy/tmp/cache/assets/sprockets/v3.0/gK/gKO1oowLJsUvxaYbr5rucOzM9MDl7D4Ppj8l7q3AX0g.cache +0 -1
  43. data/test/dummy/tmp/cache/assets/sprockets/v3.0/h-/h-Bt2tKoZ131FgeX_De5387nfrje85Zsquko2lu_uL4.cache +0 -0
  44. data/test/dummy/tmp/cache/assets/sprockets/v3.0/hR/hRDjpdlCa6CLHs-KV6u1wHhQ842r9m1R5eEpivfiFBE.cache +0 -1
  45. data/test/dummy/tmp/cache/assets/sprockets/v3.0/hZ/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache +0 -2
  46. data/test/dummy/tmp/cache/assets/sprockets/v3.0/jD/jDJ0_EfCHu9gwyqis3I2-EsrfB7dBs8YZzvyqaWoOjU.cache +0 -1
  47. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ly/ly49UX-4__EP86mWF_vobKTgvtAGLxUXqGOAPOzY53g.cache +0 -1
  48. data/test/dummy/tmp/cache/assets/sprockets/v3.0/pE/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache +0 -2
  49. data/test/dummy/tmp/cache/assets/sprockets/v3.0/qM/qMiFkN6R1w5uIr6HRgTrSHnbEVddbDAVdz0D1XF7T2I.cache +0 -0
  50. data/test/dummy/tmp/cache/assets/sprockets/v3.0/th/thNa8SIbNZvQMtDF3-dUnEJNEFYxRsND8XYtqA2t328.cache +0 -0
  51. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ui/uiFXrn_ILoEjcXpHWygBCsbEcWFKSiMvofYK6-saGVY.cache +0 -1
  52. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xw/xwxSZPjNVcvVU7DwpeJBJ1ZX6yyIFiCvf0GKrN6bZgc.cache +0 -0
  53. data/test/dummy/tmp/cache/assets/sprockets/v3.0/yp/ypFoyURV_Y0NHlBKznetHE6cVjR-mmRHcGSGQ_hERVg.cache +0 -2
@@ -2,14 +2,14 @@ require 'test_helper'
2
2
 
3
3
  class PostTest < ActiveSupport::TestCase
4
4
  setup do
5
- File.open("deforest_db_sync.txt", "w") { |f| f.write(1.hour.ago.to_i.to_s) }
5
+ File.open("deforest_db_sync.#{Process.pid}.txt", "w") { |f| f.write(1.hour.ago.to_i.to_s) }
6
6
  Deforest.initialize_db_sync_file
7
7
  Deforest.class_variable_set('@@write_logs_to_db_every', 1.minute)
8
8
  end
9
9
 
10
10
  teardown do
11
- File.delete("deforest_db_sync.txt") if File.exist?("deforest_db_sync.txt")
12
- File.delete("deforest.log") if File.exist?("deforest.log")
11
+ File.delete("deforest_db_sync.#{Process.pid}.txt") if File.exist?("deforest_db_sync.#{Process.pid}.txt")
12
+ File.delete("deforest.#{Process.pid}.log") if File.exist?("deforest.#{Process.pid}.log")
13
13
  end
14
14
 
15
15
  test "calling a model class method should create a log entry" do
@@ -32,4 +32,30 @@ class PostTest < ActiveSupport::TestCase
32
32
  app_models.delete(m)
33
33
  end
34
34
  end
35
+
36
+ test "most used method" do
37
+ _, _, method_name, _ = Deforest.most_used_methods(nil, 1)[0]
38
+ assert method_name == "get_email"
39
+ end
40
+
41
+ test "top 2 most used methods" do
42
+ f1, f2 = Deforest.most_used_methods(nil, 2)
43
+ _, _, method_name, _ = f1
44
+ assert method_name == "get_email"
45
+ _, _, method_name, _ = f2
46
+ assert method_name == "get_user_name"
47
+ end
48
+
49
+ test "least used method" do
50
+ _, _, method_name, _ = Deforest.least_used_methods(nil, 1)[0]
51
+ assert method_name == "refresh_cache"
52
+ end
53
+
54
+ test "top 2 least used methods" do
55
+ f1, f2 = Deforest.least_used_methods(nil, 2)
56
+ _, _, method_name, _ = f1
57
+ assert method_name == "refresh_cache"
58
+ _, _, method_name, _ = f2
59
+ assert method_name == "lock_user"
60
+ end
35
61
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deforest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akshay Takkar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-22 00:00:00.000000000 Z
11
+ date: 2024-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -120,13 +120,8 @@ files:
120
120
  - MIT-LICENSE
121
121
  - Rakefile
122
122
  - app/assets/javascripts/deforest/application.js
123
- - app/assets/javascripts/deforest/bootstrap.js
124
- - app/assets/javascripts/deforest/bootstrap.js.map
125
123
  - app/assets/javascripts/deforest/logs.js
126
124
  - app/assets/stylesheets/deforest/application.scss
127
- - app/assets/stylesheets/deforest/bootstrap-grid.css
128
- - app/assets/stylesheets/deforest/bootstrap.css
129
- - app/assets/stylesheets/deforest/bootstrap.css.map
130
125
  - app/assets/stylesheets/deforest/logs.css
131
126
  - app/controllers/deforest/application_controller.rb
132
127
  - app/controllers/deforest/files_controller.rb
@@ -135,16 +130,17 @@ files:
135
130
  - app/models/deforest/log.rb
136
131
  - app/views/deforest/files/_percentile_table.html.erb
137
132
  - app/views/deforest/files/dashboard.html.erb
138
- - app/views/deforest/files/index.html.erb
139
- - app/views/deforest/files/show.html.erb
140
133
  - app/views/layouts/deforest/application.html.erb
141
134
  - config/routes.rb
142
135
  - db/migrate/20230113124304_create_deforest_logs.rb
143
136
  - lib/deforest.rb
144
137
  - lib/deforest/engine.rb
145
138
  - lib/deforest/version.rb
146
- - lib/tasks/deforest_initializer.rb
147
- - lib/tasks/deforest_tasks.rake
139
+ - lib/generators/deforest/USAGE
140
+ - lib/generators/deforest/deforest_generator.rb
141
+ - lib/generators/deforest/templates/classic_enabled_initializer.rb
142
+ - lib/generators/deforest/templates/migration.rb
143
+ - lib/generators/deforest/templates/zeitwerk_enabled_initializer.rb
148
144
  - test/controllers/deforest/logs_controller_test.rb
149
145
  - test/deforest_test.rb
150
146
  - test/dummy/README.rdoc
@@ -184,7 +180,6 @@ files:
184
180
  - test/dummy/config/locales/en.yml
185
181
  - test/dummy/config/routes.rb
186
182
  - test/dummy/config/secrets.yml
187
- - test/dummy/db/development.sqlite3
188
183
  - test/dummy/db/migrate/20230211204438_create_users.rb
189
184
  - test/dummy/db/migrate/20230216154544_create_posts.rb
190
185
  - test/dummy/db/migrate/20230218121433_create_special_posts.rb
@@ -193,7 +188,7 @@ files:
193
188
  - test/dummy/db/schema.rb
194
189
  - test/dummy/db/test.sqlite3
195
190
  - test/dummy/deforest.log
196
- - test/dummy/log/development.log
191
+ - test/dummy/deforest_db_sync.txt
197
192
  - test/dummy/log/test.log
198
193
  - test/dummy/public/404.html
199
194
  - test/dummy/public/422.html
@@ -206,32 +201,6 @@ files:
206
201
  - test/dummy/test/models/special/custom/post_test.rb
207
202
  - test/dummy/test/models/special/post_test.rb
208
203
  - test/dummy/test/test_helper.rb
209
- - test/dummy/tmp/cache/assets/sprockets/v3.0/-T/-T8OIATNI3evoKq5bZdOBNbU0tZeQYxDHGmMOQnF2MM.cache
210
- - test/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
211
- - test/dummy/tmp/cache/assets/sprockets/v3.0/5U/5U1ZhgjUSyIuw2yEYRCbe2n0xGeyHmYwnDlSdtQ2Dnw.cache
212
- - test/dummy/tmp/cache/assets/sprockets/v3.0/AX/AXrDvl0RN_5S8jW0MwnE13ukiiihtUTsaSvoKDVlam4.cache
213
- - test/dummy/tmp/cache/assets/sprockets/v3.0/Cz/Cz2gWla4RNTXNuZf93le7clQqax63V1EHdQWaHR0s-8.cache
214
- - test/dummy/tmp/cache/assets/sprockets/v3.0/DS/DSvREN-eIb--STC5GdXcwmlJjFTw6ZmUVNmW_Sdh1-s.cache
215
- - test/dummy/tmp/cache/assets/sprockets/v3.0/GH/GH5mD035fZ1hsoErrkyMEorz6bwqi30T9a8f3zBIqtE.cache
216
- - test/dummy/tmp/cache/assets/sprockets/v3.0/NL/NLspqKUPe4g6Q4WEvWHMjSTqkF8YS4m2vcBhHBuhVqc.cache
217
- - test/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
218
- - test/dummy/tmp/cache/assets/sprockets/v3.0/S3/S36SlXZyuQfqj2KG4e2Dpj_ZdUQbe2VflfsqjgLNSag.cache
219
- - test/dummy/tmp/cache/assets/sprockets/v3.0/Sh/ShNcRHXrLA44HDRhTj2J11rZhqAuc56Kdr5Ea6O31Mk.cache
220
- - test/dummy/tmp/cache/assets/sprockets/v3.0/TL/TLNT1dXfMKTBmLi7RI_AoPSFmUtB9LfMeG6OuTkR1HQ.cache
221
- - test/dummy/tmp/cache/assets/sprockets/v3.0/ba/ba0VOL0KrwkwcfcuKSnYe1tT0ccddXS8z2KVn_cjtnI.cache
222
- - test/dummy/tmp/cache/assets/sprockets/v3.0/eV/eVN4NMxJn9WpXFRvBaX65H7Ni3Ux4agZLg6r04-9Zf0.cache
223
- - test/dummy/tmp/cache/assets/sprockets/v3.0/gK/gKO1oowLJsUvxaYbr5rucOzM9MDl7D4Ppj8l7q3AX0g.cache
224
- - test/dummy/tmp/cache/assets/sprockets/v3.0/h-/h-Bt2tKoZ131FgeX_De5387nfrje85Zsquko2lu_uL4.cache
225
- - test/dummy/tmp/cache/assets/sprockets/v3.0/hR/hRDjpdlCa6CLHs-KV6u1wHhQ842r9m1R5eEpivfiFBE.cache
226
- - test/dummy/tmp/cache/assets/sprockets/v3.0/hZ/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache
227
- - test/dummy/tmp/cache/assets/sprockets/v3.0/jD/jDJ0_EfCHu9gwyqis3I2-EsrfB7dBs8YZzvyqaWoOjU.cache
228
- - test/dummy/tmp/cache/assets/sprockets/v3.0/ly/ly49UX-4__EP86mWF_vobKTgvtAGLxUXqGOAPOzY53g.cache
229
- - test/dummy/tmp/cache/assets/sprockets/v3.0/pE/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache
230
- - test/dummy/tmp/cache/assets/sprockets/v3.0/qM/qMiFkN6R1w5uIr6HRgTrSHnbEVddbDAVdz0D1XF7T2I.cache
231
- - test/dummy/tmp/cache/assets/sprockets/v3.0/th/thNa8SIbNZvQMtDF3-dUnEJNEFYxRsND8XYtqA2t328.cache
232
- - test/dummy/tmp/cache/assets/sprockets/v3.0/ui/uiFXrn_ILoEjcXpHWygBCsbEcWFKSiMvofYK6-saGVY.cache
233
- - test/dummy/tmp/cache/assets/sprockets/v3.0/xw/xwxSZPjNVcvVU7DwpeJBJ1ZX6yyIFiCvf0GKrN6bZgc.cache
234
- - test/dummy/tmp/cache/assets/sprockets/v3.0/yp/ypFoyURV_Y0NHlBKznetHE6cVjR-mmRHcGSGQ_hERVg.cache
235
204
  - test/fixtures/deforest/logs.yml
236
205
  - test/fixtures/posts.yml
237
206
  - test/integration/navigation_test.rb
@@ -257,11 +226,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
257
226
  - !ruby/object:Gem::Version
258
227
  version: '0'
259
228
  requirements: []
260
- rubygems_version: 3.0.4
229
+ rubygems_version: 3.0.9
261
230
  signing_key:
262
231
  specification_version: 4
263
232
  summary: Deforest helps you analyze your method call stats
264
233
  test_files:
234
+ - test/dummy/deforest_db_sync.txt
265
235
  - test/dummy/app/models/special/custom/post.rb
266
236
  - test/dummy/app/models/special/post.rb
267
237
  - test/dummy/app/models/comment.rb
@@ -317,35 +287,7 @@ test_files:
317
287
  - test/dummy/db/migrate/20230219174900_create_comments.rb
318
288
  - test/dummy/db/migrate/20230218161957_create_special_custom_posts.rb
319
289
  - test/dummy/db/migrate/20230218121433_create_special_posts.rb
320
- - test/dummy/db/development.sqlite3
321
290
  - test/dummy/log/test.log
322
- - test/dummy/log/development.log
323
- - test/dummy/tmp/cache/assets/sprockets/v3.0/5U/5U1ZhgjUSyIuw2yEYRCbe2n0xGeyHmYwnDlSdtQ2Dnw.cache
324
- - test/dummy/tmp/cache/assets/sprockets/v3.0/yp/ypFoyURV_Y0NHlBKznetHE6cVjR-mmRHcGSGQ_hERVg.cache
325
- - test/dummy/tmp/cache/assets/sprockets/v3.0/ui/uiFXrn_ILoEjcXpHWygBCsbEcWFKSiMvofYK6-saGVY.cache
326
- - test/dummy/tmp/cache/assets/sprockets/v3.0/pE/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache
327
- - test/dummy/tmp/cache/assets/sprockets/v3.0/S3/S36SlXZyuQfqj2KG4e2Dpj_ZdUQbe2VflfsqjgLNSag.cache
328
- - test/dummy/tmp/cache/assets/sprockets/v3.0/AX/AXrDvl0RN_5S8jW0MwnE13ukiiihtUTsaSvoKDVlam4.cache
329
- - test/dummy/tmp/cache/assets/sprockets/v3.0/-T/-T8OIATNI3evoKq5bZdOBNbU0tZeQYxDHGmMOQnF2MM.cache
330
- - test/dummy/tmp/cache/assets/sprockets/v3.0/GH/GH5mD035fZ1hsoErrkyMEorz6bwqi30T9a8f3zBIqtE.cache
331
- - test/dummy/tmp/cache/assets/sprockets/v3.0/DS/DSvREN-eIb--STC5GdXcwmlJjFTw6ZmUVNmW_Sdh1-s.cache
332
- - test/dummy/tmp/cache/assets/sprockets/v3.0/eV/eVN4NMxJn9WpXFRvBaX65H7Ni3Ux4agZLg6r04-9Zf0.cache
333
- - test/dummy/tmp/cache/assets/sprockets/v3.0/ly/ly49UX-4__EP86mWF_vobKTgvtAGLxUXqGOAPOzY53g.cache
334
- - test/dummy/tmp/cache/assets/sprockets/v3.0/Cz/Cz2gWla4RNTXNuZf93le7clQqax63V1EHdQWaHR0s-8.cache
335
- - test/dummy/tmp/cache/assets/sprockets/v3.0/TL/TLNT1dXfMKTBmLi7RI_AoPSFmUtB9LfMeG6OuTkR1HQ.cache
336
- - test/dummy/tmp/cache/assets/sprockets/v3.0/Sh/ShNcRHXrLA44HDRhTj2J11rZhqAuc56Kdr5Ea6O31Mk.cache
337
- - test/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
338
- - test/dummy/tmp/cache/assets/sprockets/v3.0/hZ/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache
339
- - test/dummy/tmp/cache/assets/sprockets/v3.0/ba/ba0VOL0KrwkwcfcuKSnYe1tT0ccddXS8z2KVn_cjtnI.cache
340
- - test/dummy/tmp/cache/assets/sprockets/v3.0/h-/h-Bt2tKoZ131FgeX_De5387nfrje85Zsquko2lu_uL4.cache
341
- - test/dummy/tmp/cache/assets/sprockets/v3.0/gK/gKO1oowLJsUvxaYbr5rucOzM9MDl7D4Ppj8l7q3AX0g.cache
342
- - test/dummy/tmp/cache/assets/sprockets/v3.0/hR/hRDjpdlCa6CLHs-KV6u1wHhQ842r9m1R5eEpivfiFBE.cache
343
- - test/dummy/tmp/cache/assets/sprockets/v3.0/NL/NLspqKUPe4g6Q4WEvWHMjSTqkF8YS4m2vcBhHBuhVqc.cache
344
- - test/dummy/tmp/cache/assets/sprockets/v3.0/jD/jDJ0_EfCHu9gwyqis3I2-EsrfB7dBs8YZzvyqaWoOjU.cache
345
- - test/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
346
- - test/dummy/tmp/cache/assets/sprockets/v3.0/th/thNa8SIbNZvQMtDF3-dUnEJNEFYxRsND8XYtqA2t328.cache
347
- - test/dummy/tmp/cache/assets/sprockets/v3.0/qM/qMiFkN6R1w5uIr6HRgTrSHnbEVddbDAVdz0D1XF7T2I.cache
348
- - test/dummy/tmp/cache/assets/sprockets/v3.0/xw/xwxSZPjNVcvVU7DwpeJBJ1ZX6yyIFiCvf0GKrN6bZgc.cache
349
291
  - test/dummy/README.rdoc
350
292
  - test/deforest_test.rb
351
293
  - test/integration/navigation_test.rb