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 +4 -4
- data/CHANGELOG.md +9 -0
- data/Rakefile +25 -0
- data/lib/activerecord/originator/arel_visitor_extension.rb +10 -8
- data/lib/activerecord/originator/version.rb +1 -1
- data/lib/activerecord/originator.rb +7 -1
- data/sig/activerecord/originator/arel_visitor_extension.rbs +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3d49cfc8d3525d43a35a9a6402ed9c49bb0a358eb3431037b4a950e6de6f8410
|
|
4
|
+
data.tar.gz: 3b346c2bd9f844d283a1b188638cddca0fb8c735e3deec856db820affca33210
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 261187b6b1048e29a61f8bae368f92e99d96f121df8a59c9ab2440900856cdb275cefd093d327b6953fc15c8e8c1cd04a7df7a9a4801c3d4c1498ed27aaf62db
|
|
7
|
+
data.tar.gz: 851b7be3ef5d544f86020c36d1a7ba2548cfd58af4d234a27c424a9b087404b199f1f2a5f41dd3b1e77510a531073e9f4fefd8855ecdceb656acf586d8f4c85e
|
data/CHANGELOG.md
ADDED
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
|
-
|
|
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
|
-
]
|
|
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)
|
|
@@ -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
|
-
|
|
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
|
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.
|
|
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-
|
|
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
|