activerecord-originator 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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