aranha-rails 0.7.0 → 0.7.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 +4 -4
- data/.rspec +1 -0
- data/.rubocop.yml +25 -0
- data/Gemfile +5 -0
- data/app/assets/javascripts/aranha/application.js +2 -0
- data/app/assets/stylesheets/aranha/application.css +5 -0
- data/app/controllers/aranha/addresses_controller.rb +8 -0
- data/app/controllers/aranha/processor_configurations_controller.rb +16 -0
- data/app/controllers/aranha/start_points_controller.rb +16 -0
- data/app/models/aranha/address/delayed_job.rb +39 -0
- data/app/models/aranha/address/processor.rb +24 -0
- data/app/models/aranha/address/scheduling.rb +49 -0
- data/app/models/aranha/address.rb +80 -0
- data/app/models/aranha/processor_configuration.rb +51 -0
- data/app/models/aranha/start_point.rb +47 -0
- data/config/initializers/aranha.rb +5 -0
- data/config/locales/en.yml +12 -0
- data/config/locales/pt-BR.yml +12 -0
- data/config/routes.rb +8 -0
- data/db/migrate/20171201021251_create_aranha_addresses.rb +15 -0
- data/db/migrate/20181125042102_add_extra_data_to_aranha_addresses.rb +9 -0
- data/db/migrate/20201128202212_create_aranha_start_points.rb +13 -0
- data/db/migrate/20210720023620_add_delayed_job_to_aranha_addresses.rb +7 -0
- data/db/migrate/20210721171416_add_tries_count_to_aranha_addresses.rb +7 -0
- data/db/migrate/20210721185222_add_last_error_to_aranha_addresses.rb +7 -0
- data/db/migrate/20210814220540_create_aranha_processor_configurations.rb +12 -0
- data/db/migrate/20210815160543_add_enabled_to_aranha_processor_configurations.rb +7 -0
- data/lib/aranha/rails/version.rb +1 -1
- data/spec/rubocop_spec.rb +3 -0
- data/spec/spec_helper.rb +4 -0
- metadata +36 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7f0c7237e3e9ca7d3f5ddc61973513d2a86750e88d96640879c5cd91a46be91
|
4
|
+
data.tar.gz: 59b99c087566e49e93e116d51a05f2c29406d8376640112d52f7c59184543de8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80ec1e16b92e7ae0cb463f64c4f6f35b93876fb0987fc0a6ed9d3a57cb509fba35fcddeae40b6b16ba8901576e3f6da125c79e40b3d246b77887c90e8ba15bee
|
7
|
+
data.tar.gz: 82a5d76749efb28e26388b1af4cb2d9208915920124e6d6b881d58a1e598a56de989fb539da363a26d09827e96d6cd985f516815ba633ed38069e2eeefffa92e
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-rails
|
3
|
+
- rubocop-rspec
|
4
|
+
|
5
|
+
AllCops:
|
6
|
+
TargetRubyVersion: 2.4
|
7
|
+
TargetRailsVersion: 5.1
|
8
|
+
|
9
|
+
Layout/LineLength:
|
10
|
+
Max: 100
|
11
|
+
|
12
|
+
Style/AsciiComments:
|
13
|
+
Enabled: false
|
14
|
+
|
15
|
+
Style/Documentation:
|
16
|
+
Enabled: false
|
17
|
+
|
18
|
+
Style/HashEachMethods:
|
19
|
+
Enabled: true
|
20
|
+
|
21
|
+
Style/HashTransformKeys:
|
22
|
+
Enabled: true
|
23
|
+
|
24
|
+
Style/HashTransformValues:
|
25
|
+
Enabled: true
|
data/Gemfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aranha
|
4
|
+
class ProcessorConfigurationsController < ::ApplicationController
|
5
|
+
before_action :configure_processor_class_options
|
6
|
+
|
7
|
+
active_scaffold :'aranha/processor_configuration' do |conf|
|
8
|
+
conf.columns[:processor_class].form_ui = :select
|
9
|
+
end
|
10
|
+
|
11
|
+
def configure_processor_class_options
|
12
|
+
active_scaffold_config.columns[:processor_class].options =
|
13
|
+
{ options: ::Aranha::ProcessorConfiguration.processor_class_options }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aranha
|
4
|
+
class StartPointsController < ::ApplicationController
|
5
|
+
before_action :configure_processor_class_options
|
6
|
+
|
7
|
+
active_scaffold :'aranha/start_point' do |conf|
|
8
|
+
conf.columns[:processor_class].form_ui = :select
|
9
|
+
end
|
10
|
+
|
11
|
+
def configure_processor_class_options
|
12
|
+
active_scaffold_config.columns[:processor_class].options =
|
13
|
+
{ options: ::Aranha::StartPoint.processor_class_options }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Aranha
|
6
|
+
class Address < ::ActiveRecord::Base
|
7
|
+
class DelayedJob
|
8
|
+
common_constructor :address_id
|
9
|
+
|
10
|
+
def perform
|
11
|
+
address_processor.successful? ? perform_on_success : perform_on_error
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def address
|
17
|
+
address_processor.address
|
18
|
+
end
|
19
|
+
|
20
|
+
def perform_on_success
|
21
|
+
# Do nothing
|
22
|
+
end
|
23
|
+
|
24
|
+
def perform_on_error
|
25
|
+
address.update!(
|
26
|
+
tries_count: address.tries_count + 1,
|
27
|
+
last_error: address_processor.error.to_yaml
|
28
|
+
)
|
29
|
+
address.check_scheduling
|
30
|
+
end
|
31
|
+
|
32
|
+
def address_processor
|
33
|
+
@address_processor ||= ::Aranha::AddressProcessor.new(
|
34
|
+
::Aranha::Address.find(address_id)
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Aranha
|
6
|
+
class Address < ::ActiveRecord::Base
|
7
|
+
module Processor
|
8
|
+
common_concern
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
# @return [Aranha::ProcessorConfiguration]
|
12
|
+
def default_processor_configuration
|
13
|
+
@default_processor_configuration ||= ::Aranha::ProcessorConfiguration.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [Aranha::ProcessorConfiguration]
|
18
|
+
def processor_configuration
|
19
|
+
::Aranha::ProcessorConfiguration.find_by(processor_class: processor) ||
|
20
|
+
self.class.default_processor_configuration
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Aranha
|
6
|
+
class Address < ::ActiveRecord::Base
|
7
|
+
module Scheduling
|
8
|
+
common_concern
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
# @return [Array<Aranha::Address>]
|
12
|
+
def expired(time = ::Time.zone.now)
|
13
|
+
all.select { |record| record.expired?(time) }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def check_scheduling
|
18
|
+
::ActiveRecord::Base.transaction do
|
19
|
+
return unless schedule?
|
20
|
+
|
21
|
+
job = ::Delayed::Job.enqueue(
|
22
|
+
::Aranha::Address::DelayedJob.new(id),
|
23
|
+
queue: ::Aranha::Rails::Process::QUEUE
|
24
|
+
)
|
25
|
+
update!(delayed_job: job)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def expired?(time = ::Time.zone.now)
|
30
|
+
time >= (created_at + timeout)
|
31
|
+
end
|
32
|
+
|
33
|
+
def init_scheduling
|
34
|
+
update!(tries_count: 0, last_error: nil) unless processed?
|
35
|
+
check_scheduling
|
36
|
+
end
|
37
|
+
|
38
|
+
def allow_retry?
|
39
|
+
tries_count < ::Aranha::Processor::DEFAULT_MAX_TRIES
|
40
|
+
end
|
41
|
+
|
42
|
+
def schedule?
|
43
|
+
processed_at.blank? && allow_retry? && delayed_job.blank? && enabled?
|
44
|
+
end
|
45
|
+
|
46
|
+
delegate :enabled?, :timeout, to: :processor_configuration
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/yaml'
|
4
|
+
require 'delayed/backend/active_record'
|
5
|
+
|
6
|
+
module Aranha
|
7
|
+
class Address < ::ActiveRecord::Base
|
8
|
+
include ::EacRailsUtils::Models::InequalityQueries
|
9
|
+
include ::Aranha::Address::Processor
|
10
|
+
include ::Aranha::Address::Scheduling
|
11
|
+
|
12
|
+
add_inequality_queries(:created_at)
|
13
|
+
|
14
|
+
class << self
|
15
|
+
def sanitize_url(url)
|
16
|
+
if url.is_a?(Hash)
|
17
|
+
::EacRubyUtils::Yaml.dump(url)
|
18
|
+
else
|
19
|
+
url.to_s
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
belongs_to :delayed_job, class_name: 'Delayed::Backend::ActiveRecord::Job', dependent: :destroy,
|
25
|
+
optional: true
|
26
|
+
|
27
|
+
validates :url, presence: true, uniqueness: true
|
28
|
+
validates :processor, presence: true
|
29
|
+
validates :tries_count, presence: true, numericality: { only_integer: true,
|
30
|
+
greater_or_equal: 0 }
|
31
|
+
|
32
|
+
scope :failed, lambda {
|
33
|
+
where(processed_at: nil).where.not(last_error: nil)
|
34
|
+
}
|
35
|
+
|
36
|
+
def to_s
|
37
|
+
"#{processor}|#{url}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def process
|
41
|
+
ActiveRecord::Base.transaction do
|
42
|
+
instanciate_processor.process
|
43
|
+
self.processed_at = Time.zone.now
|
44
|
+
save!
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def processed?
|
49
|
+
processed_at.present?
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def instanciate_processor
|
55
|
+
processor_instancier.call(*processor_instancier_arguments)
|
56
|
+
end
|
57
|
+
|
58
|
+
def url_to_process
|
59
|
+
::EacRubyUtils::Yaml.load(url)
|
60
|
+
end
|
61
|
+
|
62
|
+
def processor_instancier
|
63
|
+
processor.constantize.method(:new)
|
64
|
+
end
|
65
|
+
|
66
|
+
def processor_instancier_arguments
|
67
|
+
if processor_instancier_arity == 2 || processor_instancier_arity.negative?
|
68
|
+
[url_to_process, EacRubyUtils::Yaml.load(extra_data)]
|
69
|
+
elsif processor_instancier_arity == 1
|
70
|
+
[processor_instancier.call(url_to_process)]
|
71
|
+
else
|
72
|
+
raise("#{processor}.initialize should has 1 or 2 or * arguments")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def processor_instancier_arity
|
77
|
+
processor.constantize.instance_method(:initialize).arity
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/yaml'
|
4
|
+
|
5
|
+
module Aranha
|
6
|
+
class ProcessorConfiguration < ::ActiveRecord::Base
|
7
|
+
DEFAULT_TIMEOUT = 12.hours
|
8
|
+
|
9
|
+
class << self
|
10
|
+
# @return [Enumerator<String>]
|
11
|
+
def processor_class_list
|
12
|
+
::Set.new(processor_class_list_from_addresses + processor_class_list_from_start_points)
|
13
|
+
.to_enum.sort
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [Hash<String, String>]
|
17
|
+
def processor_class_options
|
18
|
+
processor_class_list.map { |e| [e, e] }.to_h
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
# @return [Array<String>]
|
24
|
+
def processor_class_list_from_addresses
|
25
|
+
::Aranha::Address.distinct.pluck(:processor)
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [Array<String>]
|
29
|
+
def processor_class_list_from_start_points
|
30
|
+
::Aranha::StartPoint.processor_class_list.to_a
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
validates :processor_class, presence: true
|
35
|
+
validate :processor_class_in_list
|
36
|
+
validates :timeout_seconds, allow_blank: true,
|
37
|
+
numericality: { integer_only: true, greater_than_or_equal_to: 1 }
|
38
|
+
|
39
|
+
def processor_class_in_list
|
40
|
+
return if processor_class.blank?
|
41
|
+
return if self.class.processor_class_list.include?(processor_class)
|
42
|
+
|
43
|
+
errors.add(:processor_class, 'Not in list')
|
44
|
+
end
|
45
|
+
|
46
|
+
# @return [ActiveSupport::Duration]
|
47
|
+
def timeout
|
48
|
+
timeout_seconds.if_present(DEFAULT_TIMEOUT, &:seconds)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/yaml'
|
4
|
+
|
5
|
+
module Aranha
|
6
|
+
class StartPoint < ::ActiveRecord::Base
|
7
|
+
class << self
|
8
|
+
def add_processor_class(klass)
|
9
|
+
processor_class_list_var.add(klass.to_s)
|
10
|
+
end
|
11
|
+
|
12
|
+
def processor_class_list
|
13
|
+
processor_class_list_var.to_enum
|
14
|
+
end
|
15
|
+
|
16
|
+
def processor_class_options
|
17
|
+
processor_class_list.map { |e| [e, e] }.to_h
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def processor_class_list_var
|
23
|
+
@processor_class_list_var ||= Set.new
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
validates :uri, presence: true, uniqueness: true,
|
28
|
+
format: { with: ::URI::DEFAULT_PARSER.make_regexp }
|
29
|
+
validates :processor_class, presence: true
|
30
|
+
validate :processor_class_in_list
|
31
|
+
|
32
|
+
def extra_data
|
33
|
+
extra_data_yaml.nil? ? nil : ::EacRubyUtils::Yaml.load(extra_data_yaml)
|
34
|
+
end
|
35
|
+
|
36
|
+
def extra_data=(value)
|
37
|
+
self.extra_data_yaml = ::EacRubyUtils::Yaml.dump(value)
|
38
|
+
end
|
39
|
+
|
40
|
+
def processor_class_in_list
|
41
|
+
return if processor_class.blank?
|
42
|
+
return if self.class.processor_class_list.include?(processor_class)
|
43
|
+
|
44
|
+
errors.add(:processor_class, 'Not in list')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
aranha/address:
|
5
|
+
one: Aranha address
|
6
|
+
other: Aranha addresses
|
7
|
+
aranha/processor_configuration:
|
8
|
+
one: Aranha processor configuration
|
9
|
+
other: Aranha processors configurations
|
10
|
+
aranha/start_point:
|
11
|
+
one: Aranha start point
|
12
|
+
other: Aranha start points
|
@@ -0,0 +1,12 @@
|
|
1
|
+
pt-BR:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
aranha/address:
|
5
|
+
one: Endereço Aranha
|
6
|
+
other: Endereços Aranha
|
7
|
+
aranha/processor_configuration:
|
8
|
+
one: Configuração de processador Aranha
|
9
|
+
other: Configuração de processadores Aranha
|
10
|
+
aranha/start_point:
|
11
|
+
one: Ponto de Partida Aranha
|
12
|
+
other: Pontos de Partida Aranha
|
data/config/routes.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
::Aranha::Rails::Engine.routes.draw do
|
4
|
+
concern :active_scaffold, ActiveScaffold::Routing::Basic.new(association: true)
|
5
|
+
resources(:addresses, concerns: :active_scaffold)
|
6
|
+
resources(:processor_configurations, concerns: :active_scaffold)
|
7
|
+
resources(:start_points, concerns: :active_scaffold)
|
8
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateAranhaAddresses < (
|
4
|
+
Rails.version < '5' ? ActiveRecord::Migration : ActiveRecord::Migration[4.2]
|
5
|
+
)
|
6
|
+
def change
|
7
|
+
create_table :aranha_addresses do |t|
|
8
|
+
t.string :url
|
9
|
+
t.string :processor
|
10
|
+
t.timestamp :processed_at
|
11
|
+
|
12
|
+
t.timestamps null: false
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateAranhaStartPoints < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :aranha_start_points do |t|
|
6
|
+
t.string :uri
|
7
|
+
t.string :processor_class
|
8
|
+
t.string :extra_data_yaml
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateAranhaProcessorConfigurations < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :aranha_processor_configurations do |t|
|
6
|
+
t.string :processor_class
|
7
|
+
t.integer :timeout_seconds, null: true
|
8
|
+
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/aranha/rails/version.rb
CHANGED
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aranha-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Put here the authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_scaffold
|
@@ -146,6 +146,32 @@ executables: []
|
|
146
146
|
extensions: []
|
147
147
|
extra_rdoc_files: []
|
148
148
|
files:
|
149
|
+
- ".rspec"
|
150
|
+
- ".rubocop.yml"
|
151
|
+
- Gemfile
|
152
|
+
- app/assets/javascripts/aranha/application.js
|
153
|
+
- app/assets/stylesheets/aranha/application.css
|
154
|
+
- app/controllers/aranha/addresses_controller.rb
|
155
|
+
- app/controllers/aranha/processor_configurations_controller.rb
|
156
|
+
- app/controllers/aranha/start_points_controller.rb
|
157
|
+
- app/models/aranha/address.rb
|
158
|
+
- app/models/aranha/address/delayed_job.rb
|
159
|
+
- app/models/aranha/address/processor.rb
|
160
|
+
- app/models/aranha/address/scheduling.rb
|
161
|
+
- app/models/aranha/processor_configuration.rb
|
162
|
+
- app/models/aranha/start_point.rb
|
163
|
+
- config/initializers/aranha.rb
|
164
|
+
- config/locales/en.yml
|
165
|
+
- config/locales/pt-BR.yml
|
166
|
+
- config/routes.rb
|
167
|
+
- db/migrate/20171201021251_create_aranha_addresses.rb
|
168
|
+
- db/migrate/20181125042102_add_extra_data_to_aranha_addresses.rb
|
169
|
+
- db/migrate/20201128202212_create_aranha_start_points.rb
|
170
|
+
- db/migrate/20210720023620_add_delayed_job_to_aranha_addresses.rb
|
171
|
+
- db/migrate/20210721171416_add_tries_count_to_aranha_addresses.rb
|
172
|
+
- db/migrate/20210721185222_add_last_error_to_aranha_addresses.rb
|
173
|
+
- db/migrate/20210814220540_create_aranha_processor_configurations.rb
|
174
|
+
- db/migrate/20210815160543_add_enabled_to_aranha_processor_configurations.rb
|
149
175
|
- lib/aranha/rails.rb
|
150
176
|
- lib/aranha/rails/engine.rb
|
151
177
|
- lib/aranha/rails/fixtures_download.rb
|
@@ -154,6 +180,8 @@ files:
|
|
154
180
|
- lib/aranha/rails/process.rb
|
155
181
|
- lib/aranha/rails/version.rb
|
156
182
|
- lib/tasks/aranha.rake
|
183
|
+
- spec/rubocop_spec.rb
|
184
|
+
- spec/spec_helper.rb
|
157
185
|
homepage:
|
158
186
|
licenses: []
|
159
187
|
metadata: {}
|
@@ -176,4 +204,9 @@ rubygems_version: 3.1.6
|
|
176
204
|
signing_key:
|
177
205
|
specification_version: 4
|
178
206
|
summary: Put here de description.
|
179
|
-
test_files:
|
207
|
+
test_files:
|
208
|
+
- spec/rubocop_spec.rb
|
209
|
+
- spec/spec_helper.rb
|
210
|
+
- ".rspec"
|
211
|
+
- Gemfile
|
212
|
+
- ".rubocop.yml"
|