This library accesses the Tender REST API. It is my ode to and thanks for the tender lovemaking Aaron Patterson is doing on ActiveRecord.

It is currently read-only, and made especially for scripts that import data from Tender to use in your own application. Feel free to fork and add missing API calls.


I previously used HTTParty to connect to the Tender API, but I ran into two issues:

  • HTTParty's JSON decoding is really slow, and resulted in “stack level too deep” exceptions. Love uses yajl to decode JSON instead.

  • Because Tender does not check or convert the encoding of email messages that they receive, invalid UTF-8 characters can get into the system, which will break Ruby 1.9. Love handles character encoding manually, and will replace all the invalid UTF-8 characters by the UTF “unknown character” character.

  • I had to handle paging manually to get all data. Love will automatically send multiple requests to get all the pages to iterate over all the available objects.


Run gem install love or add gem "love" to your Gemfile.


require 'love'
tender = Love.connect('site', 'api_key')

# Loop over all discussions:
tender.each_discussion do |discussion|
  # your awesome stuff here

# Also available:
tender.each_user { |u| ... }
tender.each_queue { |q| ... }
tender.each_category { |c| ... }

# Or get a single record, using an ID or HREF:
d = tender.get_discussion('12345')
u = tender.get_user('')


This library is written by Willem van Bergen for Shopify, and is MIT licensed.