0

I am trying to create a simple ruby on rails app to output the whois info. I'm brand spankin' new to ruby so bear w/ me.

require 'whois'
require 'whois-parser'

My controller:

class WhoisController < ApplicationController
  def index
    whois = Whois::Client.new    
    msg = {:token => whois.lookup("google.com")}
    render :json => msg
  end
end

I get an error:

cannot load such file -- whois/server/adapters/verisign

EDIT:

The suggestion to run whois google.com will run the system call whois when I need to run the ruby package whois because I need to be able to have json output for each of the fields...e.g. lookup the "Registrar IANA ID", etc. The output of whois google.com is:

{"whois":"   Domain Name: GOOGLE.COM\n   Registry Domain ID: 2138514_DOMAIN_COM-VRSN\n   Registrar WHOIS Server: whois.markmonitor.com\n   Registrar URL: http://www.markmonitor.com\n   Updated Date: 2018-02-21T18:36:40Z\n   Creation Date: 1997-09-15T04:00:00Z\n   Registry Expiry Date: 2020-09-14T04:00:00Z\n   Registrar: MarkMonitor Inc.\n   Registrar IANA ID: 292\n   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com\n   Registrar Abuse Contact Phone: +1.2083895740\n   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited\n   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited\n   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited\n   Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited\n   Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited\n   Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited\n   Name Server: NS1.GOOGLE.COM\n   Name Server: NS2.GOOGLE.COM\n   Name Server: NS3.GOOGLE.COM\n   Name Server: NS4.GOOGLE.COM\n   DNSSEC: unsigned\n   URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/\n\u003e\u003e\u003e Last update of whois database: 2019-02-02T02:42:36Z \u003c\u003c\u003c\n\nFor more information on Whois status codes, please visit https://icann.org/epp\n\nNOTICE: The expiration date displayed in this record is the date the\nregistrar's sponsorship of the domain name registration in the registry is\ncurrently set to expire. This date does not necessarily reflect the expiration\ndate of the domain name registrant's agreement with the sponsoring\nregistrar.  Users may consult the sponsoring registrar's Whois database to\nview the registrar's reported date of expiration for this registration.\n\nTERMS OF USE: You are not authorized to access or query our Whois\ndatabase through the use of electronic processes that are high-volume and\nautomated except as reasonably necessary to register domain names or\nmodify existing registrations; the Data in VeriSign Global Registry\nServices' (\"VeriSign\") Whois database is provided by VeriSign for\ninformation purposes only, and to assist persons in obtaining information\nabout or related to a domain name registration record. VeriSign does not\nguarantee its accuracy. By submitting a Whois query, you agree to abide\nby the following terms of use: You agree that you may use this Data only\nfor lawful purposes and that under no circumstances will you use this Data\nto: (1) allow, enable, or otherwise support the transmission of mass\nunsolicited, commercial advertising or solicitations via e-mail, telephone,\nor facsimile; or (2) enable high volume, automated, electronic processes\nthat apply to VeriSign (or its computer systems). The compilation,\nrepackaging, dissemination or other use of this Data is expressly\nprohibited without the prior written consent of VeriSign. You agree not to\nuse electronic processes that are automated and high-volume to access or\nquery the Whois database except as reasonably necessary to register\ndomain names or modify existing registrations. VeriSign reserves the right\nto restrict your access to the Whois database in its sole discretion to ensure\noperational stability.  VeriSign may restrict or terminate your access to the\nWhois database for failure to abide by these terms of use. VeriSign\nreserves the right to modify these terms at any time.\n\nThe Registry database contains ONLY .COM, .NET, .EDU domains and\nRegistrars.\n"}

EDIT #2 The following plain old ruby works:

require "whois"
require "whois-parser"
require "json"

class MyWhoIs
  def initialize(site)
    @site = site
  end
  def index
    whois = Whois::Client.new
    record = Whois.whois("#{@site}")
    parser = record.parser
    puts parser.created_on
  end
end

who = MyWhoIs.new("google.com")
who.index

prints "1997-09-15 00:00:00 -0700"

Why doesn't it work in Rails?

user_78361084
  • 3,538
  • 22
  • 85
  • 147
  • 1
    How did you install the gems? Looking at the whois-parser gem, it automatically installs the whois gem and includes it as a dependency. Can you try removing the `require 'whois'` line for kicks? The missing file should be found in the whois gem. Are you using Bundler? Bundler is great for managing gem dependencies. If you installed both gems independently (`gem install [gem name here]`), you may be running into a version mismatch between the two gems or something. – Nate Jan 31 '19 at 05:48
  • I've removed the require 'whois' line, uninstalled both then just reinstalled whois-parser. I get the same error in rails but strangely my example works in plain ol' ruby. – user_78361084 Feb 02 '19 at 16:26

2 Answers2

1

Execute this natively without need a external gem. To call a bash function

`echo 'hello world'`

So

class WhoisController < ApplicationController
  def index
    whois = Whois::Client.new    
    msg = {:token => `whois google.com`}
    render :json => msg
  end
end
thiaguerd
  • 807
  • 1
  • 7
  • 16
1

whois/server/adapters/verisign is a file on gem try reinstall a gem

gem uninstall whois
gem install whois

Another solution is download a source of gem and update your gem file

cd /your/path/
git clone git@github.com:weppos/whois.git

On your Gemfile

gem 'whois', path: '/your/path/whois'

To install a gem from source

cd /your/path/whois
gem build whois.gemspec
gem install whois-x.y.z.gem

After this update your Gemfile to

gem 'whois'
thiaguerd
  • 807
  • 1
  • 7
  • 16