aranha-rails 0.2.0 → 0.5.0

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: 223ccb25f6cb914fe5342b32936934560f6020a9d3fbb16d649bfa2f96ce7459
4
- data.tar.gz: bc4a7ef62b9a13a53f00fb81f1613173f9b20050d37367bfa112cfbd467d06a5
3
+ metadata.gz: 49f04cc5c0a957bc1aec7617dc1a6e736d860d80905afa04844587b8c57dd2bd
4
+ data.tar.gz: 18c6a92f2c28731b7224ea7a99a3521c684c56e33446f29601fcab4bf2de3a68
5
5
  SHA512:
6
- metadata.gz: 464d6ad5cbeba036d0db9835fe2fb06ad38ec4338a2cc6ced2bf0157cddce35c38f6a073fb74eab90ab94e05593a80d2e3cf8496f61ed150ca43a7a29d264597
7
- data.tar.gz: 303773ff9b8abf14431ccdb13eb070799834f8d8d8b3e78e4e4523959afdd29b69b39da823581bf7e0fb7afab611c56cfe39a59eea230fcd4b19a64779b95e40
6
+ metadata.gz: a0cf36bd155c0ccdea28701d96d385eb28d3e80a09a9a37e273b1b372f1598c27030a89d040492a707eefea98caf043972e86dc00b90e68f034cb60ef0cd59ab
7
+ data.tar.gz: 7947c879299d9ee6f0104fe7b6577a8ecc544f6bbccb59cc92f3799b951b98c2f8cd1fc7579b348d69eaa3780f70399008b901a196b42a00a15a7394bb85a2f8
@@ -1,17 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_scaffold'
4
+ require 'eac_rails_delayed_job/engine'
4
5
 
5
6
  module Aranha
6
7
  module Rails
7
8
  class Engine < ::Rails::Engine
8
- isolate_namespace ::Aranha
9
+ include ::EacRailsUtils::EngineHelper
9
10
 
10
- initializer :append_migrations do |app|
11
- config.paths['db/migrate'].expanded.each do |expanded_path|
12
- app.config.paths['db/migrate'] << expanded_path
13
- end
14
- end
11
+ isolate_namespace ::Aranha
15
12
  end
16
13
  end
17
14
  end
15
+
16
+ require 'aranha/rails/patches/delayed_job'
@@ -3,23 +3,40 @@
3
3
  require 'aranha/parsers/base'
4
4
  require 'aranha/parsers/source_address'
5
5
  require 'aranha/parsers/source_target_fixtures'
6
+ require 'eac_ruby_utils/core_ext'
6
7
 
7
8
  module Aranha
8
9
  module Rails
9
10
  class FixturesDownload
10
- attr_reader :pending
11
+ DEFAULT_EXTENSION = '.html'
11
12
 
12
- def initialize(options)
13
- @prefix = options.fetch(:prefix)
14
- @prefix = '' if @prefix.blank?
15
- @download = options.fetch(:download)
16
- @pending = options.fetch(:pending)
13
+ enable_listable
14
+ lists.add_symbol :option, :extension, :prefix, :download, :pending
15
+
16
+ common_constructor :options do
17
+ self.options = self.class.lists.option.hash_keys_validate!(options)
18
+ end
19
+
20
+ def download?
21
+ options[OPTION_DOWNLOAD] ? true : false
22
+ end
23
+
24
+ def extension
25
+ options[OPTION_EXTENSION].if_present(DEFAULT_EXTENSION)
26
+ end
27
+
28
+ def pending?
29
+ options[OPTION_PENDING] ? true : false
30
+ end
31
+
32
+ def prefix
33
+ options[OPTION_PREFIX].if_present('')
17
34
  end
18
35
 
19
36
  def run
20
37
  url_files.each do |f|
21
38
  ::Rails.logger.info(relative_path(f))
22
- download(url(f), target(f)) if @download
39
+ download(url(f), target(f)) if download?
23
40
  end
24
41
  end
25
42
 
@@ -32,11 +49,11 @@ module Aranha
32
49
  def select_path?(path)
33
50
  return false unless match_prefix_pattern(path)
34
51
 
35
- !pending || !source_exist?(path)
52
+ !pending? || !source_exist?(path)
36
53
  end
37
54
 
38
55
  def match_prefix_pattern(path)
39
- relative_path(path).start_with?(@prefix)
56
+ relative_path(path).start_with?(prefix)
40
57
  end
41
58
 
42
59
  def fixtures_root
@@ -56,7 +73,7 @@ module Aranha
56
73
  end
57
74
 
58
75
  def target(file)
59
- File.expand_path(File.basename(file, '.url') + '.source.html', File.dirname(file))
76
+ File.expand_path(File.basename(file, '.url') + '.source' + extension, File.dirname(file))
60
77
  end
61
78
 
62
79
  def relative_path(path)
@@ -9,10 +9,12 @@ module Aranha
9
9
  include ::Singleton
10
10
 
11
11
  def add_address(url, processor, extra_data = nil)
12
+ ::Rails.logger.info("Adding \"#{url}\"")
12
13
  a = ::Aranha::Address.find_or_initialize_by(url: ::Aranha::Address.sanitize_url(url))
13
14
  a.processor = processor
14
15
  a.extra_data = extra_data.to_yaml
15
16
  a.save!
17
+ a.check_scheduling
16
18
  end
17
19
 
