activerecord-originator 0.2.1 → 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: 293717934922e2684e5351b8f2c1abe48bb72f13706a3c3453496e92b501dd18
4
- data.tar.gz: 0c445a63206b42a5742727875d51bb95385e48d086d637966b784397d9acc6ba
3
+ metadata.gz: 1b3d3acaaba956be55494c54004735ba2fb569fa02dfc8f2f66cc2066cb64355
4
+ data.tar.gz: a92f7d7f51fe48150f3602e5ddef970a6ee2b7db3aa806b9bfb0d67a9616e84f
5
5
  SHA512:
6
- metadata.gz: 6aada6e56b8c43b7f0fe9c6520ffedbb6c9cb099e817815cbc48a67b7473903cbb8cf9cb0fe899354d7de1f5808ee81d315b8b7e5b976989270dc0e3b97ddbce
7
- data.tar.gz: 896311b48db01c18309b3d7d22c41b4dda6385c81cba5ff47fb3e568f6a569d82ff2d6fced94fe6a6996a688eef271a784008500e3ff183f020246b9783497c4
6
+ metadata.gz: 621707bfd9fc495c9d48cfc06002039f087edd6cf551999d0cae6b5d567af31ec517ebe9d9119cfc90d659a1012a055dc4f6ba03d21bf502065a3ad6d8ddcd3a
7
+ data.tar.gz: 2f606407113491b99c46f34d55a4eb0b97c4f42239518ac10add4c0f3dca201ec79479ae2e7bb482177b4d8fd54c8a7bc490f52d54aaaea4916a2f7770e932cc
data/.rubocop.yml CHANGED
@@ -19,3 +19,6 @@ Layout/FirstHashElementIndentation:
19
19
 
20
20
  Lint/AssignmentInCondition:
21
21
  Enabled: false
22
+
23
+ Gemspec/DevelopmentDependencies:
24
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
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
+
7
+ ## v0.2.2 - 2024-08-14
8
+
9
+ * Support Rails 7.2 [#22](https://github.com/pocke/activerecord-originator/pull/22)
10
+
3
11
  ## v0.2.1 - 2024-03-20
4
12
 
5
13
  This release does not affect the behavior of the library. It changes only RBS files.
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.
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 6.1.0'
4
+ gem 'benchmark', require: false
5
+ gem 'logger', require: false
6
+ gem "sqlite3", "~> 1.4"
7
+
8
+ gemspec path: '../'
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 7.0.0'
4
+ gem 'benchmark', require: false
5
+ gem 'logger', require: false
6
+ gem "sqlite3", "~> 1.4"
7
+
8
+ gemspec path: '../'
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 7.1.0'
4
+ gem 'benchmark', require: false
5
+ gem 'logger', require: false
6
+ gem "sqlite3", "~> 1.4"
7
+
8
+ gemspec path: '../'
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 7.2.0'
4
+ gem 'benchmark', require: false
5
+ gem 'logger', require: false
6
+
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)
@@ -32,6 +32,14 @@ module ActiveRecord
32
32
  def value
33
33
  @collector.value
34
34
  end
35
+
36
+ def retryable
37
+ @collector.retryable
38
+ end
39
+
40
+ def retryable=(v)
41
+ @collector.retryable = v
42
+ end
35
43
  end
36
44
  end
37
45
  end
@@ -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.1"
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,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-originator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masataka Pocke Kuwabara
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-03-20 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activerecord
@@ -38,6 +37,90 @@ dependencies:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
39
  version: '6.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: benchmark-ips
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rake
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rspec
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rubocop
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: sqlite3
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: steep
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
41
124
  description: This gem adds comments to the SQL to indicate where the SQL parts are
42
125
  constructed.
43
126
  email:
@@ -53,10 +136,17 @@ files:
53
136
  - README.md
54
137
  - Rakefile
55
138
  - Steepfile
139
+ - gemfiles/activerecord_6_1.gemfile
140
+ - gemfiles/activerecord_7_0.gemfile
141
+ - gemfiles/activerecord_7_1.gemfile
142
+ - gemfiles/activerecord_7_2.gemfile
56
143
  - lib/activerecord/originator.rb
57
144
  - lib/activerecord/originator/arel_node_extension.rb
58
145
  - lib/activerecord/originator/arel_visitor_extension.rb
59
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
60
150
  - lib/activerecord/originator/railtie.rb
61
151
  - lib/activerecord/originator/version.rb
62
152
  - rbs_collection.lock.yaml
@@ -66,6 +156,9 @@ files:
66
156
  - sig/activerecord/originator/arel_node_extension.rbs
67
157
  - sig/activerecord/originator/arel_visitor_extension.rbs
68
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
69
162
  - sig/activerecord/originator/version.rbs
70
163
  - sig/interfaces.rbs
71
164
  homepage: https://github.com/pocke/activerecord-originator
@@ -76,7 +169,6 @@ metadata:
76
169
  source_code_uri: https://github.com/pocke/activerecord-originator
77
170
  changelog_uri: https://github.com/pocke/activerecord-originator/blob/main/CHANGELOG.md
78
171
  rubygems_mfa_required: 'true'
79
- post_install_message:
80
172
  rdoc_options: []
81
173
  require_paths:
82
174
  - lib
@@ -91,8 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
183
  - !ruby/object:Gem::Version
92
184
  version: '0'
93
185
  requirements: []
94
- rubygems_version: 3.6.0.dev
95
- signing_key:
186
+ rubygems_version: 3.7.0.dev
96
187
  specification_version: 4
97
188
  summary: Add SQL comments to indicate the origin of the SQL.
98
189
  test_files: []