arsi 1.0.0 → 1.1.1

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: 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: []