MiniSuffix

Installation

Debian

Add this line to your application's Gemfile:

gem 'mini_suffix'

And then execute:

$ bundle

Or install it yourself as:

$ gem install mini_suffix

Usage

require 'mini_suffix'

MiniSuffix.domain("meta.discourse.org")
# => "discourse.org"

MiniSuffix.domain("www.careers.gov.sg")
# => "careers.gov.sg"

Benchmark

# benchmark/bench.rb

PublicSuffix.domain total allocated memsize: 6574255
PublicSuffix.domain total retained memsize: 1133266
MiniSuffix.domain total allocated memsize: 8000
MiniSuffix.domain total retained memsize: 0

Warming up --------------------------------------
 PublicSuffix.domain     4.503k i/100ms
   MiniSuffix.domain    77.107k i/100ms
Calculating -------------------------------------
 PublicSuffix.domain     47.521k (± 2.2%) i/s -    238.659k in   5.024541s
   MiniSuffix.domain    875.595k (± 3.8%) i/s -      4.395M in   5.027237s

Comparison:
   MiniSuffix.domain:   875594.7 i/s
 PublicSuffix.domain:    47521.2 i/s - 18.43x  slower

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Updating libpsl

Libpsl binaries are bundled with the gem. The current version is checked out as a submodule in ./libpsl/. To update, checkout a later commit in the submodule (ideally matching an upstream release tag). You will then need to rebuild the binaries for all architectures. This requires running ./build-libpsl.sh in each environment. Depending on your setup, you may be able to accomplish that via virtual machines and/or Docker.

Check the comments in ./build-libpsl.sh for more information.

The submodule bump and updated binaries should be checked in to the repository.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/discourse/mini_suffix.

License

The gem is available as open source under the terms of the MIT License.