activerecord-originator 0.2.2 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7824731d65843f11d6514b7d600dfc5732ad8adf8bd91b7330f8ff95d2347070
4
- data.tar.gz: d352ceb565b52b2d2108d8a48b7d5c44e7553ff651cf507eadbe36603844a055
3
+ metadata.gz: 1b3d3acaaba956be55494c54004735ba2fb569fa02dfc8f2f66cc2066cb64355
4
+ data.tar.gz: a92f7d7f51fe48150f3602e5ddef970a6ee2b7db3aa806b9bfb0d67a9616e84f
5
5
  SHA512:
6
- metadata.gz: 1c09b7fa08b19e0ec51057508e0a0da9e2ce0708757749aa7715625ed8fcc072921f350515b30a5a0e4c928c94825eac8d3a078c8477fcc5c561f7ad15de7f68
7
- data.tar.gz: f5adfacbbba8ff05d832805c7ff22193f71de89feeccb8d5d519c3566711725623fb2a2fe84161136d5f148a4a3e70721b2051e7bde2ebfc4ea868f5b3be7e80
6
+ metadata.gz: 621707bfd9fc495c9d48cfc06002039f087edd6cf551999d0cae6b5d567af31ec517ebe9d9119cfc90d659a1012a055dc4f6ba03d21bf502065a3ad6d8ddcd3a
7
+ data.tar.gz: 2f606407113491b99c46f34d55a4eb0b97c4f42239518ac10add4c0f3dca201ec79479ae2e7bb482177b4d8fd54c8a7bc490f52d54aaaea4916a2f7770e932cc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.3.0 - 2025-04-25
4
+
5
+ * Support `ActiveRecord::Originator.format` option. [#26](https://github.com/pocke/activerecord-originator/pull/26)
6
+
3
7
  ## v0.2.2 - 2024-08-14
4
8
 
5
9
  * Support Rails 7.2 [#22](https://github.com/pocke/activerecord-originator/pull/22)
data/README.md CHANGED
@@ -26,6 +26,21 @@ $ bundle add activerecord-originator
26
26
  You do not need to do anything else. The gem will automatically add comments to the SQL.
27
27
  Check the logs to see the comments.
28
28
 
29
+ ### Configure format
30
+
31
+ You can set `ActiveRecord::Originator.format` to `:one_liner` if you prefer your SQL log in one line.
32
+
33
+ ```ruby
34
+ # in your configuration file
35
+ ActiveRecord::Originator.format = :one_liner
36
+ ```
37
+
38
+ Then you can get logs like below.
39
+
40
+ ```sql
41
+ Article Load (0.1ms) SELECT "articles".* FROM "articles" WHERE "articles"."status" = ? /* <- app/models/article.rb:3:in `published' */ AND "articles"."category_id" = ? /* <- app/controllers/articles_controller.rb:3:in `index' */ ORDER BY "articles"."created_at" DESC /* <- app/models/article.rb:4:in `order_by_latest' */
42
+ ```
43
+
29
44
  ## Development
30
45
 
31
46
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -1,6 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~> 6.1.0'
4
+ gem 'benchmark', require: false
5
+ gem 'logger', require: false
4
6
  gem "sqlite3", "~> 1.4"
5
7
 
6
8
  gemspec path: '../'
@@ -1,6 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~> 7.0.0'
4
+ gem 'benchmark', require: false
5
+ gem 'logger', require: false
4
6
  gem "sqlite3", "~> 1.4"
5
7
 
6
8
  gemspec path: '../'
@@ -1,6 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~> 7.1.0'
4
+ gem 'benchmark', require: false
5
+ gem 'logger', require: false
4
6
  gem "sqlite3", "~> 1.4"
5
7
 
6
8
  gemspec path: '../'
@@ -1,5 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~> 7.2.0'
4
+ gem 'benchmark', require: false
5
+ gem 'logger', require: false
4
6
 
5
7
  gemspec path: '../'
@@ -44,7 +44,7 @@ module ActiveRecord
44
44
  frame = traces.first
45
45
  return unless frame
46
46
 
47
- " /* #{escape_comment(frame)} */\n"
47
+ Originator.current_formatter.format(escape_comment(frame))
48
48
  end
49
49
 
50
50
  def escape_comment(comment)
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecord
4
+ module Originator
5
+ module Formatter
6
+ module Default
7
+ def self.format(comment)
8
+ " /* #{comment} */\n"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveRecord
4
+ module Originator
5
+ module Formatter
6
+ module OneLiner
7
+ def self.format(comment)
8
+ " /* <- #{comment} */"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "formatter/default"
4
+ require_relative "formatter/one_liner"
5
+
6
+ module ActiveRecord
7
+ module Originator
8
+ module Formatter
9
+ attr_reader :format, :current_formatter
10
+
11
+ def format=(format)
12
+ @format = format
13
+ resolve_formatter
14
+ end
15
+
16
+ def resolve_formatter
17
+ case format
18
+ when :one_liner
19
+ @current_formatter = OneLiner
20
+ else
21
+ @current_formatter = Default
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecord
4
4
  module Originator
5
- VERSION = "0.2.2"
5
+ VERSION = "0.3.0"
6
6
  end
7
7
  end
@@ -9,6 +9,7 @@ require_relative "originator/version"
9
9
  require_relative "originator/arel_node_extension"
10
10
  require_relative "originator/arel_visitor_extension"
11
11
  require_relative "originator/collector_proxy"
12
+ require_relative "originator/formatter"
12
13
 
13
14
  ActiveRecord::Originator::ArelVisitorExtension::TARGET_NODE_CLASSESS.each do |name|
14
15
  begin
@@ -23,8 +24,12 @@ Arel::Visitors::ToSql.prepend ActiveRecord::Originator::ArelVisitorExtension
23
24
 
24
25
  module ActiveRecord
25
26
  module Originator
27
+ extend Formatter
28
+
26
29
  mattr_accessor :backtrace_cleaner
27
30
  end
28
31
  end
29
32
 
33
+ ActiveRecord::Originator.format = :default
34
+
30
35
  require_relative "originator/railtie" if defined?(Rails)
@@ -2,19 +2,19 @@
2
2
  path: ".gem_rbs_collection"
3
3
  gems:
4
4
  - name: activemodel
5
- version: '7.0'
5
+ version: '7.1'
6
6
  source:
7
7
  type: git
8
8
  name: ruby/gem_rbs_collection
9
- revision: be76a75932e8ed6ee91a95ba936cf88b674bf044
9
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
10
10
  remote: https://github.com/ruby/gem_rbs_collection.git
11
11
  repo_dir: gems
12
12
  - name: activerecord
13
- version: '7.0'
13
+ version: '8.0'
14
14
  source:
15
15
  type: git
16
16
  name: ruby/gem_rbs_collection
17
- revision: be76a75932e8ed6ee91a95ba936cf88b674bf044
17
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
18
18
  remote: https://github.com/ruby/gem_rbs_collection.git
19
19
  repo_dir: gems
20
20
  - name: activesupport
@@ -22,23 +22,35 @@ gems:
22
22
  source:
23
23
  type: git
24
24
  name: ruby/gem_rbs_collection
25
- revision: be76a75932e8ed6ee91a95ba936cf88b674bf044
25
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
26
26
  remote: https://github.com/ruby/gem_rbs_collection.git
27
27
  repo_dir: gems
28
28
  - name: base64
29
+ version: '0.1'
30
+ source:
31
+ type: git
32
+ name: ruby/gem_rbs_collection
33
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
34
+ remote: https://github.com/ruby/gem_rbs_collection.git
35
+ repo_dir: gems
36
+ - name: benchmark
29
37
  version: '0'
30
38
  source:
31
39
  type: stdlib
32
40
  - name: bigdecimal
33
- version: '0'
41
+ version: '3.1'
34
42
  source:
35
- type: stdlib
43
+ type: git
44
+ name: ruby/gem_rbs_collection
45
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
46
+ remote: https://github.com/ruby/gem_rbs_collection.git
47
+ repo_dir: gems
36
48
  - name: concurrent-ruby
37
49
  version: '1.1'
38
50
  source:
39
51
  type: git
40
52
  name: ruby/gem_rbs_collection
41
- revision: be76a75932e8ed6ee91a95ba936cf88b674bf044
53
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
42
54
  remote: https://github.com/ruby/gem_rbs_collection.git
43
55
  repo_dir: gems
44
56
  - name: connection_pool
@@ -46,13 +58,21 @@ gems:
46
58
  source:
47
59
  type: git
48
60
  name: ruby/gem_rbs_collection
49
- revision: be76a75932e8ed6ee91a95ba936cf88b674bf044
61
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
50
62
  remote: https://github.com/ruby/gem_rbs_collection.git
51
63
  repo_dir: gems
52
64
  - name: date
53
65
  version: '0'
54
66
  source:
55
67
  type: stdlib
68
+ - name: delegate
69
+ version: '0'
70
+ source:
71
+ type: stdlib
72
+ - name: digest
73
+ version: '0'
74
+ source:
75
+ type: stdlib
56
76
  - name: erb
57
77
  version: '0'
58
78
  source:
@@ -62,7 +82,7 @@ gems:
62
82
  source:
63
83
  type: git
64
84
  name: ruby/gem_rbs_collection
65
- revision: be76a75932e8ed6ee91a95ba936cf88b674bf044
85
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
66
86
  remote: https://github.com/ruby/gem_rbs_collection.git
67
87
  repo_dir: gems
68
88
  - name: logger
@@ -70,14 +90,22 @@ gems:
70
90
  source:
71
91
  type: stdlib
72
92
  - name: minitest
73
- version: '0'
93
+ version: '5.25'
74
94
  source:
75
- type: stdlib
95
+ type: git
96
+ name: ruby/gem_rbs_collection
97
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
98
+ remote: https://github.com/ruby/gem_rbs_collection.git
99
+ repo_dir: gems
76
100
  - name: monitor
77
101
  version: '0'
78
102
  source:
79
103
  type: stdlib
80
104
  - name: mutex_m
105
+ version: 0.3.0
106
+ source:
107
+ type: rubygems
108
+ - name: openssl
81
109
  version: '0'
82
110
  source:
83
111
  type: stdlib
@@ -89,6 +117,18 @@ gems:
89
117
  version: '0'
90
118
  source:
91
119
  type: stdlib
120
+ - name: socket
121
+ version: '0'
122
+ source:
123
+ type: stdlib
124
+ - name: sqlite3
125
+ version: '2.0'
126
+ source:
127
+ type: git
128
+ name: ruby/gem_rbs_collection
129
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
130
+ remote: https://github.com/ruby/gem_rbs_collection.git
131
+ repo_dir: gems
92
132
  - name: time
93
133
  version: '0'
94
134
  source:
@@ -97,4 +137,16 @@ gems:
97
137
  version: '0'
98
138
  source:
99
139
  type: stdlib
140
+ - name: tzinfo
141
+ version: '2.0'
142
+ source:
143
+ type: git
144
+ name: ruby/gem_rbs_collection
145
+ revision: eb6867fdb70e82e3aac6b51623ed1b6760c3c072
146
+ remote: https://github.com/ruby/gem_rbs_collection.git
147
+ repo_dir: gems
148
+ - name: uri
149
+ version: '0'
150
+ source:
151
+ type: stdlib
100
152
  gemfile_lock_path: Gemfile.lock
@@ -15,6 +15,10 @@ module ActiveRecord
15
15
  def add_binds: (*untyped, **untyped) -> self
16
16
 
17
17
  def value: () -> untyped
18
+
19
+ def retryable: () -> untyped
20
+
21
+ def retryable=: [T] (T) -> T
18
22
  end
19
23
  end
20
24
  end
@@ -0,0 +1,9 @@
1
+ module ActiveRecord
2
+ module Originator
3
+ module Formatter
4
+ module Default
5
+ extend _Formatter
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module ActiveRecord
2
+ module Originator
3
+ module Formatter
4
+ module OneLiner
5
+ extend _Formatter
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module ActiveRecord
2
+ module Originator
3
+ module Formatter
4
+ attr_reader format: Symbol
5
+ def format=: (Symbol) -> void
6
+
7
+ attr_reader current_formatter: _Formatter
8
+
9
+ def resolve_formatter: () -> _Formatter
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,7 @@
1
1
  module ActiveRecord
2
2
  module Originator
3
+ extend Formatter
4
+
3
5
  attr_accessor self.backtrace_cleaner: ActiveSupport::BacktraceCleaner?
4
6
  end
5
7
  end
data/sig/interfaces.rbs CHANGED
@@ -9,4 +9,8 @@ module ActiveRecord::Originator
9
9
  def add_binds: (untyped, ?untyped) -> self
10
10
  def value: () -> untyped
11
11
  end
12
+
13
+ interface _Formatter
14
+ def format: (String) -> String
15
+ end
12
16
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-originator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masataka Pocke Kuwabara
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2024-08-14 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activerecord
@@ -144,6 +144,9 @@ files:
144
144
  - lib/activerecord/originator/arel_node_extension.rb
145
145
  - lib/activerecord/originator/arel_visitor_extension.rb
146
146
  - lib/activerecord/originator/collector_proxy.rb
147
+ - lib/activerecord/originator/formatter.rb
148
+ - lib/activerecord/originator/formatter/default.rb
149
+ - lib/activerecord/originator/formatter/one_liner.rb
147
150
  - lib/activerecord/originator/railtie.rb
148
151
  - lib/activerecord/originator/version.rb
149
152
  - rbs_collection.lock.yaml
@@ -153,6 +156,9 @@ files:
153
156
  - sig/activerecord/originator/arel_node_extension.rbs
154
157
  - sig/activerecord/originator/arel_visitor_extension.rbs
155
158
  - sig/activerecord/originator/collector_proxy.rbs
159
+ - sig/activerecord/originator/formatter.rbs
160
+ - sig/activerecord/originator/formatter/default.rbs
161
+ - sig/activerecord/originator/formatter/one_liner.rbs
156
162
  - sig/activerecord/originator/version.rbs
157
163
  - sig/interfaces.rbs
158
164
  homepage: https://github.com/pocke/activerecord-originator
@@ -177,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
183
  - !ruby/object:Gem::Version
178
184
  version: '0'
179
185
  requirements: []
180
- rubygems_version: 3.6.0.dev
186
+ rubygems_version: 3.7.0.dev
181
187
  specification_version: 4
182
188
  summary: Add SQL comments to indicate the origin of the SQL.
183
189
  test_files: []