Merge branch '111297422-whois_blocked_domains' into staging

This commit is contained in:
Stas 2016-01-26 14:44:56 +02:00
commit 2f4d89995b
5 changed files with 36 additions and 7 deletions

View file

@ -0,0 +1,16 @@
class UpdateWhoisRecordJob < Que::Job
def run(ids, type)
klass = case type
when 'reserved'then ReservedDomain
when 'blocked' then BlockedDomain
else Domain
end
ids.each do |id|
record = klass.find_by(id: id)
next unless record
record.update_whois_record
end
end
end

View file

@ -24,6 +24,8 @@ class BlockedDomain < ActiveRecord::Base
update_whois_server
end
alias_method :update_whois_record, :generate_data
def update_whois_server
wr = Whois::Record.find_or_initialize_by(name: name)
wr.body = @body

View file

@ -35,6 +35,8 @@ class ReservedDomain < ActiveRecord::Base
update_whois_server
end
alias_method :update_whois_record, :generate_data
def update_whois_server
wr = Whois::Record.find_or_initialize_by(name: name)
wr.body = @body

View file

@ -106,7 +106,7 @@ class WhoisRecord < ActiveRecord::Base
self.json = generated_json
self.body = generated_body
self.name = json['name']
self.registrar_id = domain.registrar_id # for faster registrar updates
self.registrar_id = domain.registrar_id if domain # for faster registrar updates
end
def update_whois_server

View file

@ -3,15 +3,24 @@ namespace :whois do
task regenerate: :environment do
start = Time.zone.now.to_f
@i = 0
print "-----> Regenerate Registry whois_records table and sync with whois server..."
ActiveRecord::Base.uncached do
puts "\n#{@i}"
Domain.included.find_in_batches(batch_size: 10000) do |batch|
batch.map(&:update_whois_record)
puts(@i += 10000)
GC.start
print "\n-----> Update domains whois_records"
Domain.find_in_batches.each do |group|
UpdateWhoisRecordJob.enqueue group.map(&:id), 'domain'
end
print "\n-----> Update blocked domains whois_records"
BlockedDomain.find_in_batches.each do |group|
UpdateWhoisRecordJob.enqueue group.map(&:id), 'blocked'
end
print "\n-----> Update reserved domains whois_records"
ReservedDomain.find_in_batches.each do |group|
UpdateWhoisRecordJob.enqueue group.map(&:id), 'reserved'
end
end
puts "\n-----> all done in #{(Time.zone.now.to_f - start).round(2)} seconds"
end