rAtom was originally built to support the communication between a number of applications built by Peerworks[http://peerworks.org], via the Atom Publishing protocol. However, it supports, or aims to support, all the Atom Syndication Format and Publication Protocol and can be used to access Atom feeds or to script publishing entries to a blog supporting APP.
Features:
- Uses libxml-ruby so it is _much_ faster than a REXML based library.
- Uses the libxml pull parser so it has much lighter memory usage.
- Supports RFC 5005 (http://www.ietf.org/rfc/rfc5005.txt) for feed pagination.
You can install via gem using:
# sudo gem install ratom
Usage
To fetch and parse an Atom Feed you can simply:feed = Atom::Feed.load_feed(URI.parse("http://example.com/feed.atom"))
And then iterate over the entries in the feed using:
feed.each_entry do |entry|
# do cool stuff
end
To construct a Feed
feed = Atom::Feed.new do |feed|
feed.title = "My Cool Feed"
feed.id = "http://example.com/my_feed.atom"
feed.updated = Time.now
end
To output a Feed as XML use to_xml
> puts feed.to_xml
<feed xmlns="http://www.w3.org/2005/Atom">
<title>My Cool Feed</title>
<id>http://example.com/my_feed.atom</id>
<updated>2008-03-03T23:19:44+10:30</updated>
</feed>
Publishing
To publish to a remote feed using the Atom Publishing Protocol, first you need to create a collection to publish to:collection = Atom::Pub::Collection.new(:href => 'http://example.org/myblog')
Then create a new entry:
entry = Atom::Entry.new do |entry|
entry.title = "I have discovered rAtom"
entry.authors << name =""> 'A happy developer')
entry.updated = Time.now
entry.id = "http://example.org/myblog/newpost"
entry.content = Atom::Content::Html.new("<p>rAtom lets me post to my blog using Ruby, how cool!</p>")
end
And publish it to the Collection:
published_entry = collection.publish(entry)
7 comments:
Any chance you'd consider removing ActiveSupport as a dependency for this gem? (or accept a patch that does this). I'd like to use this with a merb app, but I'd prefer not to bloat the app by pulling in all of ActiveSupport.
I haven't got a problem removing ActiveSupport. I'm only using cattr_accessor so ActiveSupport is definitely overkill.
I can probably do this in the next couple of days, or you want to submit a patch I can get it done sooner.
Thanks.
Release 0.2.2 removes Active Support. Should be available in the gem index soon. Let me know if you have any problems.
Thanks for this. I'm looking to rock out with AtomPub and this looks to be a good solution. For anyone interested, there's also atom-tools. I look forward to trying both of these out.
I config'd the gem (in my Rails 2.1.0-based project) with this in environment.rb:
config.gem 'ratom', :version => '~>0.5.1'
and I see "no such file to load -- ratom" when I start my server. Do I need a :library option on that config.gem line? If so, what's the :library name?
@bill: :lib => 'atom' should fix it. Thanks
Man that looks so much simpler than the hoops you have to jump through with PHP!
Sunroom
Post a Comment