18
20
  def addresses_count
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'delayed_job_active_record'
4
+
5
+ model = ::Delayed::Backend::ActiveRecord::Job
6
+ model.has_one :aranha_address, class_name: 'Aranha::Address', foreign_key: :delayed_job_id,
7
+ dependent: :nullify, inverse_of: :delayed_job
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aranha
4
+ module Rails
5
+ class Process
6
+ QUEUE = 'aranha'
7
+ QUEUES = [QUEUE].freeze
8
+
9
+ def run
10
+ run_init
11
+ run_jobs_workoff
12
+ run_close
13
+ end
14
+
15
+ private
16
+
17
+ def run_close
18
+ ::Aranha::Address.failed do |a|
19
+ ::Rails.logger.info "Failed \"#{a.url}\": #{a.last_error}"
20
+ end
21
+ raise 'Some address failed' if ::Aranha::Address.failed.any?
22
+ end
23
+
24
+ def run_init
25
+ ::Aranha::Manager.default.init
26
+ ::Aranha::Address.all.each(&:init_scheduling)
27
+ end
28
+
29
+ def run_jobs_workoff
30
+ ::Delayed::Worker.new(exit_on_complete: true, queues: QUEUES).start
31
+ end
32
+ end
33
+ end
34
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aranha
4
4
  module Rails
5
- VERSION = '0.2.0'
5
+ VERSION = '0.5.0'
6
6
  end
7
7
  end
@@ -3,7 +3,7 @@
3
3
  namespace(:aranha) do
4
4
  desc 'Process Aranha\'s addresses.'
5
5
  task process: :environment do
6
- ::Aranha::Processor.new
6
+ ::Aranha::Rails::Process.new.run
7
7
  end
8
8
 
9
9
  desc 'Remove all registered Aranha\'s addresses.'
@@ -11,13 +11,21 @@ namespace(:aranha) do
11
11
  Rails.logger.info("Addresses deleted: #{::Aranha::Address.destroy_all.count}")
12
12
  end
13
13
 
14
+ namespace :address do
15
+ desc 'Process a arbitrary address.'
16
+ task :process, %i[uri processor] => :environment do |_t, args|
17
+ args.processor.constantize.new(args.uri, {}).process
18
+ end
19
+ end
20
+
14
21
  namespace :fixtures do
15
22
  desc 'Download remote content for fixtures.'
16
23
  task download: :environment do
17
24
  ::Aranha::Rails::FixturesDownload.new(
18
- prefix: ENV['PREFIX'],
19
- download: ENV['DOWNLOAD'].present?,
20
- pending: ENV['PENDING'].present?
25
+ ::Aranha::Rails::FixturesDownload::OPTION_EXTENSION => ENV['EXTENSION'],
26
+ ::Aranha::Rails::FixturesDownload::OPTION_PREFIX => ENV['PREFIX'],
27
+ ::Aranha::Rails::FixturesDownload::OPTION_DOWNLOAD => ENV['DOWNLOAD'].present?,
28
+ ::Aranha::Rails::FixturesDownload::OPTION_PENDING => ENV['PENDING'].present?
21
29
  ).run
22
30
  end
23
31
  end
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.2.0
4
+ version: 0.5.0
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: 2020-11-29 00:00:00.000000000 Z
11
+ date: 2021-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_scaffold
@@ -58,6 +58,20 @@ dependencies:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0.6'
61
+ - !ruby/object:Gem::Dependency
62
+ name: eac_rails_delayed_job
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0.1'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.1'
61
75
  - !ruby/object:Gem::Dependency
62
76
  name: eac_rails_utils
63
77
  requirement: !ruby/object:Gem::Requirement
@@ -84,14 +98,14 @@ dependencies:
84
98
  requirements:
85
99
  - - "~>"
86
100
  - !ruby/object:Gem::Version
87
- version: '0.52'
101
+ version: '0.72'
88
102
  type: :runtime
89
103
  prerelease: false
90
104
  version_requirements: !ruby/object:Gem::Requirement
91
105
  requirements:
92
106
  - - "~>"
93
107
  - !ruby/object:Gem::Version
94
- version: '0.52'
108
+ version: '0.72'
95
109
  - !ruby/object:Gem::Dependency
96
110
  name: rails
97
111
  requirement: !ruby/object:Gem::Requirement
@@ -112,20 +126,20 @@ dependencies:
112
126
  requirements:
113
127
  - - "~>"
114
128
  - !ruby/object:Gem::Version
115
- version: '0.1'
129
+ version: '0.3'
116
130
  - - ">="
117
131
  - !ruby/object:Gem::Version
118
- version: 0.1.2
132
+ version: 0.3.1
119
133
  type: :development
120
134
  prerelease: false
121
135
  version_requirements: !ruby/object:Gem::Requirement
122
136
  requirements:
123
137
  - - "~>"
124
138
  - !ruby/object:Gem::Version
125
- version: '0.1'
139
+ version: '0.3'
126
140
  - - ">="
127
141
  - !ruby/object:Gem::Version
128
- version: 0.1.2
142
+ version: 0.3.1
129
143
  description:
130
144
  email:
131
145
  executables: []
@@ -136,6 +150,8 @@ files:
136
150
  - lib/aranha/rails/engine.rb
137
151
  - lib/aranha/rails/fixtures_download.rb
138
152
  - lib/aranha/rails/manager.rb
153
+ - lib/aranha/rails/patches/delayed_job.rb
154
+ - lib/aranha/rails/process.rb
139
155
  - lib/aranha/rails/version.rb
140
156
  - lib/tasks/aranha.rake
141
157
  homepage:
@@ -156,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
172
  - !ruby/object:Gem::Version
157
173
  version: '0'
158
174
  requirements: []
159
- rubygems_version: 3.0.8
175
+ rubygems_version: 3.1.6
160
176
  signing_key:
161
177
  specification_version: 4
162
178
  summary: Put here de description.