activerecord-originator 0.1.0 → 0.2.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: fa3749b460f4bf88f4ae707b69db1e2c32f41d7bfac6780ebafbc4e96375a730
4
- data.tar.gz: b130e6f429f7cd6acc167715a08797f9816f16d06fa990fc1ddda22c4d17700b
3
+ metadata.gz: 3d49cfc8d3525d43a35a9a6402ed9c49bb0a358eb3431037b4a950e6de6f8410
4
+ data.tar.gz: 3b346c2bd9f844d283a1b188638cddca0fb8c735e3deec856db820affca33210
5
5
  SHA512:
6
- metadata.gz: 30ce59ca0d48a39793d27a959db9a93dff186006ac83bb4fe220469cde766ac7627c9fe1e0b9f429ecb16e339481f95dbbc39ad7d656d82b1875ef88281f4216
7
- data.tar.gz: c502f0bf40254b8d92484e4a9fa5e5bdc20eb28a096e4a265fb94616dcca7f3ce4dc6f37e9c2e9a740666f4aeac31e68886fcd50ceb16797c43abd46506480fd
6
+ metadata.gz: 261187b6b1048e29a61f8bae368f92e99d96f121df8a59c9ab2440900856cdb275cefd093d327b6953fc15c8e8c1cd04a7df7a9a4801c3d4c1498ed27aaf62db
7
+ data.tar.gz: 851b7be3ef5d544f86020c36d1a7ba2548cfd58af4d234a27c424a9b087404b199f1f2a5f41dd3b1e77510a531073e9f4fefd8855ecdceb656acf586d8f4c85e
data/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ # CHANGELOG
2
+
3
+ ## v0.2.0 - 2024-03-16
4
+
5
+ * Avoid modifying unnecessary nodes for performance. [#15](https://github.com/pocke/activerecord-originator/pull/15)
6
+
7
+ ## v0.1.0 - 2024-03-13
8
+
9
+ * The first release!
data/Rakefile CHANGED
@@ -14,3 +14,28 @@ task :steep do
14
14
  end
15
15
 
16
16
  task default: %i[rubocop steep spec]
17
+
18
+ namespace :benchmark do
19
+ task :to_sql do
20
+ puts "# Benchmarking #to_sql mehtod"
21
+ puts
22
+ puts "## Wihtout AR::Originator"
23
+ sh 'ruby', 'benchmark/to_sql.rb'
24
+
25
+ puts
26
+ puts "## With AR::Originator"
27
+ sh 'ruby', '-r', 'activerecord/originator', 'benchmark/to_sql.rb'
28
+ end
29
+
30
+ task :select_query do
31
+ puts "# Benchmarking SELECT Query"
32
+ puts
33
+ puts "## Wihtout AR::Originator"
34
+ sh 'ruby', 'benchmark/select_query.rb'
35
+
36
+ puts
37
+ puts "## With AR::Originator"
38
+ sh 'ruby', '-r', 'activerecord/originator', 'benchmark/select_query.rb'
39
+ end
40
+ end
41
+ task benchmark: %i[benchmark:to_sql benchmark:select_query]
@@ -3,13 +3,7 @@
3
3
  module ActiveRecord
4
4
  module Originator
5
5
  module ArelVisitorExtension
6
- def accept(object, collector)
7
- super(object, CollectorProxy.new(collector))
8
- end
9
-
10
- private
11
-
12
- %i[
6
+ TARGET_NODE_CLASSESS = %i[
13
7
  Ascending
14
8
  Descending
15
9
  Equality
@@ -21,7 +15,15 @@ module ActiveRecord
21
15
  LessThan
22
16
  LessThanOrEqual
23
17
  GreaterThanOrEqual
24
- ].each do |klass_name|
18
+ ]
19
+
20
+ def accept(object, collector)
21
+ super(object, CollectorProxy.new(collector))
22
+ end
23
+
24
+ private
25
+
26
+ TARGET_NODE_CLASSESS.each do |klass_name|
25
27
  define_method(:"visit_Arel_Nodes_#{klass_name}") do |o, collector|
26
28
  __skip__ = begin
27
29
  comment = originator_comment(o)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecord
4
4
  module Originator
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
@@ -10,7 +10,13 @@ require_relative "originator/arel_node_extension"
10
10
  require_relative "originator/arel_visitor_extension"
11
11
  require_relative "originator/collector_proxy"
12
12
 
13
- Arel::Nodes::Node.descendants.each do |klass|
13
+ ActiveRecord::Originator::ArelVisitorExtension::TARGET_NODE_CLASSESS.each do |name|
14
+ begin
15
+ klass = Arel::Nodes.const_get(name)
16
+ rescue NameError
17
+ # Some classes are not defined in old arel
18
+ next
19
+ end
14
20
  klass.prepend ActiveRecord::Originator::ArelNodeExtension
15
21
  end
16
22
  Arel::Visitors::ToSql.prepend ActiveRecord::Originator::ArelVisitorExtension
@@ -1,6 +1,7 @@
1
1
  module ActiveRecord
2
2
  module Originator
3
3
  module ArelVisitorExtension : _ArelVisitor
4
+ TARGET_NODE_CLASSESS: Array[Symbol]
4
5
  def accept: (untyped object, _Collector collector) -> untyped
5
6
 
6
7
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-originator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masataka Pocke Kuwabara
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-13 00:00:00.000000000 Z
11
+ date: 2024-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -48,6 +48,7 @@ extra_rdoc_files: []
48
48
  files:
49
49
  - ".rspec"
50
50
  - ".rubocop.yml"
51
+ - CHANGELOG.md
51
52
  - LICENSE
52
53
  - README.md
53
54
  - Rakefile