localtower 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -32
  3. data/app/controllers/localtower/pages_controller.rb +16 -45
  4. data/app/helpers/localtower/application_helper.rb +0 -18
  5. data/app/views/layouts/localtower/application.html.erb +6 -48
  6. data/app/views/localtower/pages/_migrations.html.erb +57 -0
  7. data/app/views/localtower/pages/migrations.html.erb +3 -42
  8. data/app/views/localtower/pages/models.html.erb +5 -3
  9. data/app/views/localtower/pages/{dashboard.html.erb → schema.html.erb} +0 -0
  10. data/config/routes.rb +7 -16
  11. data/lib/localtower/generators/migration.rb +8 -67
  12. data/lib/localtower/generators/model.rb +5 -8
  13. data/lib/localtower/status.rb +12 -7
  14. data/lib/localtower/tools.rb +16 -8
  15. data/lib/localtower/version.rb +1 -1
  16. data/lib/localtower.rb +0 -1
  17. data/public/js/app.js +14 -29
  18. data/public/light-bootstrap-dashboard-master/assets/css/light-bootstrap-dashboard.css +9 -35
  19. data/public/vendor/font-awesome.min.css +4 -0
  20. data/public/vendor/highlight-js-default.min.css +9 -0
  21. data/public/vendor/highlight.min.js +1198 -0
  22. data/public/{js → vendor}/masonry.pkgd.min.js +0 -0
  23. data/spec/dummy/Gemfile +0 -1
  24. data/spec/dummy/Gemfile.lock +79 -87
  25. data/spec/dummy/app/controllers/pages_controller.rb +0 -2
  26. data/spec/dummy/app/models/user.rb +2 -0
  27. data/spec/dummy/app/views/pages/home.html.erb +0 -1
  28. data/spec/dummy/config/database.yml +1 -1
  29. data/spec/dummy/config/environments/development.rb +2 -1
  30. data/spec/dummy/db/migrate/20221115190039_create_users.rb +13 -0
  31. data/spec/dummy/db/migrate/20221115193020_change_users.rb +8 -0
  32. data/spec/dummy/db/migrate/20221115193532_change_users_at1668540931.rb +5 -0
  33. data/spec/dummy/db/migrate/20221115193605_change_users_at1668540964.rb +5 -0
  34. data/spec/dummy/db/migrate/20221115193637_change_users_at1668540996.rb +5 -0
  35. data/spec/dummy/db/migrate/20221115193642_change_users_at1668541001.rb +5 -0
  36. data/spec/dummy/db/schema.rb +29 -0
  37. data/spec/dummy/log/development.log +4313 -10257
  38. data/spec/dummy/log/localtower.log +148 -474
  39. data/spec/spec_helper.rb +17 -2
  40. metadata +24 -32
  41. data/app/views/localtower/pages/logs.html.erb +0 -84
  42. data/app/views/localtower/pages/relations.html.erb +0 -66
  43. data/app/views/localtower/pages/tasks.html.erb +0 -48
  44. data/lib/localtower/generators/relation.rb +0 -59
  45. data/lib/localtower/plugins/capture.rb +0 -197
  46. data/lib/tasks/localtower_tasks.rake +0 -4
  47. data/spec/dummy/lib/playground.rb +0 -0
  48. data/spec/dummy/log/localtower_capture_d8979d360722798f7b6eb1a2694a3791.json +0 -1
  49. data/spec/dummy/log/test.log +0 -281
  50. data/spec/dummy/tmp/pids/server.pid +0 -1
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,21 @@
1
1
  def clean_files
2
- ::Localtower::Tools.sql_drop_all_tables
3
- ::Localtower::Generators::Migration.new({}).remove_all_migrations
2
+ ::ActiveRecord::Base.connection.tables.each do |table|
3
+ cmd = "DROP TABLE if exists #{table.upcase} cascade;"
4
+ ::ActiveRecord::Base.connection.execute(cmd)
5
+ end
6
+
7
+ # remove Schema:
8
+ Dir["#{Rails.root}/db/migrate/*"].each { |migration_file| File.delete(migration_file) }
9
+
10
+ content_schema = """
11
+ ActiveRecord::Schema.define(version: 0) do
12
+ end
13
+ """
14
+
15
+ File.open("#{Rails.root}/db/schema.rb", "w") do |f|
16
+ f.write(content_schema)
17
+ end
18
+
4
19
  Dir["#{Rails.root}/app/models/**/*.*"].each { |model_file| File.delete(model_file) }
5
20
  end
6
21
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: localtower
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damian Le Nouaille Diez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-30 00:00:00.000000000 Z
11
+ date: 2022-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.0.4
55
- - !ruby/object:Gem::Dependency
56
- name: rubyzip
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 1.2.1
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: 1.2.1
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: pg
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -121,27 +107,21 @@ files:
121
107
  - app/controllers/localtower/pages_controller.rb
122
108
  - app/helpers/localtower/application_helper.rb
123
109
  - app/views/layouts/localtower/application.html.erb
124
- - app/views/localtower/pages/dashboard.html.erb
125
- - app/views/localtower/pages/logs.html.erb
110
+ - app/views/localtower/pages/_migrations.html.erb
126
111
  - app/views/localtower/pages/migrations.html.erb
127
112
  - app/views/localtower/pages/models.html.erb
128
- - app/views/localtower/pages/relations.html.erb
129
- - app/views/localtower/pages/tasks.html.erb
113
+ - app/views/localtower/pages/schema.html.erb
130
114
  - config/routes.rb
131
115
  - lib/localtower.rb
132
116
  - lib/localtower/engine.rb
133
117
  - lib/localtower/generators/migration.rb
134
118
  - lib/localtower/generators/model.rb
135
- - lib/localtower/generators/relation.rb
136
119
  - lib/localtower/generators/service_objects/insert_defaults.rb
137
- - lib/localtower/plugins/capture.rb
138
120
  - lib/localtower/status.rb
139
121
  - lib/localtower/tools.rb
140
122
  - lib/localtower/version.rb
141
- - lib/tasks/localtower_tasks.rake
142
123
  - public/css/app.css
143
124
  - public/js/app.js
144
- - public/js/masonry.pkgd.min.js
145
125
  - public/light-bootstrap-dashboard-master/assets/css/animate.min.css
146
126
  - public/light-bootstrap-dashboard-master/assets/css/bootstrap.min.css
147
127
  - public/light-bootstrap-dashboard-master/assets/css/demo.css
@@ -192,6 +172,10 @@ files:
192
172
  - public/screenshots/v0.1.6/3_relations.png
193
173
  - public/screenshots/v0.1.6/4_migrations.png
194
174
  - public/screenshots/v0.1.6/5_capture.png
175
+ - public/vendor/font-awesome.min.css
176
+ - public/vendor/highlight-js-default.min.css
177
+ - public/vendor/highlight.min.js
178
+ - public/vendor/masonry.pkgd.min.js
195
179
  - spec/dummy/Gemfile
196
180
  - spec/dummy/Gemfile.lock
197
181
  - spec/dummy/README.md
@@ -208,6 +192,7 @@ files:
208
192
  - spec/dummy/app/jobs/application_job.rb
209
193
  - spec/dummy/app/mailers/application_mailer.rb
210
194
  - spec/dummy/app/models/application_record.rb
195
+ - spec/dummy/app/models/user.rb
211
196
  - spec/dummy/app/views/layouts/application.html.erb
212
197
  - spec/dummy/app/views/layouts/mailer.html.erb
213
198
  - spec/dummy/app/views/layouts/mailer.text.erb
@@ -242,11 +227,15 @@ files:
242
227
  - spec/dummy/config/routes.rb
243
228
  - spec/dummy/config/secrets.yml
244
229
  - spec/dummy/config/spring.rb
245
- - spec/dummy/lib/playground.rb
230
+ - spec/dummy/db/migrate/20221115190039_create_users.rb
231
+ - spec/dummy/db/migrate/20221115193020_change_users.rb
232
+ - spec/dummy/db/migrate/20221115193532_change_users_at1668540931.rb
233
+ - spec/dummy/db/migrate/20221115193605_change_users_at1668540964.rb
234
+ - spec/dummy/db/migrate/20221115193637_change_users_at1668540996.rb
235
+ - spec/dummy/db/migrate/20221115193642_change_users_at1668541001.rb
236
+ - spec/dummy/db/schema.rb
246
237
  - spec/dummy/log/development.log
247
238
  - spec/dummy/log/localtower.log
