arsi 1.0.0 → 1.1.1
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/lib/arsi/arel_tree_manager.rb +4 -5
- data/lib/arsi/persistence.rb +26 -0
- data/lib/arsi/relation.rb +0 -4
- data/lib/arsi/version.rb +1 -1
- data/lib/arsi.rb +9 -5
- metadata +12 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b528e9d79cdc0d21f70a93d39d631f2ad72f239eda03ea6d40a249ba85f00d81
|
4
|
+
data.tar.gz: 9fa5461a0c90bc0efbc3a85d2adaf913ca147425b83e378ed0c34c7ecf829da5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5646db280bf628a6e75a1dffa57794a64a2ffbd2ff18942b04aec3fa35eaa9c7b8ccf4040078295404542d5c19fc391d01bc4ba1ab7af058c85cb3cddf75bcb
|
7
|
+
data.tar.gz: be068e843094617e04279a4917e802a047f88f6ada372604a1e5c2dee1d7c7b790c65a71662c56ea817aeaf74602234182254908615208c49de008743de4b237
|
@@ -2,13 +2,12 @@ require 'arel'
|
|
2
2
|
|
3
3
|
module Arsi
|
4
4
|
module ArelTreeManager
|
5
|
-
# This is from Arel::SelectManager
|
6
|
-
#
|
5
|
+
# This is inspired from Arel::SelectManager, a subclass of Arel::TreeManager
|
6
|
+
# just like Arel::UpdateManager and Arel::DeleteManager.
|
7
7
|
def where_sql(engine = ::Arel::Table.engine)
|
8
|
-
return if @
|
8
|
+
return if @ast.wheres.empty?
|
9
9
|
|
10
|
-
|
11
|
-
::Arel::Nodes::SqlLiteral.new viz.accept(@ctx, ::Arel::Collectors::SQLString.new).value
|
10
|
+
::Arel::Nodes::SqlLiteral.new("WHERE #{::Arel::Nodes::And.new(@ast.wheres).to_sql(engine)}")
|
12
11
|
end
|
13
12
|
end
|
14
13
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Arsi
|
2
|
+
module Persistence
|
3
|
+
def self.prepended(klass)
|
4
|
+
klass.singleton_class.prepend(ClassMethods)
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def _update_record(*)
|
9
|
+
with_relation_in_connection { super }
|
10
|
+
end
|
11
|
+
|
12
|
+
def _delete_record(*)
|
13
|
+
with_relation_in_connection { super }
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def with_relation_in_connection
|
19
|
+
connection.arsi_relation = self.unscoped
|
20
|
+
yield
|
21
|
+
ensure
|
22
|
+
connection.arsi_relation = nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/arsi/relation.rb
CHANGED
data/lib/arsi/version.rb
CHANGED
data/lib/arsi.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
require 'arsi/arel_tree_manager'
|
2
2
|
require 'arsi/mysql2_adapter'
|
3
|
+
require 'arsi/persistence'
|
3
4
|
require 'arsi/relation'
|
4
5
|
require 'active_record'
|
5
6
|
require 'active_record/connection_adapters/mysql2_adapter'
|
6
7
|
|
7
8
|
module Arsi
|
8
9
|
class UnscopedSQL < StandardError; end
|
9
|
-
Arel::
|
10
|
+
Arel::UpdateManager.include(ArelTreeManager)
|
11
|
+
Arel::DeleteManager.include(ArelTreeManager)
|
10
12
|
ActiveRecord::ConnectionAdapters::Mysql2Adapter.prepend(Mysql2Adapter)
|
13
|
+
ActiveRecord::Base.prepend(Persistence)
|
11
14
|
ActiveRecord::Relation.prepend(Relation)
|
12
15
|
ActiveRecord::Querying.delegate(:without_arsi, :to => :relation)
|
13
16
|
|
@@ -52,10 +55,11 @@ module Arsi
|
|
52
55
|
private
|
53
56
|
|
54
57
|
def arel_where_sql(arel, relation)
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
58
|
+
if relation.nil?
|
59
|
+
arel.where_sql
|
60
|
+
else
|
61
|
+
arel.where_sql(relation.model)
|
62
|
+
end
|
59
63
|
end
|
60
64
|
|
61
65
|
def sql_check!(sql, relation)
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arsi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Kintner
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: arel
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: mysql2
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,20 +30,20 @@ dependencies:
|
|
44
30
|
requirements:
|
45
31
|
- - ">="
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: 5.
|
33
|
+
version: 5.2.0
|
48
34
|
- - "<"
|
49
35
|
- !ruby/object:Gem::Version
|
50
|
-
version: '
|
36
|
+
version: '7.1'
|
51
37
|
type: :runtime
|
52
38
|
prerelease: false
|
53
39
|
version_requirements: !ruby/object:Gem::Requirement
|
54
40
|
requirements:
|
55
41
|
- - ">="
|
56
42
|
- !ruby/object:Gem::Version
|
57
|
-
version: 5.
|
43
|
+
version: 5.2.0
|
58
44
|
- - "<"
|
59
45
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
46
|
+
version: '7.1'
|
61
47
|
- !ruby/object:Gem::Dependency
|
62
48
|
name: bump
|
63
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,13 +125,14 @@ files:
|
|
139
125
|
- lib/arsi.rb
|
140
126
|
- lib/arsi/arel_tree_manager.rb
|
141
127
|
- lib/arsi/mysql2_adapter.rb
|
128
|
+
- lib/arsi/persistence.rb
|
142
129
|
- lib/arsi/relation.rb
|
143
130
|
- lib/arsi/version.rb
|
144
131
|
homepage: https://github.com/zendesk/arsi
|
145
132
|
licenses:
|
146
133
|
- Apache License Version 2.0
|
147
134
|
metadata: {}
|
148
|
-
post_install_message:
|
135
|
+
post_install_message:
|
149
136
|
rdoc_options: []
|
150
137
|
require_paths:
|
151
138
|
- lib
|
@@ -153,15 +140,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
140
|
requirements:
|
154
141
|
- - ">="
|
155
142
|
- !ruby/object:Gem::Version
|
156
|
-
version: 2.
|
143
|
+
version: 2.7.0
|
157
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
145
|
requirements:
|
159
146
|
- - ">="
|
160
147
|
- !ruby/object:Gem::Version
|
161
148
|
version: '0'
|
162
149
|
requirements: []
|
163
|
-
rubygems_version: 3.3.
|
164
|
-
signing_key:
|
150
|
+
rubygems_version: 3.0.3.1
|
151
|
+
signing_key:
|
165
152
|
specification_version: 4
|
166
153
|
summary: ActiveRecord SQL Inspector
|
167
154
|
test_files: []
|