execution_time 0.1.0 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 442112d9c9feb0bf2e01861f7ab6d3c0bd812133cf9523005fcd792c261558cc
4
- data.tar.gz: c177f92ed4ca9683c6db8ece732622252d483f7162d9eb61f222cb436b353c68
3
+ metadata.gz: db79ec20431ed5134a18fb0b21029400df60851760d2bf4e5390d4f22a3d0b69
4
+ data.tar.gz: 1f6a6575fba8d55758c9a2a6b591d3084f418b390ef9ec1884e7e67399f7315f
5
5
  SHA512:
6
- metadata.gz: a4eddc87a2234c1943a29d5b2e5a1b9db919e36ee8a076953627f2cd9aaa3b85b1412489b58be074f73d62c58112377d11241c1a6c99d1650dc56f12d911e6f3
7
- data.tar.gz: 7283093d13704a632d5f8c68f1aa83696cd118a2d8f1e737a2d4212a5b92c3d24b8540ce94e0a4e9cfefbd00803bebb249c1e2f98a9a51dccf08a383233107ff
6
+ metadata.gz: 4efa6a6e4482fc17fcdcf8637c2f835e8fddf5f10446f21288bd6da669e66fc20611e2dbe3f2d136d61f42caa833d148727fcb9824f032499a0c9c070d6a751d
7
+ data.tar.gz: be78c6409bf4ce01056a367a0921db07a44af8738f242a404949d1654a9e72aae10158b0c9e3db16fd866cb6a3fa81bad6d3ace7b9640bd91a120af46256ad7b
data/README.md CHANGED
@@ -1,14 +1,29 @@
1
1
  # ExecutionTime
2
2
 
3
- This gem can get you an execution time info similar to processed requests directly in rails console.
3
+ Monitor execution time and other metrics directly in `rails console`, similar to what you see after each request.
4
4
 
5
5
  `[METRICS] Completed in 908.3ms | Allocations: 2894 | ActiveRecord: 0.9ms (queries: 13)`
6
6
 
7
+ <img src="https://github.com/igorkasyanchuk/execution_time/blob/master/docs/execution_time_new.gif?raw=true" width="90%" />
8
+
7
9
  ## Usage
8
10
 
9
11
  Just add this gem to the Gemfile and start `rails c`. After this try to do something like `User.first`.
10
12
 
11
- If you want to measure few lines of code just wrap it with `begin/end`.
13
+ If you want to measure few lines of code just wrap it with `begin/end`:
14
+
15
+ ```ruby
16
+ [4] pry(main)> begin
17
+ [4] pry(main)* User.first.first_name.size
18
+ [4] pry(main)* a = User.count + 1
19
+ [4] pry(main)* b = User.second.last_name.size
20
+ [4] pry(main)* end
21
+ User Load (0.4ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1 [["LIMIT", 1]]
22
+ (3.6ms) SELECT COUNT(*) FROM "users"
23
+ User Load (0.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1 OFFSET $2 [["LIMIT", 1], ["OFFSET", 1]]
24
+ [METRICS] Completed in 6.8ms | Allocations: 839 | ActiveRecord: 4.3ms (queries: 3)
25
+ => 5
26
+ ```
12
27
 
13
28
  ## Installation
14
29
 
@@ -20,11 +35,22 @@ gem 'execution_time'
20
35
 
21
36
  ## First run
22
37
 
23
- Sometime you can see that there are more SQL queries or allocated objects because Ruby just loading objects in memory or verifying connection to the DB.
38
+ Sometime you can see that there are more SQL queries or allocated objects because Ruby is just loading objects in memory or verifying connection to the DB.
39
+
40
+ ## How to disable/enable metrics output in the console
41
+
42
+ If you need to disable gem in the console you can do it by `ExecutionTime.disable!`. And later enable with `ExecutionTime.enable!`.
43
+
44
+ By default gem is enabled.
45
+
24
46
 
25
47
  ## Contributing
26
48
 
27
49
  You are welcome to contribute.
28
50
 
51
+ ## Contributos
52
+
53
+ - https://github.com/nbulaj
54
+
29
55
  ## License
30
56
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -1,3 +1,3 @@
1
1
  module ExecutionTime
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.3'
3
3
  end
@@ -1,6 +1,17 @@
1
1
  require "execution_time/railtie"
2
2
 
3
3
  module ExecutionTime
4
+ mattr_accessor :enabled
5
+ @@enabled = true
6
+
7
+ def ExecutionTime.enable!
8
+ @@enabled = true
9
+ end
10
+
11
+ def ExecutionTime.disable!
12
+ @@enabled = false
13
+ end
14
+
4
15
  class AppMetrics
5
16
  @@counter = 0
6
17
 
@@ -32,16 +43,18 @@ module ExecutionTime
32
43
 
33
44
  class Measurer
34
45
  def Measurer.watch
46
+ return yield unless ExecutionTime.enabled
47
+
35
48
  AppMetrics.reset
36
49
 
37
- start = Time.now
50
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
38
51
  before = GC.stat(:total_allocated_objects)
39
52
  ActiveRecord::LogSubscriber.reset_runtime
40
53
 
41
54
  result = yield
42
55
 
43
56
  after = GC.stat(:total_allocated_objects)
44
- duration = (Time.now - start)
57
+ duration = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start)
45
58
  db_after = ActiveRecord::LogSubscriber.reset_runtime
46
59
 
47
60
  info = "Completed in #{(duration * 1000).round(1)}ms | Allocations: #{after - before}"
@@ -59,7 +72,11 @@ module ExecutionTime
59
72
  module IrbContextExt
60
73
  def evaluate(*args)
61
74
  Measurer.watch do
62
- super(*args)
75
+ if RUBY_VERSION.to_s =~ /^3/
76
+ super(args[0], args[1], **args[2])
77
+ else
78
+ super(*args)
79
+ end
63
80
  end
64
81
  end
65
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: execution_time
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Kasyanchuk
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-14 00:00:00.000000000 Z
11
+ date: 2022-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -56,7 +56,7 @@ homepage: https://github.com/igorkasyanchuk
56
56
  licenses:
57
57
  - MIT
58
58
  metadata: {}
59
- post_install_message:
59
+ post_install_message:
60
60
  rdoc_options: []
61
61
  require_paths:
62
62
  - lib
@@ -71,8 +71,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  - !ruby/object:Gem::Version
72
72
  version: '0'
73
73
  requirements: []
74
- rubygems_version: 3.0.3
75
- signing_key:
74
+ rubygems_version: 3.2.3
75
+ signing_key:
76
76
  specification_version: 4
77
77
  summary: Measure execution time in Rails console
78
78
  test_files: []