248
- - spec/dummy/log/localtower_capture_d8979d360722798f7b6eb1a2694a3791.json
249
- - spec/dummy/log/test.log
250
239
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-Y/-YOiiBKqc2UODHFjctm8xc7xFoZaL7zOjWQj6qQ2wyE.cache
251
240
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/-d/-dwueM4vmPt8L51S3jeSyg_AjGDcj0GUN6pDpCA1gCg.cache
252
241
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/0g/0gaJnJQdtd2ACbihXxn8OnjLWlDjnQ_WxfgOpbiLzhg.cache
@@ -314,7 +303,6 @@ files:
314
303
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/yH/yHZ-a1J23ZCf2n5mEHINMz23Iec2cLGTKauW7k4yGTE.cache
315
304
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/z7/z7KfUWYoSaGq8tQ5mbHwyfXyT3Pa4FWKJswHcIdJuds.cache
316
305
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/zu/zuExWc5WHxeOUPZUKHl9a9ZRmN50g7jMOD28macn6M0.cache
317
- - spec/dummy/tmp/pids/server.pid
318
306
  - spec/dummy/tmp/restart.txt
319
307
  - spec/factories/migration.rb
320
308
  - spec/factories/model.rb
@@ -350,6 +338,7 @@ test_files:
350
338
  - spec/spec_helper.rb
351
339
  - spec/dummy/app/mailers/application_mailer.rb
352
340
  - spec/dummy/app/models/application_record.rb
341
+ - spec/dummy/app/models/user.rb
353
342
  - spec/dummy/app/jobs/application_job.rb
354
343
  - spec/dummy/app/controllers/application_controller.rb
355
344
  - spec/dummy/app/controllers/pages_controller.rb
@@ -396,14 +385,17 @@ test_files:
396
385
  - spec/dummy/config.ru
397
386
  - spec/dummy/README.md
398
387
  - spec/dummy/Rakefile
399
- - spec/dummy/lib/playground.rb
388
+ - spec/dummy/db/schema.rb
389
+ - spec/dummy/db/migrate/20221115193637_change_users_at1668540996.rb
390
+ - spec/dummy/db/migrate/20221115193605_change_users_at1668540964.rb
391
+ - spec/dummy/db/migrate/20221115193532_change_users_at1668540931.rb
392
+ - spec/dummy/db/migrate/20221115193020_change_users.rb
393
+ - spec/dummy/db/migrate/20221115193642_change_users_at1668541001.rb
394
+ - spec/dummy/db/migrate/20221115190039_create_users.rb
400
395
  - spec/dummy/Gemfile
401
396
  - spec/dummy/log/localtower.log
402
- - spec/dummy/log/localtower_capture_d8979d360722798f7b6eb1a2694a3791.json
403
- - spec/dummy/log/test.log
404
397
  - spec/dummy/log/development.log
405
398
  - spec/dummy/Gemfile.lock
406
- - spec/dummy/tmp/pids/server.pid
407
399
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/3W/3WBmqd-2V6q5N-jvbyp-tlcfn3aHYMwBppbOUm7x4qg.cache
408
400
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/pv/pv6tV3CDkIAmLXdU8EPLlNEkXAKJPufVD4VP30o4fWo.cache
409
401
  - spec/dummy/tmp/cache/assets/sprockets/v4.0.0/sY/sYvTb1uPWWmnHJNXKuW_xSco-aUb-rN2f0J35zSIzuc.cache
