Greetings,
I have built Ruby 1.8.6 on z/OS as an ASCII application. I have 
installed rubygems and Rails. I can run irb and ruby scripts, and I can 
generate a Rails application.

The problem I run into is that the pseudo threads implementation in 
eval.c depends on a technique of stack swapping from heap that the z/OS 
C runtime setjmp/longjmp and getcontext/setcontext functions do not 
support. The C runtime insists on stack integrity. When stack_extend 
needs to be called, a valid chainback no longer exists. Ruby abnormally 
ends (abends) with a stack check exception.

So long as Ruby threading is not used, e.g. in a typical script, all is 
well. However, running a server application, where threading is 
essential to support multiple clients, does not work.

If the pseudo threads implementation could be replaced with pthreads, 
even if the pthreads were all synchronized (due to the lack of thread 
safety for global variable access), then I believe a z/OS implementation 
of the Ruby interpreter would work. I have attempted this myself, but I 
need some more pthread API expertise.

I have built JRuby on z/OS, and it works reasonably well, if slowly. I 
can build and run a Rails application, and I have run it using 
mongrel-jruby. I have fiddled with ActiveRecord-JDBC to get this to work 
with DB2 on z/OS. ActiveRecord-JDBC had some problems with Rails using 
quoted numerics, but copying the jdbc-derby code to use with DB2 helped 
there. However, BLOB/CLOB support is a bit unconventional on z/OS DB2, 
and ActiveRecord-JDBC did not work with that (so Camping session, which 
uses a text type that maps to a CLOB, does not work). (Note that if you 
are using ibm_db from a workstation Ruby session to z/OS DB2, that 
Camping runs fine. BLOB/CLOB support in ibm_db is robust).

I would be interested in working with folks to facilitate their efforts 
at Ruby on z/OS, and who could help me with the bowels of eval.c. Ruby's 
utility as a scripting language suggests it could offer a lot to 
sysprogs, dba's, and testers. It would also be helpful to write servers 
to provide health check info and access into the system. Rails might 
also be an interesting exercise there.
-- 
Posted via http://www.ruby-forum.com/.