Forum: IronRuby Cucumber / RSpec Story Runner

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7f1bf9b3f5a791c90cea8c2bd608e925?d=identicon&s=25 Pat Gannon (patgannon)
on 2008-10-17 10:29
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
F983f0c990cba2fe743ef62a975ec99c?d=identicon&s=25 Curt Hagenlocher (Guest)
on 2008-10-17 15:54
(Received via mailing list)
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?
D4ced0fe3718f187173fc05dd7f33f57?d=identicon&s=25 Ben Hall (Guest)
on 2008-10-20 11:25
(Received via mailing list)
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
D66f1026934d7b379ecf51556a4b41cf?d=identicon&s=25 Orion Edwards (Guest)
on 2008-10-22 04:04
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
Ade8632553a9243ae05fc920f68644c1?d=identicon&s=25 Jim Deville (Guest)
on 2008-10-22 04:16
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
D66f1026934d7b379ecf51556a4b41cf?d=identicon&s=25 Orion Edwards (Guest)
on 2008-10-22 04:22
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
F983f0c990cba2fe743ef62a975ec99c?d=identicon&s=25 Curt Hagenlocher (Guest)
on 2008-10-22 04:46
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
A120eb09d383829bfa210bf656fcde4e?d=identicon&s=25 John Lam (IRONRUBY) (Guest)
on 2008-10-22 05:05
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
Cb51033949ffccd982ae32c9f890f25a?d=identicon&s=25 Tomas Matousek (Guest)
on 2008-10-22 05:12
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
Ade8632553a9243ae05fc920f68644c1?d=identicon&s=25 Jim Deville (Guest)
on 2008-10-22 05:14
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
Ade8632553a9243ae05fc920f68644c1?d=identicon&s=25 Jim Deville (Guest)
on 2008-10-22 05:15
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
A120eb09d383829bfa210bf656fcde4e?d=identicon&s=25 John Lam (IRONRUBY) (Guest)
on 2008-10-22 06:50
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
D66f1026934d7b379ecf51556a4b41cf?d=identicon&s=25 Orion Edwards (Guest)
on 2008-10-22 07:06
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
A120eb09d383829bfa210bf656fcde4e?d=identicon&s=25 John Lam (IRONRUBY) (Guest)
on 2008-10-22 07:41
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
D66f1026934d7b379ecf51556a4b41cf?d=identicon&s=25 Orion Edwards (Guest)
on 2008-10-22 07:59
(Received via mailing list)
I wasn't really sure where to start.

Running a rake compile leaves the system alone, it's actually when you
open the projects in visual studio (which I needed to do earlier to
compile a release build).

Note: I have my code in c:\dev\ironruby on this box. there's no trunk
subfolder, so this may have something to do with all those ....\..\..
\..\..\.\.\...\'s that are in the csproj files

The security warning dialog comes up telling me it may be unsafe, and
asking to load the project for browsing, or to load normally.

I tell it to load the project normally (I trust you guys, awwww), and
it then creates these folders. Note that the only thing that was
present previously was my c:\dev

c:\build\release
c:\Merlin\Main\Bin\FxCop
c:\dev\Bin\FxCop

Note: At this point, all I've done is tell VS to load
microsoft.scripting.core.dll
It then prompts me again if I trust it to load
microsoft.scripting.extensionattribute.dll, which doesn't create any
extra directories that I can find

This is not something I realised visual studio could actually even do,
so perhaps I'm not the right person to provide a patch for it...

Moving on, I now switch to release config, and hit compile. This now
works with no additional hackery in svn r168 (Thanks John!)

However, I now also have

c:\Tools\Nessie\Nessie\bin\IronRuby.dll
c:\build\debug


IIRC compiling from VS in debug mode produces even more littering too.

Thanks, Orion
Ade8632553a9243ae05fc920f68644c1?d=identicon&s=25 Jim Deville (Guest)
on 2008-10-22 08:05
(Received via mailing list)
It appears that rspec has a broken gemspec. It's not installing
spicycode-rcov, syntax, and possibly more.

