aranha-rails 0.2.1 → 0.6.0

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
2
  SHA256:
3
- metadata.gz: 276592968b7aa54fad42ac7b5d55f12ef4297f47ca17edd442d86e5583302569
4
- data.tar.gz: 4dfce89c1c0ea962fc03d49fac0ef655b17bbf0bdafd8e31cd1fbcd3ce1bc44b
3
+ metadata.gz: 9c2bfb595a37e39eb60a336df45502b5efdd52ef26b1c488fb60500cc2ca93c1
4
+ data.tar.gz: 983c14439b792dbd495578a57fcc8960468cb6d126d07f7635b030cc78aa12aa
5
5
  SHA512:
6
- metadata.gz: 7899f2898f8540357265f99278a8acdf311c252dc1e4b0521ee8f6103bad982dc4daea4186d685bd5a0b3d9387451b2ec74d6893df80fbc2b152406667258449
7
- data.tar.gz: adb0ab27e55c6b2b44ccd1ccfd256a428c1a2a3f3008ea94f9eb84442c397952bbb91fdd1d08baba3700194638bc3889568b790addc7b50d18aeb13931aba090
6
+ metadata.gz: 8e56125aa6b80634a9e9f43db75184868edf4081245157a1949b559c7aaf8e919fa63d6f2a1d210eb5229368eec478918d429d83960719db1bb0d4a28f09c4a5
7
+ data.tar.gz: 55d5cedac52545c011fdcab381029bdb680db791ee8855e7dd15b9cd4b7aa1a0aa290f713ae8be27bdb9d4cd84cb0116a4d6b90a04e2224c9dfddd41ba66608e
@@ -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
@@ -20,9 +22,9 @@ module Aranha
20
22
  end
21
23
 
22
24
  def clear_expired_addresses
23
- q = ::Aranha::Address.by_created_at_lt(Time.zone.now - 12.hours)
25
+ q = ::Aranha::Address.expired(::Time.zone.now)
24
26
  ::Rails.logger.info("Addresses expired: #{q.count}")
25
- q.destroy_all
27
+ q.each(&:destroy)
26
28
  end
27
29
 
28
30
  def log_info(message)
@@ -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.1'
5
+ VERSION = '0.6.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.1
4
+ version: 0.6.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: 2021-06-28 00:00:00.000000000 Z
11
+ date: 2021-08-15 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,14 +126,20 @@ dependencies:
112
126
  requirements:
113
127
  - - "~>"
114
128
  - !ruby/object:Gem::Version
115
- version: '0.2'
129
+ version: '0.3'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 0.3.1
116
133
  type: :development
117
134
  prerelease: false
118
135
  version_requirements: !ruby/object:Gem::Requirement
119
136
  requirements:
120
137
  - - "~>"
121
138
  - !ruby/object:Gem::Version
122
- version: '0.2'
139
+ version: '0.3'
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 0.3.1
123
143
  description:
124
144
  email:
125
145
  executables: []
@@ -130,6 +150,8 @@ files:
130
150
  - lib/aranha/rails/engine.rb
131
151
  - lib/aranha/rails/fixtures_download.rb
132
152
  - lib/aranha/rails/manager.rb
153
+ - lib/aranha/rails/patches/delayed_job.rb
154
+ - lib/aranha/rails/process.rb
133
155
  - lib/aranha/rails/version.rb
134
156
  - lib/tasks/aranha.rake
135
157
  homepage:
@@ -150,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
172
  - !ruby/object:Gem::Version
151
173
  version: '0'
152
174
  requirements: []
153
- rubygems_version: 3.0.9
175
+ rubygems_version: 3.1.6
154
176
  signing_key:
155
177
  specification_version: 4
156
178
  summary: Put here de description.