[Ironruby-core] Cucumber / RSpec Story Runner

Curt Hagenlocher curth at microsoft.com
Wed Oct 22 12:21:31 EDT 2008


I’ve attached an adapter against MSSQL that I use for testing.  This adapter is buggy and incomplete and was cobbled together from many sources.  Absolutely nothing about it is guaranteed, but someone may find some use in it.

From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Ivan Porto Carrero
Sent: Wednesday, October 22, 2008 1:08 AM
To: ironruby-core at rubyforge.org
Subject: Re: [Ironruby-core] Cucumber / RSpec Story Runner

I'll try cucumber tonight when i get home.
I'm trying to build a little rails app with rspec etc.

What's the status on a .NET based active record adapter?
I've been thinking that it might be necessary to write an adapter that creates the correct .NET provider and dispatches the calls through that layer.
Either as a part of ruby-dbd or as adapters to ActiveRecord..
dbd gives the advantage that you can use it everywhere then.

any thoughts?
---
Met vriendelijke groeten - Best regards - Salutations
Ivan Porto Carrero
GSM: +32.486.787.582
Blog: http://flanders.co.nz
Twitter: http://twitter.com/casualjim


On Wed, Oct 22, 2008 at 9:56 AM, Ben Hall <ben2004uk at googlemail.com<mailto:ben2004uk at googlemail.com>> wrote:
Nice work guys!!  Pleased that I won't be having to use a hacked
version of r156 :)

One of the problems you mentioned (pretty errors due to backtrace)
will cause the story runner in 1.1.4 to blow up and throw an
exception, but as that is now Cucumber I don't know if we will have
the same issues.  Have you tried Cucumber yet?


Ben




