One year after the first major release, almost 2 years after the first commit, 1k commits and 59 versions after, I'm very proud to announce the immediate availability of Whois 2.0.
Whois is an intelligent, pure Ruby, WHOIS client and parser. It provides a flexible and programmable API to query WHOIS servers and look up IP, TLD, and domain WHOIS information. It also offers command-line interface to run WHOIS queries from the console.
This second major release, the 60th since I released the gem, is a very important milestones. I started working on this project with the idea of creating a Ruby parser for each TLD available and it took me two years and countless hours to reach this goal.
Some stats
To give you a rough idea about the complexity of this project, here's a few numbers about Whois 2.0.
- 866,706 different WHOIS records (~3.3 GB of data) analyzed as of March 16th, 2011
- 425 RSpec test files
- 444 fixture files extracted from real WHOIS records
- 3787 RSpec examples and an unknown number of matches (sorry, I stopped keeping track of them when they reached 15k assertions) that probably makes this project one of the gems with the largest RSpec test suite
- ~20.000 lines of code, including the test files
- 168 different WHOIS parsers
Oh, man. You can't believe the amount of work required to cover all the existing WHOIS servers, their features and especially their whims.
New and Notable
The increasing support for all existing TLD servers is probably one of the most important changes for this milestone. But the CHANGELOG is very huge and there are a few other changes that are worth a mention.
I already blogged about a few of them.
- The
#nameservers
property now returns a Nameserver object. This change allows the parser to also extract name server IPv4 and IPv6 addresses. - A new caching mechanism reduces the number of instance variables created.
- The library now supports the Gem Testers project.
- You can now bind a different address or port to the WHOIS socket request.
Last but not least, the Whois::Answer
class has been renamed to Whois::Record
.
There are a couple of backwards-incompatible changes to the API. These changes were necessary to evolve the API to better reflect the representation of the existing WHOIS responses.
What's Next?
The Whois library is pretty stable. It is now used in production for several big projects.
The API is mature. A few changes have been made in this major release to support additional WHOIS properties, however I don't expect big changes in the future. The next releases will focus on increasing the list of supported properties for each parser, as well closing some of the existing issues.
The biggest change in the API in the near future is likely to be the standardization of the status property.
In the last months I received some great feedback from people using my library with other platforms, such as Java and .NET. This is amazing. If you have any case study, case history or feedback, please let me know. I would love to learn more about how you use the library.
How to Upgrade
To upgrade to Whois 2.0 please follow the instructions in the documentation page.