tagged ruby
Here's a WSDL file for Zimbra's Admin SOAP API.
Updates
- 22 August 2007
- added
CreateDomainRequestoperation - implemented complexTypes
ldapRecord,accountRequest,domainRequestto support different definitions of the same element name in different contexts (this actually DRY'd the schema)
- added
- 20 August 2007
- changed
urn:zimbraschema in the WSDL so thataccount&domainelements always ref a common element (fixed/simplified to avoid redefinition of an element name)
- changed
- 16 August 2007
- revised this post to explain & support my findings about Zimbra's SOAP API
- 15 August 2007
- expanded coverage of WSDL with many more Zimbra Admin operations
- refactored types/schema to reuse element definitions via ref attribute
- implemented simpleContent string for
sessionId&a - moved header
contextinto the 'zimbra' namespace
- 04 August 2007
- now with support for the several app-level methods
- also fixed some namespace problems
This WSDL for Zimbra does not fulfill WSDL's true purpose: to make Zimbra's SOAP services immediately consumable. Ideally, WSDL enables mapping remote services to native objects without writing adapter code.
The fact is that Zimbra's SOAP API does not fit elegantly into WSDL's ideal.
Zimbra's SOAP interface wraps the content of every message
Every message body is wrapped in an operationNameRequest or operationNameResponse element. Yet the WSDL specs say,
Multiple part elements are used if the message has multiple logical units
Zimbra goes the route of monolithic messages. Though not functionally critical, this extra level in the SOAP message causes mapping to unique complexType *Request & *Response objects in the client, instead of directly to part-level simpleType & complexType elements. Direct mapping to usable message parts enables very slim adapter code (if any) in the client.
Also, the Zimbra's method names follow the pattern operationNameRequest instead of the normalized, simple operationName, adding further complexity to the WSDL.
Zimbra's web API is not RESTful
A sessionId must be propagated through each request & updated if changed in a response. Also, an initial AuthRequest gets an AuthToken, and subsequent requests' headers must contain that token.
Nonetheless
WSDL rocks as a way to generate stubs for your own implementation of a web service.
Read the rest of this entrySay for instance you just applied a software update to your Mac OS X Server and rebooted.
Suddenly a Rails app that was running fine spits out an error when ActionPack does a redirect_to. In the Rails production.log:
SystemStackError (stack level too deep)
Well my friend, before you set off to debugging the Ruby install on your OS X machine, try clearing the Rails sessions. At the command line:
rake tmp:sessions:clear RAILS_ENV=production
Everyone must login again, but alas the problem is solved! [for me]
Is it because we're using Apple's built-in Apache 1.3 web server with source-compiled FastCGI support? Hmmm.
Texas' premier Ruby Conference web site is now officially live.
The site is powered by RadiantCMS running on two Mongrels balanced by Nginx.
There's not much info yet, just a pre-registration form to help the plan the event. Plan to come on down to the Ruby Conference in Austin. It might actually drop under 100-degrees by September 7th!
Ruby programmers in Austin have a new face of organization & connection.
Now is the time for programmers to stand up for what is good & true in the internet world today!
The guts are a trendy full-stack-HTTP set-up, running Mephisto as a cluster of Mongrels.
The design was inspired by the beauty of the ruby, and love of edible brown things, like cacao & coffee.
Which one is right for your Rails application?
In RMagick vs MiniMagick I will compare various aspects of these two Ruby image processing libraries.
Especially poignant if your app will be deployed in a shared hosting environment, save some brain-aches by weighing their differences before your code hits resource limits.
I'll be making this lightening presentation at Tuesday's Austin on Rails meeting.
Presentation (exported from Keynote): RMagick vs MiniMagick (PDF)
Mogrify is ImageMagick's command-line utility to transform images. I'm using it within MiniMagick, a Rails plugin that allows image manipulation with minimum memory usage compared to the more ruby-like RMagick bindings.
So the point of this post... Do you get errors like "mogrify: unable to open module file" when it's looking for a coder?
Read the rest of this entryIn what 750-page tome do you get fugal themes of formal systems, Tortoise & Mr. Crab, canons of dialog, artificial intelligence, genetics, hardwired behaviors of a wasp, consciousness, records that break record players, & etchings of strange loops?
Gödel, Escher, Bach: An Eternal Golden Braid
Read the rest of this entryIn the spirit of Ruby's & Rails' blossoming community of open-source developers, these meetings are free to attend & open to all.
There are different levels & types of people involved, but of course the more prevalent & outspoken tend to be the more confident & experienced developers (though this is less true for the Rails group).
There are two different groups...
Read the rest of this entryThis project has been consuming me; it's my entry for the typo theme garden.

The dictionary says concomitant is:
A phenomenon that naturally accompanies or follows something.
In this context, concomitant is the name of a minimalist theme for typo that flows with your content.
Read the rest of this entryDo you get header not found errors when installing a Ruby Gem? (In my case, it's the FastCGI bindings.)
Read the rest of this entryAfter months of weekend-afternoon cafe work & late-night development sessions, I'm pleased to present a new web site created for sword/knife designer, bladesmith & goldsmith Jot Singh Khalsa of Millis, Massachusetts:
Visit this new site which features almost 150 fine handcrafted knives & swords created by Jot Singh over the past three decades.
I constructed the site in Ruby on Rails, that new-skool web development framework that lets web developers gracefully build high-quality, sustainable applications.
The site is hosted at TextDrive using lighttpd/FastCGI/Ruby/MySQL.
Web development, a never-ending story, the evolution of information, practically dropped into my lap by the universe. My preparation for the world of producing information software was void of formal training. Each time I attempted formal training, I felt too limited, and so I always escape.
So now, I am exploring Ruby's unit testing framework (extended in Rails).
Never having used a software unit test framework, I see: this beautiful facet of programming which makes software work intrinsically better.
In this process, I've found many references to Extreme Programming [XP]. Part of XP process uses these unit tests (small embedded assertions which can be tested automatically) to alter the traditional development process from "code, then test" to "test, then code", making software systems emerge as organic & sustainable collectively owned source code.
I like where this is headed.
Between learning probably the most advanced web application framework and an upcoming project to develop a custom email server filter module, both in Ruby, a 10-year-old object-based scripting language born in Japan, I am one busy coding monkey.
At this point, I am convinced that Ruby is not a programming language in the traditional sense. Ruby is expressive codespeak. The most challenging aspect of learning it, is unlearning the convoluted tricks that the utilitarian languages of my last 10-years tattooed into my brain.
This shift of thinking is akin to a shift I experienced around 1990 from line-number-based BASIC programming [on my family's TI-994a!], to modular HyperTalk/Pascal/VBScript/PHP.