On Wed, Oct 22, 2008 at 8:01 AM, John Lam (IRONRUBY)
<jflam at microsoft.com<mailto:jflam at microsoft.com>> wrote:
> -X:Interpret forces execution to always go through the DLR interpreter rather than through the DLR compilation engine.
>
> This trades-off faster startup for decreased throughput.
>
> We have a number of different strategies that we're exploring to improve things:
>
> 1) Ahead of time cached pre-compilation to native x86 via ngen
> 2) Mixed mode DLR interpreter and DLR compiler. We'll start off interpreting and compile the 'hot' code paths dynamically at runtime.
> 3) Mixed mode Ruby interpreter and DLR compiler. We can improve perf even more by writing a Ruby specific interpreter and avoiding the tree transform from the Ruby AST to DLR trees for the interpreted code paths.
>
> We really haven't done any performance tuning of note on IronRuby so far. We're focusing on getting the language correct; performance will come after we stabilize the language.
>
>
> Thanks,
> -John
>
>
>> -----Original Message-----
>> From: ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org> [mailto:ironruby-core-<mailto:ironruby-core->
>> bounces at rubyforge.org<mailto:bounces at rubyforge.org>] On Behalf Of Orion Edwards
>> Sent: Tuesday, October 21, 2008 11:38 PM
>> To: ironruby-core at rubyforge.org<mailto:ironruby-core at rubyforge.org>
>> Subject: Re: [Ironruby-core] Cucumber / RSpec Story Runner
>>
>> I'm not on the same machine as earlier - the previous machine was my
>> work desktop PC running vista
>>
>> This one is running windows XP under vmware on a macbook
>>
>> Running with -X:Interpret I see 0.78 seconds on repeated runs (0.79 on
>> the first) Without it I see 1.95 seconds (2.05 on the first run)
>>
>> I didn't know about -X:Interpret...
>> So what exactly does it do differently, and if it's so much faster,
>> why isn't it the default?
>>
>>
>>
>> On 22/10/2008, at 7:21 PM, John Lam (IRONRUBY) wrote:
>>
>>
>>
>>       Great - I have it working now on my machine.
>>
>>       I'm seeing 0.45s or so as the net time (excluding startup) for the
>> tests if I run using the -X:Interpret flag. Can you try running with
>> that flag enabled on your machine and let me know how quickly it runs?
>>
>>       Thanks,
>>       -John
>>
>>       From: ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>
>> [mailto:ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>] On Behalf Of Orion Edwards
>>       Sent: Tuesday, October 21, 2008 11:07 PM
>>       To: ironruby-core at rubyforge.org<mailto:ironruby-core at rubyforge.org>
>>       Subject: Re: [Ironruby-core] Cucumber / RSpec Story Runner
>>
>>       Sure. Here's the entire contents of the ruby file
>>
>>       $LOAD_PATH << 'c:/dev/rspec/lib'
>>
>>       require 'spec'
>>
>>       module ActiveSupport; end # workaround ironruby defined? bug
>>
>>       class Vehicle
>>         def initialize(people)
>>           @people = people
>>         end
>>         attr_accessor :people
>>       end
>>
>>       describe Vehicle do
>>         it "should assign people using the constructor" do
>>           car = Vehicle.new(['orion', 'john', 'jim'])
>>           car.should have(3).people
>>         end
>>       end
>>
>>       Note I'm not using gems or anything else like that. To replicate this
>> you'd basically do this:
>>
>>       svn checkout ironruby 168 into c:\dev\ironruby
>>
>>       rake compile
>>
>>       git clone rspec straight from github, and stick it in c:\dev\rspec
>>
>>       edit c:\dev\rspec\lib\spec\extensions\main.rb and fix the call to
>> File.expand_path
>>
>>       spin up a command prompt and set PATH=blahblah so it can see the
>> ironruby binaries that got build previously
>>
>>       ir rspectest.rb
>>
>>
>>
>>       On 22/10/2008, at 6:40 PM, John Lam (IRONRUBY) wrote:
>>
>>
>>       Orion - can you supply us with your rspectest.rb file?
>>
>>       I was just hacking around with rspec 1.1.9 here, and it's blowing up
>> with a bunch of dependencies on startup.
>>
>>       Thanks,
>>       -John
>>
>>       From: ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>
>> [mailto:ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>] On Behalf Of Orion Edwards
>>       Sent: Tuesday, October 21, 2008 7:37 PM
>>       To: ironruby-core at rubyforge.org<mailto:ironruby-core at rubyforge.org>
>>       Subject: Re: [Ironruby-core] Cucumber / RSpec Story Runner
>>
>>       The nested defined? bug is logged here:
>>
>>
>> http://rubyforge.org/tracker/index.php?func=detail&aid=22503&group_id=
>> 4
>> 3
>> 59&atid=16798
>>
>>       The 'caller' one is actually 2 bugs, both of which have been logged
>> by ben hall already
>>
>>
>> http://rubyforge.org/tracker/?group_id=4359&atid=16798&func=detail&aid
>> =
>> 2
>> 2315
>>
>> http://rubyforge.org/tracker/?group_id=4359&atid=16798&func=detail&aid
>> =
>> 2
>> 2348
>>
>>       For those interested in running rspec right now, a better fix is to
>> replace line 26 of main.rb with
>>       args.last[:spec_path] = File.expand_path(
>> caller(0)[1].split(':').first )
>>
>>       This will only cause rspec to lose the line number - you also have to
>> run ir with the -D flag, or it doesn't include the path at all.
>>
>>       As far as my quick-hack investigation shows me, rspec only uses this
>> data for showing friendly error messages, rather than any core logic,
>> so perhaps it's not super-critical.
>>       It would be nice to run it unpatched tho, IronRuby is looking
>> incredibly close to doing that :-)
>>
>>
>>       Jim Deville wrote:
>>       I'll add a rake task to compile release. Can you try to isolate those
>> cases and file bugs? The second one is pretty easy, but I'd like to
>> have tracking on both of them.
>>
>>       From: ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>
>> [mailto:ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>] On Behalf Of Orion Edwards
>>       Sent: Tuesday, October 21, 2008 7:04 PM
>>       To: ironruby-core at rubyforge.org<mailto:ironruby-core at rubyforge.org>
>>       Subject: Re: [Ironruby-core] Cucumber / RSpec Story Runner
>>
>>       I just ran rspec 1.1.9 (straight from github) on IronRuby build 167,
>> and it appears to work (I only have a simple test, but hey).
>>
>>       I only had to make 2 changes:
>>
>>       rspec\lib\spec\extensions\main.rb:26 is
>>       args.last[:spec_path] = File.expand_path(caller(0)[1])
>>       IronRuby still doesn't seem to handle caller quite the same as MRI. I
>> have no idea what that code is for, but I replaced it with this as a
>> quick hack
>>       args.last[:spec_path] = "."
>>
>>       and it seemed to work.
>>
>>       I encountered another problem using the 'have' matcher - rspec does
>> this
>>       if inflector = (defined?(ActiveSupport::Inflector) ?
>> ActiveSupport::Inflector : (defined?(Inflector) ? Inflector : nil))
>>       IronRuby throws uninitialized constant Object::ActiveSupport, whereas
>> MRI just returns nil - it looks like IR isn't handling defined?
>> on nested things properly yet.
>>
>>       To work around this I just put
>>       module ActiveSupport; end
>>       at the top of my ruby file to get around the nested module issue.
>>
>>       And presto!
>>       C:\development\irtest>ir rspectest.rb
>>       .
>>
>>       Finished in 2.072133 seconds
>>
>>       1 example, 0 failures
>>
>>       C:\development\irtest>ruby rspectest.rb
>>       .
>>
>>       Finished in 0.053 seconds
>>
>>       1 example, 0 failures
>>
>>       The only problem now is that 2.07 seconds is somewhat larger than
>> 0.053... I am using the debug build of ir though, as that's what
>> rake:compile seems to give me.
>>
>>       Just playing with VS now to see if I can build a release version and
>> try that
>>
>>       Ben Hall wrote:
>>       Hi,
>>
>>       To get rspec to work you will need to modify the actual Ironruby
>>       source.  I've raised bugs to get the changes required fixed, however
>> I
>>       did this based on 1.1.4, I think Cucumber will have a whole load more
>>       bugs attached as it has more dependencies.
>>
>>       I know for a fact you won't be able to run Cucumber unmodified due to
>>       existing bugs around gems.  (for example, gem needing .rb at the end
>>       of the file to be able to find it)
>>
>>       However, I haven't had chance to take a closer look.
>>
>>       Ben
>>
>>
>>
>>       On Fri, Oct 17, 2008 at 2:53 PM, Curt Hagenlocher
>> <curth at microsoft.com<mailto:curth at microsoft.com>> <mailto:curth at microsoft.com<mailto:curth at microsoft.com>>  wrote:
>>
>>
>>               If you explicitly set the GEM_PATH before requiring gems, you should
>> be able to use gems that are already present.  I haven't tried any
>> other gem operations.
>>
>>               I assume you're running with the latest source?
>>
>>               -----Original Message-----
>>               From: ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>
>> [mailto:ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>] On Behalf Of Pat Gannon
>>               Sent: Friday, October 17, 2008 1:30 AM
>>               To: ironruby-core at rubyforge.org<mailto:ironruby-core at rubyforge.org>
>>               Subject: [Ironruby-core] Cucumber / RSpec Story Runner
>>
>>               Has anyone tried to get Cucumber (or it's predecessor:
>> the RSpec story
>>               runner) to work with IronRuby?  I have not had any luck thus far (I
>> am
>>               extremely new to Ruby), and I would really like to be able to use
>>               Cucumber to write executable feature documentation for my .NET code.
>>
>>               http://github.com/aslakhellesoy/cucumber/wikis
>>
>>               I copied it under the "lib" directory, as well as several of its
>>               dependencies, but when I try to do "require
>>               'cucumber-0.1.7/lib/cucumber'", ir (interactive ruby) fails with a
>> stack
>>               overflow.  The same thing happens when I try to require some its
>>               dependencies manually (eg. "require 'hoe-1.8.0/lib/hoe'"
>> and "require
>>               'rake-0.8.3/lib/rake'"), but some work just fine (eg.
>> "require
>>               'polyglot-0.2.3/lib/polyglot'" and "require
>>               'treetop-1.2.4/lib/treetop'").
>>
>>               I also tried to get gem working to aide me in this process, but I
>> had
>>               problems with that too.  Has anyone got gem working with IronRuby?
>>
>>               Thanks in advance!
>>               Pat Gannon
>>               --
>>               Posted via http://www.ruby-forum.com/.
>>               _______________________________________________
>>               Ironruby-core mailing list
>>               Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
>>               http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>               _______________________________________________
>>               Ironruby-core mailing list
>>               Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
>>               http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>
>>
>>       _______________________________________________
>>       Ironruby-core mailing list
>>       Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
>>       http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>
>>       --
>>       Orion Edwards
>>       Web Application Developer
>>
>>       T: +64 7 859 2120
>>       F: +64 7 859 2320
>>       E: orion.edwards at open2view.com<mailto:orion.edwards at open2view.com>
>> <mailto:orion.edwards at open2view.com<mailto:orion.edwards at open2view.com>>
>>
>>       Open2view.com
>>       The Real Estate Website
>>
>>       <image001.jpg>
>>
>>
>> ________________________________
>>
>>
>>
>>
>>
>>
>>       _______________________________________________
>>       Ironruby-core mailing list
>>       Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
>>       http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>
>>       --
>>       Orion Edwards
>>       Web Application Developer
>>
>>       T: +64 7 859 2120
>>       F: +64 7 859 2320
>>       E: orion.edwards at open2view.com<mailto:orion.edwards at open2view.com>
>> <mailto:orion.edwards at open2view.com<mailto:orion.edwards at open2view.com>>
>>
>>       Open2view.com
>>       The Real Estate Website
>>
>>       <image001.jpg>
>>       _______________________________________________
>>       Ironruby-core mailing list
>>       Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
>>       http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>       _______________________________________________
>>       Ironruby-core mailing list
>>       Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
>>       http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>
>
> _______________________________________________
> Ironruby-core mailing list
> Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
> http://rubyforge.org/mailman/listinfo/ironruby-core
>
_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20081022/c986cf36/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mssql_adapter.rb
Type: application/octet-stream
Size: 17245 bytes
Desc: mssql_adapter.rb
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20081022/c986cf36/attachment-0001.obj>


More information about the Ironruby-core mailing list