ruby-oai is a Open Archives Protocol for Metadata Harvesting (OAI-PMH) library for Ruby. OAI-PMH is a somewhat archaic protocol for sharing metadata between digital library repositories. If you are looking to share metadata on the web you are probably better off using a feed format like RSS or Atom. If have to work with a backwards digital repository that only offers OAI-PMH access then ruby-oai is your friend.
The OAI-PMH spec defines six verbs
ListMetadataFormat) used for discovery and sharing of
The ruby-oai gem includes a client library, a server/provider library and a interactive harvesting shell.
The OAI client library is used for harvesting metadata from repositories. For example to initiate a ListRecords request to pubmed you can:
require 'oai' client = ::Client.new 'http://www.pubmedcentral.gov/oai/oai.cgi' response = client.list_records # Get the first page of records response.each do |record| puts record. end # Get the second page of records response = client.list_records(:resumption_token => response.resumption_token) response.each do |record| puts record. end # Get all pages together (may take a *very* long time to complete) client.list_records.full.each do |record| puts record. end
See OAI::Client for more details
The OAI provider library handles serving local content to other clients. Here's how to set up a simple provider:
class MyProvider < Oai::Provider repository_name 'My little OAI provider' repository_url 'http://localhost/provider' record_prefix 'oai:localhost' admin_email 'root@localhost' # String or Array source_model MyModel.new # Subclass of OAI::Provider::Model end
Seefor more details
The OAI-PMH client shell allows OAI Harvesting to be configured in an interactive manner. Typing
oai on the command line starts the shell. After initial configuration, the shell can be used to manage harvesting operations.
Seefor more details
Normally the best way to install oai is as part of your
source :rubygems gem 'oai'
Alternately it can be installed globally using RubyGems:
$ gem install oai