mirror of
https://github.com/internetee/registry.git
synced 2025-07-21 18:26:06 +02:00
Refactored whois_body to whois_record
This commit is contained in:
parent
db81a9e7bc
commit
a0c880151b
10 changed files with 68 additions and 46 deletions
|
@ -9,8 +9,8 @@ group :red_green_refactor, halt_on_fail: true do
|
||||||
# watch(%r{^(config|lib)/.*})
|
# watch(%r{^(config|lib)/.*})
|
||||||
# end
|
# end
|
||||||
|
|
||||||
# guard :rspec, cmd: 'spring rspec --fail-fast', notification: false do
|
guard :rspec, cmd: 'spring rspec --fail-fast', notification: false do
|
||||||
guard :rspec, cmd: 'spring rspec', notification: false do
|
# guard :rspec, cmd: 'spring rspec', notification: false do
|
||||||
watch(%r{^spec/.+_spec\.rb$})
|
watch(%r{^spec/.+_spec\.rb$})
|
||||||
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
||||||
watch('spec/spec_helper.rb') { "spec" }
|
watch('spec/spec_helper.rb') { "spec" }
|
||||||
|
|
|
@ -33,7 +33,7 @@ class Domain < ActiveRecord::Base
|
||||||
has_many :dnskeys, dependent: :destroy
|
has_many :dnskeys, dependent: :destroy
|
||||||
|
|
||||||
has_many :keyrelays
|
has_many :keyrelays
|
||||||
has_one :whois_body, dependent: :destroy
|
has_one :whois_record, dependent: :destroy
|
||||||
|
|
||||||
accepts_nested_attributes_for :dnskeys, allow_destroy: true
|
accepts_nested_attributes_for :dnskeys, allow_destroy: true
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ class Domain < ActiveRecord::Base
|
||||||
self.updated_at = Time.zone.now
|
self.updated_at = Time.zone.now
|
||||||
end
|
end
|
||||||
after_save :manage_automatic_statuses
|
after_save :manage_automatic_statuses
|
||||||
after_save :update_whois_body
|
after_save :update_whois_record
|
||||||
after_save :update_whois_server
|
after_save :update_whois_server
|
||||||
|
|
||||||
validates :name_dirty, domain_name: true, uniqueness: true
|
validates :name_dirty, domain_name: true, uniqueness: true
|
||||||
|
@ -125,7 +125,7 @@ class Domain < ActiveRecord::Base
|
||||||
includes(
|
includes(
|
||||||
:registrar,
|
:registrar,
|
||||||
:nameservers,
|
:nameservers,
|
||||||
:whois_body,
|
:whois_record,
|
||||||
{ tech_contacts: :registrar },
|
{ tech_contacts: :registrar },
|
||||||
{ admin_contacts: :registrar }
|
{ admin_contacts: :registrar }
|
||||||
)
|
)
|
||||||
|
@ -243,14 +243,14 @@ class Domain < ActiveRecord::Base
|
||||||
log
|
log
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_whois_body
|
def update_whois_record
|
||||||
self.whois_body = WhoisBody.create if whois_body.blank?
|
self.whois_record = WhoisRecord.create if whois_record.blank?
|
||||||
whois_body.update
|
whois_record.update
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_whois_server
|
def update_whois_server
|
||||||
if whois_body.present?
|
if whois_record.present?
|
||||||
whois_body.update_whois_server
|
whois_record.update_whois_server
|
||||||
else
|
else
|
||||||
logger.info "NO WHOIS BODY for domain: #{name}"
|
logger.info "NO WHOIS BODY for domain: #{name}"
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
module Whois
|
|
||||||
class Domain < Whois::Server
|
|
||||||
self.table_name = 'domains'
|
|
||||||
end
|
|
||||||
end
|
|
5
app/models/whois/record.rb
Normal file
5
app/models/whois/record.rb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
module Whois
|
||||||
|
class Record < Whois::Server
|
||||||
|
self.table_name = 'whois_records'
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,11 +1,11 @@
|
||||||
class WhoisBody < ActiveRecord::Base
|
class WhoisRecord < ActiveRecord::Base
|
||||||
belongs_to :domain
|
belongs_to :domain
|
||||||
|
|
||||||
def update_whois_server
|
def update_whois_server
|
||||||
return logger.info "NO WHOIS NAME for whois_body id: #{id}" if name.blank?
|
return logger.info "NO WHOIS NAME for whois record id: #{id}" if name.blank?
|
||||||
wd = Whois::Domain.find_or_initialize_by(name: name)
|
wd = Whois::Record.find_or_initialize_by(name: name)
|
||||||
wd.whois_body = whois_body
|
wd.body = body
|
||||||
wd.whois_json = whois_json
|
wd.json = json
|
||||||
wd.save
|
wd.save
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -53,12 +53,12 @@ class WhoisBody < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
self.name = h[:name]
|
self.name = h[:name]
|
||||||
self.whois_body = body
|
self.body = generated_body
|
||||||
self.whois_json = h
|
self.json = h
|
||||||
save
|
save
|
||||||
end
|
end
|
||||||
|
|
||||||
def body
|
def generated_body
|
||||||
<<-EOS
|
<<-EOS
|
||||||
Estonia .ee Top Level Domain WHOIS server
|
Estonia .ee Top Level Domain WHOIS server
|
||||||
|
|
9
db/migrate/20150422134243_rename_whois_body.rb
Normal file
9
db/migrate/20150422134243_rename_whois_body.rb
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
class RenameWhoisBody < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
rename_column :whois_bodies, :whois_body, :body
|
||||||
|
rename_column :whois_bodies, :whois_json, :json
|
||||||
|
remove_index :whois_bodies, :domain_id
|
||||||
|
rename_table :whois_bodies, :whois_records
|
||||||
|
add_index :whois_records, :domain_id
|
||||||
|
end
|
||||||
|
end
|
10
db/schema.rb
10
db/schema.rb
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20150423083308) do
|
ActiveRecord::Schema.define(version: 20150422134243) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -910,16 +910,16 @@ ActiveRecord::Schema.define(version: 20150423083308) do
|
||||||
t.text "depricated_table_but_somehow_paper_trail_tests_fails_without_it"
|
t.text "depricated_table_but_somehow_paper_trail_tests_fails_without_it"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "whois_bodies", force: :cascade do |t|
|
create_table "whois_records", force: :cascade do |t|
|
||||||
t.integer "domain_id"
|
t.integer "domain_id"
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.text "whois_body"
|
t.text "body"
|
||||||
t.json "whois_json"
|
t.json "json"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "whois_bodies", ["domain_id"], name: "index_whois_bodies_on_domain_id", using: :btree
|
add_index "whois_records", ["domain_id"], name: "index_whois_records_on_domain_id", using: :btree
|
||||||
|
|
||||||
create_table "zonefile_settings", force: :cascade do |t|
|
create_table "zonefile_settings", force: :cascade do |t|
|
||||||
t.string "origin"
|
t.string "origin"
|
||||||
|
|
|
@ -14,16 +14,16 @@
|
||||||
ActiveRecord::Schema.define(version: 20150113113236) do
|
ActiveRecord::Schema.define(version: 20150113113236) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
# enable_extension "plpgsql"
|
||||||
|
|
||||||
create_table "domains", force: :cascade do |t|
|
create_table "whois_records", force: :cascade do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.text "whois_body"
|
t.text "body"
|
||||||
t.json "whois_json"
|
t.json "json"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "domains", ["name"], name: "index_domains_on_name", using: :btree
|
add_index "whois_records", ["name"], name: "index_domains_on_name", using: :btree
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
namespace :whois do
|
namespace :whois do
|
||||||
desc 'Regenerate whois_body and whois_json at Registry master database (slow)'
|
desc 'Regenerate whois records at Registry master database (slow)'
|
||||||
task regenerate: :environment do
|
task regenerate: :environment do
|
||||||
start = Time.zone.now.to_f
|
start = Time.zone.now.to_f
|
||||||
print "-----> Regenerate whois_body and whois_json at Registry master database..."
|
print "-----> Regenerate whois records at Registry master database..."
|
||||||
Domain.included.find_each(batch_size: 50000).with_index do |d, index|
|
Domain.included.find_each(batch_size: 50000).with_index do |d, index|
|
||||||
d.update_whois_body
|
d.update_whois_record
|
||||||
print '.' if index % 100 == 0
|
print '.' if index % 100 == 0
|
||||||
end
|
end
|
||||||
puts "\n-----> all done in #{(Time.zone.now.to_f - start).round(2)} seconds"
|
puts "\n-----> all done in #{(Time.zone.now.to_f - start).round(2)} seconds"
|
||||||
|
@ -14,14 +14,14 @@ namespace :whois do
|
||||||
task export: :environment do
|
task export: :environment do
|
||||||
start = Time.zone.now.to_f
|
start = Time.zone.now.to_f
|
||||||
print "-----> Delete whois database data and sync with Registry master database..."
|
print "-----> Delete whois database data and sync with Registry master database..."
|
||||||
whois_bodies = WhoisBody.pluck(:name, :whois_body, :whois_json)
|
whois_records = WhoisRecord.pluck(:name, :body, :json)
|
||||||
Whois::Domain.delete_all
|
Whois::Record.delete_all
|
||||||
Whois::Domain.import([:name, :whois_body, :whois_json], whois_bodies)
|
Whois::Record.import([:name, :body, :json], whois_records)
|
||||||
puts "\n-----> all done in #{(Time.zone.now.to_f - start).round(2)} seconds"
|
puts "\n-----> all done in #{(Time.zone.now.to_f - start).round(2)} seconds"
|
||||||
end
|
end
|
||||||
|
|
||||||
namespace :schema do
|
namespace :schema do
|
||||||
desc 'Load whois schema'
|
desc 'Load whois schema into empty whois database'
|
||||||
task load: [:environment] do
|
task load: [:environment] do
|
||||||
whois_db = "whois_#{Rails.env}"
|
whois_db = "whois_#{Rails.env}"
|
||||||
begin
|
begin
|
||||||
|
@ -37,5 +37,18 @@ namespace :whois do
|
||||||
puts "\n#{e}"
|
puts "\n#{e}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc 'Force whois schema into exsisting whois database'
|
||||||
|
task force_load: [:environment] do
|
||||||
|
whois_db = "whois_#{Rails.env}"
|
||||||
|
begin
|
||||||
|
puts "\n------------------------ #{whois_db} schema loading ------------------------------\n"
|
||||||
|
ActiveRecord::Base.clear_all_connections!
|
||||||
|
ActiveRecord::Base.establish_connection(whois_db.to_sym)
|
||||||
|
load("#{Rails.root}/db/#{schema_file(whois_db)}")
|
||||||
|
rescue => e
|
||||||
|
puts "\n#{e}"
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -35,7 +35,7 @@ describe Domain do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should not have whois body' do
|
it 'should not have whois body' do
|
||||||
@domain.whois_body.should == nil
|
@domain.whois_record.should == nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -74,14 +74,14 @@ describe Domain do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should have whois body by default' do
|
it 'should have whois body by default' do
|
||||||
@domain.whois_body.present?.should == true
|
@domain.whois_record.present?.should == true
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should have whois json by default' do
|
it 'should have whois json by default' do
|
||||||
@domain.whois_body.whois_json.present?.should == true
|
@domain.whois_record.json.present?.should == true
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should have whois_body present by default' do
|
it 'should have whois record present by default' do
|
||||||
@domain.name = 'yeah.ee'
|
@domain.name = 'yeah.ee'
|
||||||
@domain.updated_at = Time.zone.parse('2020.02.02 02:00')
|
@domain.updated_at = Time.zone.parse('2020.02.02 02:00')
|
||||||
@domain.registered_at = Time.zone.parse('2000.01.01 9:00')
|
@domain.registered_at = Time.zone.parse('2000.01.01 9:00')
|
||||||
|
@ -108,8 +108,8 @@ describe Domain do
|
||||||
ns2.updated_at = Time.zone.parse('1970.01.01')
|
ns2.updated_at = Time.zone.parse('1970.01.01')
|
||||||
@domain.nameservers = [ns1, ns2]
|
@domain.nameservers = [ns1, ns2]
|
||||||
|
|
||||||
@domain.update_whois_body
|
@domain.update_whois_record
|
||||||
@domain.whois_body.whois_body.should == <<-EOS
|
@domain.whois_record.body.should == <<-EOS
|
||||||
Estonia .ee Top Level Domain WHOIS server
|
Estonia .ee Top Level Domain WHOIS server
|
||||||
|
|
||||||
Domain:
|
Domain:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue