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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aea5ecd2b64166843083b97523f85c66b2c07246d291b2b44f6d4ed814ec6a42
4
- data.tar.gz: 7810f158d8850861dfa9eafa974decf092b537503e82850269abbe67b7f415fc
3
+ metadata.gz: b528e9d79cdc0d21f70a93d39d631f2ad72f239eda03ea6d40a249ba85f00d81
4
+ data.tar.gz: 9fa5461a0c90bc0efbc3a85d2adaf913ca147425b83e378ed0c34c7ecf829da5
5
5
  SHA512:
6
- metadata.gz: f16b52a751b60ed9d6fe42f8dfe1989bc52b6e48e791c541d6dbfab83d969579507a062e82aa01789e992dd883869dc77c112e9e3f6553c7fd80da56a159eeef
7
- data.tar.gz: 6b4f455f599f1ce7e68d5518efb85d6b23bfdd800ab58fbab807573a288f78196ba340016926b4aeab2971e66a88cd2f5c79062b9f58907aaf6f956d3371adc6
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 which inherits from Arel::TreeManager.
6
- # We need where_sql on both Arel::UpdateManager and Arel::DeleteManager so we add it to the parent class.
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 @ctx.wheres.empty?
8
+ return if @ast.wheres.empty?
9
9
 
10
- viz = ::Arel::Visitors::WhereSql.new(engine.connection.visitor, engine.connection)
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
@@ -18,10 +18,6 @@ module Arsi
18
18
  !arsi_scopeable?
19
19
  end
20
20
 
21
- def _update_record(*)
22
- with_relation_in_connection { super }
23
- end
24
-
25
21
  def delete_all(*)
26
22
  with_relation_in_connection { super }
27
23
  end
data/lib/arsi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Arsi
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.1'
3
3
  end
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::TreeManager.include(ArelTreeManager)
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
- return arel.where_sql if relation.nil?
56
- return arel.where_sql unless relation.model.respond_to?(:arel_engine)
57
-
58
- arel.where_sql(relation.model.arel_engine)
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.0.0
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: 2022-03-16 00:00:00.000000000 Z
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.0.0
33
+ version: 5.2.0
48
34
  - - "<"
49
35
  - !ruby/object:Gem::Version
50
- version: '6.0'
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.0.0
43
+ version: 5.2.0
58
44
  - - "<"
59
45
  - !ruby/object:Gem::Version
60
- version: '6.0'
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.5.0
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.5
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: []