Ruby Sybase Solaris: Difference between revisions
No edit summary |
mNo edit summary |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
=== Sybase Adapter for Ruby on Rails on Solaris === | |||
This is seeming to be quite a painful combination. It seems most Ruby on Rails folks are running on some sort of LAMP stack. At home I'm running Ruby / Mac OS X / MySQL, which seems to have plenty of quirks as well. In the financial services sector, Sybase & Solaris are very common place, and Ruby / RoR will need to better support this platform if it's going to see much adaption. | This is seeming to be quite a painful combination. It seems most Ruby on Rails folks are running on some sort of LAMP stack. At home I'm running Ruby / Mac OS X / MySQL, which seems to have plenty of quirks as well. In the financial services sector, Sybase & Solaris are very common place, and Ruby / RoR will need to better support this platform if it's going to see much adaption. | ||
Line 56: | Line 58: | ||
I did a <code>make install</code>, but that only installed the .so, and not the require .rb files. An additional <code>cp sybct.rb sybsql.rb /u/eggebr/pkgs/sunos-5.10-i86pc/lib/ruby/site_ruby/1.8/</code> was needed before I was able to use the library from a Rails script. | I did a <code>make install</code>, but that only installed the .so, and not the require .rb files. An additional <code>cp sybct.rb sybsql.rb /u/eggebr/pkgs/sunos-5.10-i86pc/lib/ruby/site_ruby/1.8/</code> was needed before I was able to use the library from a Rails script. | ||
In the end, I almost gave up and was going to try using JRuby instead, which would have fixed the database issues, at the cost of introducing plenty of other complexity. | |||
[[Category:Ruby|Sybase Solaris]] | |||
[[Category:Solaris]] | |||
[[Category:Sybase]] |
Latest revision as of 00:36, 31 July 2008
Sybase Adapter for Ruby on Rails on Solaris
This is seeming to be quite a painful combination. It seems most Ruby on Rails folks are running on some sort of LAMP stack. At home I'm running Ruby / Mac OS X / MySQL, which seems to have plenty of quirks as well. In the financial services sector, Sybase & Solaris are very common place, and Ruby / RoR will need to better support this platform if it's going to see much adaption.
I have the Sybase's OpenClient library built for my platform, without which, this wouldn't be possible. Here's what I've learned so far.
First, I had to track down a library. This was a bit confusing because I've read reports on how Ruby on Rails now supports Sybase. It seems that neither Ruby 1.8.4 (2005-12-24) or Rails has built in support for Sybase. What Ruby needs is a freetds version which has no external dependecies. My route requires the C library from Sybase. Here's the library:
wget http://enjoy1.bb-east.ne.jp/~tetsu/sybct-ruby-0.2.8.tar.gz
The good thing is the file came with an English README file. This was a big help. Unfortunately, the extconf.rb wasn't setup to auto-configure itself. It requires hand editing depending on the platform. This might be because mkmf wasn't as advanced as when this was first written. Here are the changes I had to make:
6c6,7 < sybase = "/opt/sybase-12.5" --- > # sybase = "/opt/sybase-12.5" > sybase = "/usr/local/sybase-12.5.1" 21c22 < # $LOCAL_LIBS = "-Xlinker -Bstatic -lct -lcs -ltcl -lcomn -lintl -ltli -Xlinker -Bdynamic -lnsl" --- > $LOCAL_LIBS = "-Xlinker -Bstatic -lct -lcs -ltcl -lcomn -lintl -Xlinker -Bdynamic -lnsl" 41c42 < $LOCAL_LIBS = "-lct -lcs -lsybtcl -lcomn -lintl -rdynamic -ldl -lnsl -lm" --- > # $LOCAL_LIBS = "-lct -lcs -lsybtcl -lcomn -lintl -rdynamic -ldl -lnsl -lm" 52c53,57 < --- > if PLATFORM =~ /solaris/ > then > have_library("nls", "gethostbyname") > have_library("socket","gethostbyaddr") > end
The first change is because my C libraries aren't installed in the usual location. It would be nice to be able to specify this with a --with-sybase-dir option. Next I had to select the correct LOCAL_LIBS for my platform. I don't have a tli module, so I removed that one from the linker. Things seems to work ok with out. Interestingly, I have this module for Sparc but not for Intel Solaris. Lastly, I had to tell it to find and include the socket library. Fortunately, I've ran into this before when working on tibcorv. Additionally, gcc 3.3.2 wasn't working for me. So I switched to use gcc 4.1, which seemed to work better.
After this, I was able to create the Makefile, run make, and then test things out with the included isql program.
$ ruby -I . ./sample/isql.rb -S TEST_NY !! MAX ROWCOUNT 2000 !! 1-> select user 2-> go <- select user restype =ROW_RESULT ----- guest (row count = 1, tran state = 'completed')
I did a make install
, but that only installed the .so, and not the require .rb files. An additional cp sybct.rb sybsql.rb /u/eggebr/pkgs/sunos-5.10-i86pc/lib/ruby/site_ruby/1.8/
was needed before I was able to use the library from a Rails script.
In the end, I almost gave up and was going to try using JRuby instead, which would have fixed the database issues, at the cost of introducing plenty of other complexity.