Skip to content
This repository has been archived by the owner. It is now read-only.
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Code Climate

Allows for interactions with multiple DNS' through one abstract API. You can use this to talk to one or more DNS providers if you choose.

splice: join or connect (a rope or ropes) by interweaving the strands.

You are joining multiple DNS providers together. This can be used to transfer records from one to the other without breaking the primary provider.


Add this line to your application's Gemfile:

gem 'splicer'


Splicer.configure do |config|
  config.register('company','user','pass')) # gem 'splicer-dynect'
  config.register('user','pass')) # gem 'splicer-dns_made_easy'

This library does rely on 3rd party sources, so it can and will take time to publish the zones. It would be wise to put this into a background job.

Under The Hood

Splicer is a simple abstract data structure that allows you to put together DNS zones and records quickly. The providers are what take this abstract DNS model and turn it into the concrete model in some external API.


All records are relative to a zone.

record = Splicer::Records::ARecord('', '')


Is a collection of records.

zone ='')

When Splicer::Zone#publish is called, the provider can be passed to only push the updates to that zone in the DNS.


Providers are adapters to a 3rd party API, such as Dynect or DNSMadeEasy. Both API's are very different but similar in many respects.

If you write a provider you MUST follow a few rules:

  • A provider must utilize the abstract model.
  • Do NOT monkey patch the abstract model. This can cause problems with other provider gems, and cause the library to be unstable.
  • Provide a way to build an abstract model from the concrete (3rd party) model. This will allow for easier export to other DNS providers.
  • If a provider does not have an ability to use/create a record such as a KEY record, then ignore it.
  • When publishing the zone, there should be ways to completely overwrite the zone and merge existing records with that zone.
  • Tests must be written.


Any and all contributions are welcome. Be sure to create a feature branch and send pull requests. Always, always, run rspec spec or rake to ensure that all tests are passing.


As of version 2.2.0, Dynect will no longer be fully supported.