ducalis 0.5.8 → 0.5.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/DOCUMENTATION.md +75 -0
- data/Gemfile.lock +1 -1
- data/config/.ducalis.yml +9 -0
- data/lib/ducalis.rb +1 -0
- data/lib/ducalis/cops/too_long_workers.rb +35 -0
- data/lib/ducalis/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9df1822f6834c733ed48f31e1957334cc59b5f42
|
4
|
+
data.tar.gz: 34669e5f892a97db37ef4af821e44f144d4a57df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e06ee445e45f02521f7b952ddfea25927dbe5fb4e04c6dad60b00f14dba0dce6f8a885483d5bf0389f05c853b7d7d15b067ab7f52294266fdaf336a08eace69
|
7
|
+
data.tar.gz: 93df41092dc3b5bf2f3668f6149fbb51f9ff728d3a67278a9e8b663309da626739d2af6e3bee020b543658755e623bb10214774043faafe94a51b7e3da231d4c
|
data/DOCUMENTATION.md
CHANGED
@@ -636,6 +636,11 @@ It's better to add exception class as raise argument. It will make
|
|
636
636
|
raise "Something went wrong"
|
637
637
|
```
|
638
638
|
|
639
|
+
![](https://placehold.it/10/f03c15/000000?text=+) raises when `raise` called without arguments
|
640
|
+
```ruby
|
641
|
+
raise
|
642
|
+
```
|
643
|
+
|
639
644
|
![](https://placehold.it/10/2cbe4e/000000?text=+) ignores when `raise` called with exception class
|
640
645
|
```ruby
|
641
646
|
raise StandardError, "Something went wrong"
|
@@ -780,6 +785,76 @@ before_save :set_full_name,
|
|
780
785
|
```ruby
|
781
786
|
validates :file, if: -> { remote_url.blank? }
|
782
787
|
```
|
788
|
+
## Ducalis::TooLongWorkers
|
789
|
+
|
790
|
+
Seems like your worker is doing too much work, consider of moving business
|
791
|
+
logic to service object. As rule, workers should have only two responsibilities:
|
792
|
+
- __Model materialization__: As async jobs working with serialized attributes
|
793
|
+
it's nescessary to cast them into actual objects.
|
794
|
+
- __Errors handling__: Rescue errors and figure out what to do with them.
|
795
|
+
|
796
|
+
![](https://placehold.it/10/f03c15/000000?text=+) raises for a class with more than 5 lines
|
797
|
+
```ruby
|
798
|
+
class TestWorker
|
799
|
+
a = 1
|
800
|
+
a = 2
|
801
|
+
a = 3
|
802
|
+
a = 4
|
803
|
+
a = 5
|
804
|
+
a = 6
|
805
|
+
end
|
806
|
+
```
|
807
|
+
|
808
|
+
![](https://placehold.it/10/2cbe4e/000000?text=+) ignores non-worker classes
|
809
|
+
```ruby
|
810
|
+
class StrangeClass
|
811
|
+
a = 1
|
812
|
+
a = 2
|
813
|
+
a = 3
|
814
|
+
a = 4
|
815
|
+
a = 5
|
816
|
+
a = 6
|
817
|
+
end
|
818
|
+
```
|
819
|
+
|
820
|
+
![](https://placehold.it/10/2cbe4e/000000?text=+) accepts a class with 5 lines
|
821
|
+
```ruby
|
822
|
+
class TestWorker
|
823
|
+
a = 1
|
824
|
+
a = 2
|
825
|
+
a = 3
|
826
|
+
a = 4
|
827
|
+
a = 5
|
828
|
+
end
|
829
|
+
```
|
830
|
+
|
831
|
+
![](https://placehold.it/10/2cbe4e/000000?text=+) accepts a class with less than 5 lines
|
832
|
+
```ruby
|
833
|
+
class TestWorker
|
834
|
+
a = 1
|
835
|
+
a = 2
|
836
|
+
a = 3
|
837
|
+
a = 4
|
838
|
+
end
|
839
|
+
```
|
840
|
+
|
841
|
+
![](https://placehold.it/10/2cbe4e/000000?text=+) accepts empty classes
|
842
|
+
```ruby
|
843
|
+
class TestWorker
|
844
|
+
end
|
845
|
+
```
|
846
|
+
|
847
|
+
![](https://placehold.it/10/2cbe4e/000000?text=+) also counts commented lines
|
848
|
+
```ruby
|
849
|
+
class TestWorker
|
850
|
+
a = 1
|
851
|
+
#a = 2
|
852
|
+
a = 3
|
853
|
+
#a = 4
|
854
|
+
a = 5
|
855
|
+
a = 6
|
856
|
+
end
|
857
|
+
```
|
783
858
|
## Ducalis::UncommentedGem
|
784
859
|
|
785
860
|
Please, add comment why are you including non-realized gem version for
|
data/Gemfile.lock
CHANGED
data/config/.ducalis.yml
CHANGED
@@ -2,6 +2,7 @@ AllCops:
|
|
2
2
|
DisabledByDefault: true
|
3
3
|
TargetRubyVersion: 2.3
|
4
4
|
Exclude:
|
5
|
+
- 'db/**/*'
|
5
6
|
- 'node_modules/**/*'
|
6
7
|
- 'vendor/bundle/**/*'
|
7
8
|
|
@@ -33,6 +34,10 @@ Ducalis/PossibleTap:
|
|
33
34
|
|
34
35
|
Ducalis/ProtectedScopeCop:
|
35
36
|
Enabled: true
|
37
|
+
Exclude:
|
38
|
+
- 'spec/**/*.rb'
|
39
|
+
- 'app/workers/**/*.rb'
|
40
|
+
- 'app/mailers/**/*.rb'
|
36
41
|
|
37
42
|
Ducalis/RegexCop:
|
38
43
|
Enabled: true
|
@@ -42,6 +47,10 @@ Ducalis/RegexCop:
|
|
42
47
|
Ducalis/StringsInActiverecords:
|
43
48
|
Enabled: true
|
44
49
|
|
50
|
+
Ducalis/TooLongWorkers:
|
51
|
+
Enabled: true
|
52
|
+
Max: 25
|
53
|
+
|
45
54
|
Ducalis/UselessOnly:
|
46
55
|
Enabled: true
|
47
56
|
|
data/lib/ducalis.rb
CHANGED
@@ -47,5 +47,6 @@ require 'ducalis/cops/regex_cop'
|
|
47
47
|
require 'ducalis/cops/rest_only_cop'
|
48
48
|
require 'ducalis/cops/rubocop_disable'
|
49
49
|
require 'ducalis/cops/strings_in_activerecords'
|
50
|
+
require 'ducalis/cops/too_long_workers'
|
50
51
|
require 'ducalis/cops/uncommented_gem'
|
51
52
|
require 'ducalis/cops/useless_only'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rubocop'
|
4
|
+
|
5
|
+
module Ducalis
|
6
|
+
class TooLongWorkers < RuboCop::Cop::Cop
|
7
|
+
include RuboCop::Cop::ClassishLength
|
8
|
+
|
9
|
+
OFFENSE = <<-MESSAGE.gsub(/^ +\|/, '').strip
|
10
|
+
| Seems like your worker is doing too much work, consider of moving business
|
11
|
+
| logic to service object. As rule, workers should have only two responsibilities:
|
12
|
+
| - __Model materialization__: As async jobs working with serialized attributes
|
13
|
+
| it's nescessary to cast them into actual objects.
|
14
|
+
| - __Errors handling__: Rescue errors and figure out what to do with them.
|
15
|
+
MESSAGE
|
16
|
+
|
17
|
+
WORKERS_SUFFIXES = %w(Worker Job).freeze
|
18
|
+
|
19
|
+
def on_class(node)
|
20
|
+
return unless worker_class?(node)
|
21
|
+
check_code_length(node)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def worker_class?(node)
|
27
|
+
classdef_node, _superclass, _body = *node
|
28
|
+
classdef_node.source.end_with?(*WORKERS_SUFFIXES)
|
29
|
+
end
|
30
|
+
|
31
|
+
def message(length, max_length)
|
32
|
+
format("#{OFFENSE} [%d/%d]", length, max_length)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/ducalis/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ducalis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ignat Zakrevsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git
|
@@ -146,6 +146,7 @@ files:
|
|
146
146
|
- lib/ducalis/cops/rest_only_cop.rb
|
147
147
|
- lib/ducalis/cops/rubocop_disable.rb
|
148
148
|
- lib/ducalis/cops/strings_in_activerecords.rb
|
149
|
+
- lib/ducalis/cops/too_long_workers.rb
|
149
150
|
- lib/ducalis/cops/uncommented_gem.rb
|
150
151
|
- lib/ducalis/cops/useless_only.rb
|
151
152
|
- lib/ducalis/documentation.rb
|