arsi 0.3.0 → 0.4.3

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
- SHA1:
3
- metadata.gz: a823949fda3f493e0f892d441820f2e3fbb02a6e
4
- data.tar.gz: b95f8517a5ba5c3942b9d4fb6f50f67f7664c858
2
+ SHA256:
3
+ metadata.gz: ea7a4a5e12e9e4a35319a230ebf3b4310db0e0d02582da4840d93c85d714cca6
4
+ data.tar.gz: 22f1bda30e928de04e48ceea8de894e67cbd1e1c14d44d7b72c98cfc5c25a87c
5
5
  SHA512:
6
- metadata.gz: ecac706249fab2d17ab49748783b8a929f9dcab52b3cc5daa582be70514428cdc317795786aa928e5141d658f9e630cbcb0955173bed30a75efc7b4302ae242e
7
- data.tar.gz: 2974f6f056397e5f5fb56fc8124e5182f82b9738973f9e0b23a5c8cfc790c1d2420a43d528ff01e104c42c007543bd5d828602658235e6f2639d8b7c265a2a6b
6
+ metadata.gz: de787c78a923844c619250378ede3267f4b72e89b207dce90a1b085938c3f2d9ebb441d6780dc00321a71130064f28546f89278c8e00fb3e54122783d9749ae2
7
+ data.tar.gz: ee136b4e0cc3cde3289679b3a487bd21982085e96c42e1964dc8bce66ff9367f3e2f4b4edebbf1b5534013c4e7e019af2934fc64157367d0c004aad68f5b6d01
data/README.md CHANGED
@@ -1,6 +1,4 @@
1
- # ARSI - ActiveRecord SQL Inspector
2
-
3
- [![Build Status](https://travis-ci.org/zendesk/arsi.svg?branch=master)](https://travis-ci.org/zendesk/arsi)
1
+ # ARSI - ActiveRecord SQL Inspector [![CI](https://github.com/zendesk/arsi/actions/workflows/actions.yml/badge.svg)](https://github.com/zendesk/arsi/actions/workflows/actions.yml)
4
2
 
5
3
  Block sql statements that are not scoped by id in `.update_all` and `.delete_all`.
6
4
 
@@ -2,20 +2,29 @@ require 'arel'
2
2
 
3
3
  module Arsi
4
4
  module ArelTreeManager
5
+ AREL_WHERE_SQL_ARITY_1 = ::Arel::VERSION[0].to_i < 7
6
+ AREL_WHERE_SQL_ENGINE_ACCESSOR = ::Arel::VERSION[0].to_i < 9
7
+
5
8
  # This is from Arel::SelectManager which inherits from Arel::TreeManager.
6
9
  # We need where_sql on both Arel::UpdateManager and Arel::DeleteManager so we add it to the parent class.
7
- if ::Arel::VERSION.start_with?('6')
8
- def where_sql
9
- return if @ctx.wheres.empty?
10
- viz = ::Arel::Visitors::WhereSql.new @engine.connection
11
- ::Arel::Nodes::SqlLiteral.new viz.accept(@ctx, ::Arel::Collectors::SQLString.new).value
10
+ def where_sql(provided_engine = :none)
11
+ return if @ctx.wheres.empty?
12
+
13
+ selected_engine = provided_engine
14
+ if selected_engine == :none
15
+ selected_engine = if AREL_WHERE_SQL_ENGINE_ACCESSOR
16
+ self.engine || ::Arel::Table.engine
17
+ else
18
+ Arel::Table.engine
19
+ end
12
20
  end
13
- else
14
- def where_sql
15
- return if @ctx.wheres.empty?
16
- viz = ::Arel::Visitors::WhereSql.new @engine.connection
17
- ::Arel::Nodes::SqlLiteral.new viz.accept @ctx
21
+
22
+ viz = if AREL_WHERE_SQL_ARITY_1
23
+ ::Arel::Visitors::WhereSql.new selected_engine.connection
24
+ else
25
+ ::Arel::Visitors::WhereSql.new(selected_engine.connection.visitor, selected_engine.connection)
18
26
  end
27
+ ::Arel::Nodes::SqlLiteral.new viz.accept(@ctx, ::Arel::Collectors::SQLString.new).value
19
28
  end
20
29
  end
21
30
  end
data/lib/arsi/relation.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Arsi
2
2
  module Relation
3
- attr_accessor :without_arsi
3
+ attr_writer :without_arsi
4
4
 
5
5
  def without_arsi
6
6
  if block_given?
@@ -14,7 +14,8 @@ module Arsi
14
14
  end
15
15
 
16
16
  def without_arsi?
17
- @without_arsi || !arsi_scopeable?
17
+ return @without_arsi if defined?(@without_arsi) && @without_arsi
18
+ !arsi_scopeable?
18
19
  end
19
20
 
20
21
  def delete_all(*)
data/lib/arsi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Arsi
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.3'
3
3
  end
data/lib/arsi.rb CHANGED
@@ -21,6 +21,7 @@ module Arsi
21
21
  end
22
22
 
23
23
  class << self
24
+ attr_reader :enabled
24
25
  attr_accessor :violation_callback
25
26
 
26
27
  def sql_check!(sql, relation)
@@ -30,6 +31,7 @@ module Arsi
30
31
  end
31
32
 
32
33
  def arel_check!(arel, relation)
34
+ return unless @enabled
33
35
  sql = arel.respond_to?(:ast) ? arel.where_sql : arel.to_s
34
36
  sql_check!(sql, relation)
35
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.3
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: 2015-09-23 00:00:00.000000000 Z
11
+ date: 2022-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arel
@@ -42,22 +42,22 @@ dependencies:
42
42
  name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 3.2.15
47
+ version: 5.0.0
48
48
  - - "<"
49
49
  - !ruby/object:Gem::Version
50
- version: 4.3.0
50
+ version: '6.0'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - ">"
55
+ - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: 3.2.15
57
+ version: 5.0.0
58
58
  - - "<"
59
59
  - !ruby/object:Gem::Version
60
- version: 4.3.0
60
+ version: '6.0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: bump
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -72,20 +72,6 @@ dependencies:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
- - !ruby/object:Gem::Dependency
76
- name: bundler
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
75
  - !ruby/object:Gem::Dependency
90
76
  name: rake
91
77
  requirement: !ruby/object:Gem::Requirement
@@ -143,21 +129,7 @@ dependencies:
143
129
  - !ruby/object:Gem::Version
144
130
  version: '0'
145
131
  - !ruby/object:Gem::Dependency
146
- name: wwtd
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: '0'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: '0'
159
- - !ruby/object:Gem::Dependency
160
- name: byebug
132
+ name: single_cov
161
133
  requirement: !ruby/object:Gem::Requirement
162
134
  requirements:
163
135
  - - ">="
@@ -187,7 +159,7 @@ homepage: https://github.com/zendesk/arsi
187
159
  licenses:
188
160
  - Apache License Version 2.0
189
161
  metadata: {}
190
- post_install_message:
162
+ post_install_message:
191
163
  rdoc_options: []
192
164
  require_paths:
193
165
  - lib
@@ -202,9 +174,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
174
  - !ruby/object:Gem::Version
203
175
  version: '0'
204
176
  requirements: []
205
- rubyforge_project:
206
- rubygems_version: 2.2.2
207
- signing_key:
177
+ rubygems_version: 3.3.8
178
+ signing_key:
208
179
  specification_version: 4
209
180
  summary: ActiveRecord SQL Inspector
210
181
  test_files: []