rubocop-config-captive 2.0.3.pre.2.0.2 → 2.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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3d110c3b8b4d74c53467fe19714dfc220ff2f82f65b5a52d81563e860ca8d107
|
|
4
|
+
data.tar.gz: e3f41020eef68b55149dae6ceaed53db082905169eece57a0eec54db6cbf956c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 26f2dbad2e10ac9a7b59e0765648b6d4041329bda1c30e4469b8de9b6e169e4345389e2d886686d8863392f9a123ec0a89a1e01c114128bc56be494c8aeac207
|
|
7
|
+
data.tar.gz: e7805305fa74912ce3a8b6892f27e2b4627e32e2e41b57c6722d48b582b7687f8b69c21a6bd73028aa7916a69950f3d5dfaae474b29aeb77b0482b698fe3ac06
|
data/config/rubocop-captive.yml
CHANGED
|
@@ -11,6 +11,7 @@ require:
|
|
|
11
11
|
- ../lib/rubocop/cop/captive/rails/no_email_from_controller.rb
|
|
12
12
|
- ../lib/rubocop/cop/captive/rails/no_float_price_columns.rb
|
|
13
13
|
- ../lib/rubocop/cop/captive/rails/no_find_by_in_scope.rb
|
|
14
|
+
- ../lib/rubocop/cop/captive/rails/no_has_many_attached.rb
|
|
14
15
|
- ../lib/rubocop/cop/captive/string_where_in_scope.rb
|
|
15
16
|
- ../lib/rubocop/cop/captive/no_app_env.rb
|
|
16
17
|
|
|
@@ -82,6 +83,12 @@ Captive/Rails/NoFindByInScope:
|
|
|
82
83
|
Include:
|
|
83
84
|
- 'app/models/**/*'
|
|
84
85
|
|
|
86
|
+
Captive/Rails/NoHasManyAttached:
|
|
87
|
+
Description: "N'utilisez pas `has_many_attached` (Active Storage). Préférez un modèle associé avec `has_one_attached` pour pouvoir ajouter des attributs (position, image de couverture, etc.)."
|
|
88
|
+
Severity: error
|
|
89
|
+
Include:
|
|
90
|
+
- 'app/models/**/*'
|
|
91
|
+
|
|
85
92
|
# other
|
|
86
93
|
Captive/StringWhereInScope:
|
|
87
94
|
Description: 'The `where` method should be used in a scope in a model.'
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RuboCop
|
|
4
|
+
module Cop
|
|
5
|
+
module Captive
|
|
6
|
+
module Rails
|
|
7
|
+
# Interdit l'utilisation de `has_many_attached` (Active Storage) dans les modèles Rails.
|
|
8
|
+
#
|
|
9
|
+
# À chaque utilisation de `has_many_attached`, on finit par avoir besoin d'informations
|
|
10
|
+
# supplémentaires sur les fichiers (image de couverture, position, ordre, etc.), ce qu'on
|
|
11
|
+
# ne peut pas faire avec des blobs seuls. Par exemple, un produit avec `has_many_attached
|
|
12
|
+
# :images` permet d'afficher la première image en couverture, mais si cette image s'avère
|
|
13
|
+
# être une grille de tailles et qu'on veut en choisir une autre, c'est impossible : les
|
|
14
|
+
# pièces jointes sont de simples blobs sans attributs métier.
|
|
15
|
+
#
|
|
16
|
+
# La solution recommandée est d'utiliser un modèle associé (ex. `Photo`) avec
|
|
17
|
+
# `has_one_attached :file` et des attributs (position, type, etc.). Cela évite une
|
|
18
|
+
# migration coûteuse plus tard pour faire passer des millions d'images de blobs à un
|
|
19
|
+
# vrai modèle.
|
|
20
|
+
#
|
|
21
|
+
# @see https://discuss.rubyonrails.org/t/active-storage-in-production-lessons-learned-and-in-depth-look-at-how-it-works/83289#p-254385-bonus-1-if-someone-were-to-write-active-storage-the-good-parts-then-has_many_attached-would-not-be-in-it-31
|
|
22
|
+
class NoHasManyAttached < Base
|
|
23
|
+
MSG = "N'utilisez pas `has_many_attached`. Préférez un modèle associé avec " \
|
|
24
|
+
"`has_one_attached` pour pouvoir ajouter des attributs " \
|
|
25
|
+
"(position, image de couverture, etc.)."
|
|
26
|
+
|
|
27
|
+
def_node_matcher :has_many_attached?, <<~PATTERN
|
|
28
|
+
(send nil? :has_many_attached ...)
|
|
29
|
+
PATTERN
|
|
30
|
+
|
|
31
|
+
def on_send(node)
|
|
32
|
+
return unless has_many_attached?(node)
|
|
33
|
+
|
|
34
|
+
add_offense(node, message: MSG)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -23,14 +23,14 @@ Gem::Specification.new do |gem|
|
|
|
23
23
|
|
|
24
24
|
# Pour mettre à jour les dépendances, vous pouvez utiliser le script :
|
|
25
25
|
# ruby script/update_dependencies.rb
|
|
26
|
-
gem.add_dependency("rubocop", "~> 1.77
|
|
27
|
-
gem.add_dependency("rubocop-performance", "~> 1.25
|
|
28
|
-
gem.add_dependency("rubocop-rake", "~> 0.7
|
|
29
|
-
gem.add_dependency("rubocop-rails", "~> 2.32
|
|
30
|
-
gem.add_dependency("rubocop-rspec", "~> 3.6
|
|
31
|
-
gem.add_dependency("rubocop-capybara", "~> 2.22
|
|
32
|
-
gem.add_dependency("rubocop-factory_bot", "~> 2.27
|
|
33
|
-
gem.add_dependency("rubocop-magic_numbers", "~> 0.5
|
|
34
|
-
gem.add_dependency("rubocop-rails-omakase", "~> 1.1
|
|
26
|
+
gem.add_dependency("rubocop", "~> 1.77")
|
|
27
|
+
gem.add_dependency("rubocop-performance", "~> 1.25")
|
|
28
|
+
gem.add_dependency("rubocop-rake", "~> 0.7")
|
|
29
|
+
gem.add_dependency("rubocop-rails", "~> 2.32")
|
|
30
|
+
gem.add_dependency("rubocop-rspec", "~> 3.6")
|
|
31
|
+
gem.add_dependency("rubocop-capybara", "~> 2.22")
|
|
32
|
+
gem.add_dependency("rubocop-factory_bot", "~> 2.27")
|
|
33
|
+
gem.add_dependency("rubocop-magic_numbers", "~> 0.5")
|
|
34
|
+
gem.add_dependency("rubocop-rails-omakase", "~> 1.1")
|
|
35
35
|
gem.add_development_dependency("rspec", "~> 3.12")
|
|
36
36
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubocop-config-captive
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Captive
|
|
@@ -17,126 +17,126 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - "~>"
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 1.77
|
|
20
|
+
version: '1.77'
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - "~>"
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: 1.77
|
|
27
|
+
version: '1.77'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: rubocop-performance
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 1.25
|
|
34
|
+
version: '1.25'
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - "~>"
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: 1.25
|
|
41
|
+
version: '1.25'
|
|
42
42
|
- !ruby/object:Gem::Dependency
|
|
43
43
|
name: rubocop-rake
|
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
|
45
45
|
requirements:
|
|
46
46
|
- - "~>"
|
|
47
47
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: 0.7
|
|
48
|
+
version: '0.7'
|
|
49
49
|
type: :runtime
|
|
50
50
|
prerelease: false
|
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
|
52
52
|
requirements:
|
|
53
53
|
- - "~>"
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: 0.7
|
|
55
|
+
version: '0.7'
|
|
56
56
|
- !ruby/object:Gem::Dependency
|
|
57
57
|
name: rubocop-rails
|
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
|
59
59
|
requirements:
|
|
60
60
|
- - "~>"
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: 2.32
|
|
62
|
+
version: '2.32'
|
|
63
63
|
type: :runtime
|
|
64
64
|
prerelease: false
|
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
66
|
requirements:
|
|
67
67
|
- - "~>"
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: 2.32
|
|
69
|
+
version: '2.32'
|
|
70
70
|
- !ruby/object:Gem::Dependency
|
|
71
71
|
name: rubocop-rspec
|
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
|
73
73
|
requirements:
|
|
74
74
|
- - "~>"
|
|
75
75
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: 3.6
|
|
76
|
+
version: '3.6'
|
|
77
77
|
type: :runtime
|
|
78
78
|
prerelease: false
|
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
80
|
requirements:
|
|
81
81
|
- - "~>"
|
|
82
82
|
- !ruby/object:Gem::Version
|
|
83
|
-
version: 3.6
|
|
83
|
+
version: '3.6'
|
|
84
84
|
- !ruby/object:Gem::Dependency
|
|
85
85
|
name: rubocop-capybara
|
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
|
87
87
|
requirements:
|
|
88
88
|
- - "~>"
|
|
89
89
|
- !ruby/object:Gem::Version
|
|
90
|
-
version: 2.22
|
|
90
|
+
version: '2.22'
|
|
91
91
|
type: :runtime
|
|
92
92
|
prerelease: false
|
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
94
94
|
requirements:
|
|
95
95
|
- - "~>"
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
|
-
version: 2.22
|
|
97
|
+
version: '2.22'
|
|
98
98
|
- !ruby/object:Gem::Dependency
|
|
99
99
|
name: rubocop-factory_bot
|
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
|
101
101
|
requirements:
|
|
102
102
|
- - "~>"
|
|
103
103
|
- !ruby/object:Gem::Version
|
|
104
|
-
version: 2.27
|
|
104
|
+
version: '2.27'
|
|
105
105
|
type: :runtime
|
|
106
106
|
prerelease: false
|
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
|
108
108
|
requirements:
|
|
109
109
|
- - "~>"
|
|
110
110
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: 2.27
|
|
111
|
+
version: '2.27'
|
|
112
112
|
- !ruby/object:Gem::Dependency
|
|
113
113
|
name: rubocop-magic_numbers
|
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
|
115
115
|
requirements:
|
|
116
116
|
- - "~>"
|
|
117
117
|
- !ruby/object:Gem::Version
|
|
118
|
-
version: 0.5
|
|
118
|
+
version: '0.5'
|
|
119
119
|
type: :runtime
|
|
120
120
|
prerelease: false
|
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
122
122
|
requirements:
|
|
123
123
|
- - "~>"
|
|
124
124
|
- !ruby/object:Gem::Version
|
|
125
|
-
version: 0.5
|
|
125
|
+
version: '0.5'
|
|
126
126
|
- !ruby/object:Gem::Dependency
|
|
127
127
|
name: rubocop-rails-omakase
|
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
|
129
129
|
requirements:
|
|
130
130
|
- - "~>"
|
|
131
131
|
- !ruby/object:Gem::Version
|
|
132
|
-
version: 1.1
|
|
132
|
+
version: '1.1'
|
|
133
133
|
type: :runtime
|
|
134
134
|
prerelease: false
|
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
|
136
136
|
requirements:
|
|
137
137
|
- - "~>"
|
|
138
138
|
- !ruby/object:Gem::Version
|
|
139
|
-
version: 1.1
|
|
139
|
+
version: '1.1'
|
|
140
140
|
- !ruby/object:Gem::Dependency
|
|
141
141
|
name: rspec
|
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -201,6 +201,7 @@ files:
|
|
|
201
201
|
- lib/rubocop/cop/captive/rails/no_email_from_controller.rb
|
|
202
202
|
- lib/rubocop/cop/captive/rails/no_find_by_in_scope.rb
|
|
203
203
|
- lib/rubocop/cop/captive/rails/no_float_price_columns.rb
|
|
204
|
+
- lib/rubocop/cop/captive/rails/no_has_many_attached.rb
|
|
204
205
|
- lib/rubocop/cop/captive/rspec/specify_before_parameter.rb
|
|
205
206
|
- lib/rubocop/cop/captive/string_where_in_scope.rb
|
|
206
207
|
- lib/rubocop/cop/captive/translation/devise_i18n_presence.rb
|