On 9 Dec 2009, at 00:09, Ed Howland wrote:
Matt,
I was facinated to read the email thread on Cuke's wire protoccol.
You guys collaborated well.
I have been working on my own to develop a similar protocol for
RSpec. It is totally external to RSpec right now and very primitive.
Whereas with Cucumber, the step definitions are run on some other
language's server, my protocol executes all the code in Ruby in the
"it" blocks and proxies objects and method calls to a server.
Currently the protocol is CGIish+XML. The current server is PHP but
could be anything like .Net.
In the next iteration, I plan to use REST+JSON sort of like CounchDB
or CounchREST. With REST you get all the error checking/responses
with all the simplicity of the existing HTTP protocol, My first
version used ActiveResource but there are other REST clients for
Ruby, And JSON you already know.
It seemed to me that part of your discussion revolved around
encoding the protocol in JSON or externally. Did you consider REST.
Did you reject it because of performance?
Yes we did, briefly - probably before the discussion went online on
the lighthouse ticket. I think there were a couple of reasons why not
REST:
(1) simplicity - we wanted the wire server to be as low-tech as
possible so it would be easy and lightweight to implement on any
platform (think Cuke4EmbeddedDevice). Everyone's got a TCP stack but
not everyone's got a simple web server like sinatra - I'm not even
sure there's an especially simple one for .NET
(2) flexibility - as the protocol has emerged, it's become clear that
the relationship is pretty much client / server, but when we first
started we weren't sure how much chatter would need to go back &
forth. Obviously a REST server can't start making requests back to a
client (unless that client also starts offering a web server), but if
you've got two peers talking over a socket you can have two-way comms.
If anyone has any thoughts on this, I'd be interested.
If you're using your protocol to effectively get remote control over
objects, have you considered writing something to support DRB[1] on
the server side? Otherwise you could also look at SLIM[2], which is
the protocol Fitnesse uses in much the same way as Cucumber uses the
wire protocol. We did consider using slim in Cucumber - it's widely
supported with server implementations on many platforms, but since
SLIM has much more flexibility that we needed, we decided to keep
things simple.
Should we :
o continue to use web proxies for objects and method calls?
o -or- switch to running the matchers (should ==, etc.) over the
wire protocol, more like cucumber?
I'm not really clear what the goal of your app is, but to go more into
line with what cucumber's doing, I think what you'd do would be to
allow RSpec to remotely invoke entire examples ("it blocks") remotely.
You could then write those examples entirely in the native language.
Thanks and great work,
Ed
BTW, anyone working on a Cuke4PHP?
That's the first time I've heard anyone even suggest it :) I'd be
happy to collaborate with someone if they wanted some help with that.
[1]http://segment7.net/projects/ruby/drb/introduction.html
[2]http://fitnesse.org/FitNesse.UserGuide.SliM
On Mon, Nov 9, 2009 at 5:03 PM, Matt Wynne <m...@mattwynne.net> wrote:
On 6 Nov 2009, at 12:49, David Chelimsky wrote:
[3]http://github.com/aslakhellesoy/cucumber/blob/master/features/wire_protocol.feature
I'm well behind this effort and would like to offer my help on the
Cucumber end to make it possible to use the features to generate the
user documentation - I think this would make a terrific use case for
us to support.
cheers,
Matt
http://mattwynne.net
+447974 430184
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
--
Ed Howland
http://greenprogrammer.wordpress.com
http://twitter.com/ed_howland
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
cheers,
Matt
http://mattwynne.net
+447974 430184
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users