JD
________________________________________
From: ironruby-core-bounces@rubyforge.org
[ironruby-core-bounces@rubyforge.org] On Behalf Of John Lam (IRONRUBY)
[jflam@microsoft.com]
Sent: Tuesday, October 21, 2008 10:40 PM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Cucumber / RSpec Story Runner

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@rubyforge.org
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 7:37 PM
To: ironruby-core@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...

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=1...
http://rubyforge.org/tracker/?group_id=4359&atid=1...

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@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 7:04 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@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@microsoft.com><mailto:curth@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?
D66f1026934d7b379ecf51556a4b41cf?d=identicon&s=25 Orion Edwards (Guest)
on 2008-10-22 08:07
(Received via mailing list)
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
Ade8632553a9243ae05fc920f68644c1?d=identicon&s=25 Jim Deville (Guest)
on 2008-10-22 08:12
(Received via mailing list)
Attachment: test_spec.rb (106 Bytes)
Here's another test if you are using gems. It should work with ir
test_spec.rb

JD
________________________________________
From: ironruby-core-bounces@rubyforge.org
[ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
[orion.edwards@open2view.com]
Sent: Tuesday, October 21, 2008 11:07 PM
To: ironruby-core@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@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 7:37 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@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...

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=1...
http://rubyforge.org/tracker/?group_id=4359&atid=1...

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@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 7:04 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@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@microsoft.com><mailto:curth@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?
Ade8632553a9243ae05fc920f68644c1?d=identicon&s=25 Jim Deville (Guest)
on 2008-10-22 08:17
(Received via mailing list)
John, for the record, you have to add github as a source for
spicycode-rcov (gem sources -a http://gems.github.com).

JD
________________________________________
From: ironruby-core-bounces@rubyforge.org
[ironruby-core-bounces@rubyforge.org] On Behalf Of Jim Deville
[jdeville@microsoft.com]
Sent: Tuesday, October 21, 2008 11:10 PM
To: ironruby-core@rubyforge.org
Subject: Re: [Ironruby-core] Cucumber / RSpec Story Runner

Here's another test if you are using gems. It should work with ir
test_spec.rb

JD
________________________________________
From: ironruby-core-bounces@rubyforge.org
[ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
[orion.edwards@open2view.com]
Sent: Tuesday, October 21, 2008 11:07 PM
To: ironruby-core@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@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 7:37 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@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...

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=1...
http://rubyforge.org/tracker/?group_id=4359&atid=1...

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@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 7:04 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@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@microsoft.com><mailto:curth@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?
A120eb09d383829bfa210bf656fcde4e?d=identicon&s=25 John Lam (IRONRUBY) (Guest)
on 2008-10-22 08:22
(Received via mailing list)
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@rubyforge.org
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 11:07 PM
To: ironruby-core@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@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 7:37 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@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...

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=1...
http://rubyforge.org/tracker/?group_id=4359&atid=1...

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@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Orion Edwards
Sent: Tuesday, October 21, 2008 7:04 PM
To: ironruby-core@rubyforge.org<mailto:ironruby-core@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@microsoft.com><mailto:curth@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?
D66f1026934d7b379ecf51556a4b41cf?d=identicon&s=25 Orion Edwards (Guest)
on 2008-10-22 08:38
(Received via mailing list)
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?
A120eb09d383829bfa210bf656fcde4e?d=identicon&s=25 John Lam (IRONRUBY) (Guest)
on 2008-10-22 09:01
(Received via mailing list)
-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
D4ced0fe3718f187173fc05dd7f33f57?d=identicon&s=25 Ben Hall (Guest)
on 2008-10-22 09:57
(Received via mailing list)
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)
1e39a948a58f4569c53d971c2e120920?d=identicon&s=25 Ivan Porto carrero (casualjim)
on 2008-10-22 10:08
(Received via mailing list)
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
F983f0c990cba2fe743ef62a975ec99c?d=identicon&s=25 Curt Hagenlocher (Guest)
on 2008-10-22 18:23
(Received via mailing list)
Attachment: mssql_adapter.rb (20 KB)
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@rubyforge.org
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Ivan Porto
Carrero
Sent: Wednesday, October 22, 2008 1:08 AM
To: ironruby-core@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@googlemail.com<mailto:ben2004uk@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@microsoft.com<mailto:jflam@microsoft.com>> wrote:
> 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.
>> To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
>> I didn't know about -X:Interpret...
>>
>>       To: ironruby-core@rubyforge.org<mailto:ironruby-core@rubyforge.org>
>>       class Vehicle
>>         end
>>
>>       On 22/10/2008, at 6:40 PM, John Lam (IRONRUBY) wrote:
>>       From: 
ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
>> 3
>>
>>       This will only cause rspec to lose the line number - you also have to
>>       I'll add a rake task to compile release. Can you try to isolate those
>> and it appears to work (I only have a simple test, but hey).
>>       and it seemed to work.
>>       module ActiveSupport; end
>>       C:\development\irtest>ruby rspectest.rb
>>       Just playing with VS now to see if I can build a release version and
>>
>>       On Fri, Oct 17, 2008 at 2:53 PM, Curt Hagenlocher
>>               From: 
ironruby-core-bounces@rubyforge.org<mailto:ironruby-core-bounces@rubyforge.org>
>>               Cucumber to write executable feature documentation for my .NET code.
>>               'rake-0.8.3/lib/rake'"), but some work just fine (eg.
>>               --
>>
>>       Web Application Developer
>>
>>       Ironruby-core@rubyforge.org<mailto:Ironruby-core@rubyforge.org>
>> <mailto:orion.edwards@open2view.com<mailto:orion.edwards@open2view.com>>
>>       _______________________________________________
>
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org<mailto:Ironruby-core@rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core
D4ced0fe3718f187173fc05dd7f33f57?d=identicon&s=25 Ben Hall (Guest)
on 2008-10-22 21:39
(Received via mailing list)
Oh, I remember I had problems with cucumber due to require needing to
have .rb on the end
(http://rubyforge.org/tracker/?group_id=4359&atid=1...).

For example, this line - load 'cucumber'
E:\IronRuby\r156\src\IronRuby.Libraries\Builtins\KernelOps.cs:380:in
`load': no such file to load -- cucumber (LoadError
)
        from :0

Command I was using was: E:\IronRuby\r156\build\debug>ir
"c:\ruby\bin\cucumber" -r
"E:\IronRuby\r156\cucumber\examples\calculator\features\steps\
calculator_steps.rb"
"E:\IronRuby\r156\cucumber\examples\calculator\features\addition.feature"

I made a change (load 'cucumber.rb'), but now i'm getting You must gem
install win32console to get coloured output on this ruby platform
(i386-mswin32)  but no output :(   I guess I need to do something
else....
D66f1026934d7b379ecf51556a4b41cf?d=identicon&s=25 Orion Edwards (Guest)
on 2008-10-22 22:42
(Received via mailing list)
_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core
D4ced0fe3718f187173fc05dd7f33f57?d=identicon&s=25 Ben Hall (Guest)
on 2008-10-22 23:54
(Received via mailing list)
Well, this is how Cucumber has implement the code, as such there must
be something different. Something is happening, i'm just not sure
what, but there is a problem still with IronRuby.

The file i'm looking at is "c:\ruby\bin\cucumber" - maybe its
different due to rubygems...

Without it, i'm not sure how else to run Cucumber. For example, this
also fails to output anything:
E:\IronRuby\r156\build\debug>ir "c:\ruby\bin\cucumber" --help

This also fails:
E:\IronRuby\r156\build\debug>ir
"C:\ruby\lib\ruby\gems\1.8\gems\cucumber-0.1.8\lib\cucumber.rb" --help
ir "c:/ruby/bin/cucumber" --help

However, this works:
C:/Ruby/bin/ruby.exe "c:/ruby/bin/cucumber" --help



On Wed, Oct 22, 2008 at 8:56 PM, Orion Edwards
7f1bf9b3f5a791c90cea8c2bd608e925?d=identicon&s=25 Pat Gannon (patgannon)
on 2008-10-23 22:48
After a lot of experimentation and hacking, I was able to get Cucumber
to work with IronRuby (mostly).  I was not able to get the Cucumber
output in ANSI color, but it works out fine in black and white.  I also
had to disable the functionality in Cucumber that prints the source file
and line of code associated with each step.  Finally, I had to re-wire
the way expectations are propagated from specification failures.  I have
posted the instructions to get Cucumber working with IronRuby here:

http://www.patrickgannon.net/archive/2008/10/23/bd...

Thanks,
Pat Gannon
This topic is locked and can not be replied to.