@@ -1,84 +0,0 @@
1
- <style type="text/css">
2
- .string { color: green; }
3
- .number { color: darkorange; }
4
- .boolean { color: blue; }
5
- .null { color: magenta; }
6
- .key { color: red; }
7
-
8
- .code {
9
- font: 12px Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
10
- }
11
-
12
- .value {
13
- padding: 10px;
14
- border: 1px solid #cacaca;
15
- line-height: 1.2em;
16
- overflow:auto;
17
- max-height: 800px;
18
- max-width: 800px;
19
- -moz-background-clip: padding;
20
- -webkit-background-clip: padding-box;
21
- background-clip: padding-box;
22
- background-color: #FAFAFB;
23
- color: #393939;
24
- margin: 0px;
25
- display: block;
26
- }
27
- </style>
28
- <% content_for :title do %>Logs<% end %>
29
- <div class="row">
30
- <div class="col-md-12">
31
- <div class="card">
32
- <div class="header">
33
- <h4 class="title">
34
- <pre>Localtower::Plugins::Capture.new(self, binding).save</pre>
35
- </h4>
36
- </div>
37
- <div class="content">
38
- <table class="table">
39
- <thead>
40
- <th>TYPE</th>
41
- <th>IN CLASS</th>
42
- <th>IN METHOD</th>
43
- <th>VARIABLE</th>
44
- <th>VALUE</th>
45
- </thead>
46
- <tbody>
47
- <% @logs.each do |log| %>
48
- <% log["variables"].each do |item| %>
49
- <tr>
50
- <td>
51
- <span class="label label-success">
52
- <%= item["type"] %>
53
- </span>
54
- </td>
55
- <td>
56
- <span>
57
- <a class="code" href="<%= file_link(item["meta"]["sublime_path"]) %>">
58
- <%= item["meta"]["from_klass"] %>
59
- </a>
60
- </span>
61
- </td>
62
- <td>
63
- <span class="code">
64
- def <%= item["meta"]["from_method"] %>()
65
- </span>
66
- </td>
67
- <td>
68
- <span class="code">
69
- <%= item["event_name"] %>
70
- </span>
71
- </td>
72
- <td>
73
- <a href="<%= log_var_path(log["md5"], item["event_name"]) %>">open</a>
74
- <pre class="value json code"><%= Localtower::Plugins::Capture.printable(item["returned"]) %></pre>
75
- </td>
76
- </tr>
77
- <% end %>
78
- <% end %>
79
- </tbody>
80
- </table>
81
- </div>
82
- </div>
83
- </div>
84
- </div>
@@ -1,66 +0,0 @@
1
- <% content_for :title do %>Relations<% end %>
2
-
3
- <div class="row">
4
- <div class="col-md-12">
5
- <div class="card">
6
- <div class="header">
7
- <h4 class="title"></h4>
8
-
9
- <% if not ::Localtower::Tools.enought_models_for_relation? %>
10
- <div class="alert alert-danger text-center" role="alert">
11
- <a href="#" class="alert-link">You need at least 2 models to create a relation.</a>
12
- </div>
13
- <% end %>
14
- </div>
15
-
16
- <div class="content">
17
-
18
- <%= form_tag relations_path, class: "form" do %>
19
- <div class="row">
20
- <div class="form-group">
21
- <div class="col-md-offset-4 col-sm-offset-3 col-md-4 col-sm-6">
22
- <div class="form-group">
23
- <div class="text-center">
24
- <label>Name of the relation (optional, will use Rails conventions by default)</label>
25
- </div>
26
- <input type="text" name="relations[model_name]" class="form-control">
27
- </div>
28
- </div>
29
-
30
- <div class="clearfix"></div>
31
-
32
- <div class="col-md-5 col-sm-5">
33
- <label>Model 1:</label>
34
-
35
- <%= select("relations", "model_one_name", ::Localtower::Tools.models.collect {|p| [ p, p ] }, {include_blank: false}, class: "form-control") %>
36
- </div>
37
-
38
- <div class="col-md-2 col-sm-2">
39
- <div class="text-center">
40
- <br>
41
- <i class="pe-7s-loop" style="font-size: 3em;"></i>
42
- </div>
43
- </div>
44
-
45
- <div class="col-md-5 col-sm-5">
46
- <label>Model 2:</label>
47
- <%= select("relations", "model_two_name", ::Localtower::Tools.models.collect {|p| [ p, p ] }, {include_blank: false}, class: "form-control") %>
48
- </div>
49
- </div>
50
- </div>
51
-
52
- <hr>
53
-
54
- <div class="row">
55
- <div class="col-md-12 text-center">
56
- <button name="relations[run_migrate]" type="submit" value="true" class="btn btn-success" data-selector="submit">
57
- Create the relation and <b>migrate</b>
58
- </button>
59
- </div>
60
- </div>
61
-
62
- <% end %>
63
- </div>
64
- </div>
65
- </div>
66
- </div>
@@ -1,48 +0,0 @@
1
- <% content_for :title do %>Tasks<% end %>
2
-
3
- <div class="row">
4
- <div class="col-md-12">
5
- <div class="card">
6
- <div class="header">
7
- <h4 class="title"></h4>
8
- </div>
9
- <div class="content">
10
-
11
- <%= form_tag tasks_path, class: "form" do %>
12
- <div class="row">
13
- <div class="form-group">
14
- <div class="col-md-12">
15
- <div class="form-group">
16
- <table class="table table-hover table-striped">
17
- <thead>
18
- <th>Task</th>
19
- <th></th>
20
- </thead>
21
-
22
- <tbody data-selector="tbody">
23
- <% @tasks.each do |task_str| %>
24
- <tr data-selector="tr">
25
- <td>
26
- <code>
27
- <%=task_str%>
28
- </code>
29
- <input type="hidden" name="task[name]" value="<%= task_str %>" class="form-control">
30
- </td>
31
- <td>
32
- <button name="" type="submit" class="btn btn-success" data-selector="submit">
33
- RUN
34
- </button>
35
- </td>
36
- </tr>
37
- <% end %>
38
- </tbody>
39
- </table>
40
- </div>
41
- </div>
42
- </div>
43
- </div>
44
- <% end %>
45
- </div>
46
- </div>
47
- </div>
48
- </div>
@@ -1,59 +0,0 @@
1
- module Localtower
2
- module Generators
3
- class Relation
4
- def initialize(opts)
5
- @opts = JSON[opts.to_json]
6
- end
7
-
8
- def run
9
- model_one_name = @opts["model_one_name"]
10
- model_two_name = @opts["model_two_name"]
11
-
12
- if not model_one_name.present? and not model_two_name.present?
13
- return nil
14
- end
15
-
16
- if @opts["model_name"].present?
17
- model_name = @opts["model_name"].capitalize
18
- else
19
- model_name = "#{model_one_name.capitalize}#{model_two_name.capitalize}"
20
- end
21
-
22
- data = {
23
- run_migrate: true,
24
- model_name: model_name,
25
- attributes: [
26
- {
27
- attribute_name: model_one_name.downcase,
28
- attribute_type: "references"
29
- },
30
- {
31
- attribute_name: model_two_name.downcase,
32
- attribute_type: "references"
33
- },
34
- ]
35
- }
36
-
37
- ::Localtower::Generators::Model.new(data.deep_stringify_keys).run
38
-
39
- # model 1:
40
- file = "#{Rails.root}/app/models/#{model_one_name.underscore}.rb"
41
- after = /class #{model_one_name} < ApplicationRecord\n/
42
- line1 = " has_many :#{model_name.pluralize.underscore}\n"
43
- line2 = " has_many :#{model_two_name.pluralize.underscore}, through: :#{model_name.pluralize.underscore}\n"
44
-
45
- ::Localtower::Tools::ThorTools.new.insert_after_word(file, after, line1)
46
- ::Localtower::Tools::ThorTools.new.insert_after_word(file, after, line2)
47
-
48
- # model 2:
49
- file = "#{Rails.root}/app/models/#{model_two_name.underscore}.rb"
50
- after = /class #{model_two_name} < ApplicationRecord\n/
51
- line1 = " has_many :#{model_name.pluralize.underscore}\n"
52
- line2 = " has_many :#{model_one_name.pluralize.underscore}, through: :#{model_name.pluralize.underscore}\n"
53
-
54
- ::Localtower::Tools::ThorTools.new.insert_after_word(file, after, line1)
55
- ::Localtower::Tools::ThorTools.new.insert_after_word(file, after, line2)
56
- end
57
- end
58
- end
59
- end
@@ -1,197 +0,0 @@
1
- module Localtower
2
- module Plugins
3
- class Capture
4
- LOG_FILE = lambda { "#{Rails.root}/log/localtower_capture.log" }
5
- LOG_PATH = lambda { "#{Rails.root}/log" }
6
- EXCLUDE_INSTANCE_VARIABLES = [
7
- "@_action_has_layout",
8
- "@_routes",
9
- "@_headers",
10
- "@_status",
11
- "@_request",
12
- "@__react_component_helper",
13
- "@_response",
14
- "@_env",
15
- "@env",
16
- "@controller",
17
- "@_lookup_context",
18
- "@_action_name",
19
- "@_response_body",
20
- ]
21
-
22
- class << self
23
- def printable(content)
24
- if content.respond_to?(:to_json)
25
- JSON.pretty_generate(content)
26
- else
27
- content.to_s
28
- end
29
- end
30
-
31
- def log_from_md5(md5)
32
- file = Dir["#{Localtower::Plugins::Capture::LOG_PATH.call}/localtower*#{md5}*"][0]
33
- JSON.parse(open(file).read)
34
- end
35
-
36
- def type_of(value)
37
- if value.instance_of?(Float); return Float.to_s; end;
38
- if value.instance_of?(Integer); return Integer.to_s; end;
39
- if value.instance_of?(String); return String.to_s; end;
40
- if value.instance_of?(Array); return Array.to_s; end;
41
- if value.instance_of?(Hash); return Hash.to_s; end;
42
- if value.instance_of?(ApplicationController); return ApplicationController.to_s; end;
43
- if value.instance_of?(NilClass); return NilClass.to_s; end;
44
-
45
- nil
46
- end
47
- end
48
-
49
- def initialize(context = nil, context_binding = nil)
50
- @context = context # self
51
- @context_binding = context_binding # binding
52
- end
53
-
54
- def logs
55
- list = []
56
-
57
- Dir["#{LOG_PATH.call}/localtower_capture_*.json"].each do |file|
58
- json = JSON.parse(open(file).read)
59
- list << json
60
- end
61
-
62
- list
63
- end
64
-
65
- def my_logger
66
- @@my_logger ||= Logger.new(LOG_FILE.call)
67
- @@my_logger.formatter = proc do |severity, datetime, progname, msg|
68
- "#{msg}\n"
69
- end
70
-
71
- @@my_logger
72
- end
73
-
74
- def values
75
- hash = {}
76
-
77
- callers = @context.send(:caller)
78
- a = callers[1] # xx/xx/app/controllers/clients/events_controller.rb:57:in `new'
79
- a = a.split(Rails.root.to_s).last # events_controller.rb:57:in `new'
80
- a = a.split("\:")
81
-
82
-
83
- file = a[0].strip
84
- line_number = a[1].strip
85
- method = a[2].strip.gsub("in \`", "").gsub("\'", "")
86
-
87
- sublime_path = "#{callers[1].split(":")[0]}:#{line_number}"
88
-
89
- hash["class"] = self.klass_name
90
- hash["file_name"] = file
91
- hash["file"] = "#{file}##{method}:#{line_number}"
92
- hash["line_number"] = line_number
93
- hash["method"] = method
94
- hash["md5"] = Digest::MD5.hexdigest(hash["file"])
95
- hash["type"] = "CAPTURE_METHOD"
96
- hash["time"] = Time.now.utc.strftime('%Y-%m-%d %H:%M:%S.%L')
97
-
98
- variables = []
99
-
100
- @context_binding.local_variables.each do |var|
101
- next if EXCLUDE_INSTANCE_VARIABLES.include?(var.to_s)
102
-
103
- value = @context_binding.local_variable_get(var)
104
- klass = self.class.type_of(value)
105
-
106
- data = {
107
- type: 'CAPTURE',
108
- time: Time.now.utc.strftime('%Y-%m-%d %H:%M:%S.%L'),
109
- event_name: var,
110
- identifier: nil,
111
- returned: value,
112
- meta: {
113
- from_klass: hash["class"],
114
- from_method: hash["method"],
115
- klass: klass.to_s,
116
- method: method.to_s,
117
- callers: callers,
118
- sublime_path: sublime_path,
119
- file: hash["file"],
120
- line: line_number
121
- }
122
- }
123
-
124
- variables << data
125
- end
126
-
127
- @context.instance_variables.each do |var|
128
- next if EXCLUDE_INSTANCE_VARIABLES.include?(var.to_s)
129
-
130
- value = @context.instance_variable_get(var.to_sym)
131
- klass = self.class.type_of(value)
132
-
133
- data = {
134
- type: 'CAPTURE',
135
- time: Time.now.utc.strftime('%Y-%m-%d %H:%M:%S.%L'),
136
- event_name: var,
137
- identifier: nil,
138
- returned: value,
139
- meta: {
140
- from_klass: hash["class"],
141
- from_method: hash["method"],
142
- klass: klass.to_s,
143
- method: method.to_s,
144
- # arguments: data[:arguments],
145
- callers: callers,
146
- # table_name: data[:table_name],
147
- # sql: data[:sql],
148
- sublime_path: sublime_path,
149
- file: hash["file"],
150
- line: line_number
151
- }
152
- }
153
-
154
- variables << data
155
- end
156
-
157
- hash["variables"] = variables
158
-
159
- hash
160
- end
161
-
162
- def klass_name
163
- value = if @context.class == "Class"
164
- @context
165
- else
166
- @context.class
167
- end
168
-
169
- value.to_s
170
- end
171
-
172
- def clear
173
- Dir["#{LOG_PATH.call}/localtower_capture_*.json"].each do |file|
174
- File.delete(file)
175
- end
176
-
177
- self
178
- end
179
-
180
- def save
181
- # We don't want to save logs in production:
182
- return nil if Rails.env.production?
183
-
184
- self.clear
185
-
186
- data = self.values
187
- file = "#{LOG_PATH.call}/localtower_capture_#{data['md5']}.json"
188
-
189
- File.open(file, 'w') { |f| f.write(data.to_json) }
190
- end
191
-
192
- def log(str)
193
- my_logger.info(str)
194
- end
195
- end
196
- end
197
- end
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :localtower do
3
- # # Task goes here
4
- # end
File without changes