Ruby/Informix – Ruby library for connecting to IBM Informix.
Motivation
The situation that started it all [link].
Download
The latest version of Ruby/Informix can be found at:
rubyforge.org/projects/ruby-informix
Supported platforms
Ruby/Informix has been tested succesfully with Informix 7 and above, and Informix CSDK 2.81 and above, on the following platforms:
Operating System Architecture
-----------------------------------------
Solaris SPARC64
GNU/Linux x86, x86-64
Windows XP/2000 x86
HP-UX 11.11 PA-RISC 2.0 64-bit
Send me an e-mail if you have [un]succesfully tested Ruby/Informix on another platform.
Installation
Requirements
-
Informix CSDK 2.81 or above
If you want to build Ruby/Informix instead of installing a precompiled gem, you will also need:
-
Microsoft Visual Studio 6.0, for Windows or
-
an ANSI C compiler, for UNIX and Linux
Rubygem installation
gem install ruby-informix
Documentation
RDoc and ri documentation is automatically installed. It can also be found online at:
ruby-informix.rubyforge.org/doc
Examples
Connecting to a database
db = Informix.connect('stores')
Fetching all records from a table
cur = db.cursor('select * from stock')
cur.open
records = cur.fetch_all
cur.drop # or close, if you want to reopen it later
Same thing, with blocks
records = db.cursor('select * from stock') do |cur|
cur.open
cur.fetch_all
end
Inserting records
stmt = db.prepare('insert into state values(?, ?)')
stmt.execute('CA', 'California')
stmt.call('NM', 'New Mexico')
stmt['TX', 'Texas']
Iterating over a table using a hash (shortcut)
db.each_hash('select * from customers') do |cust|
puts "#{cust['firstname']} #{cust['lastname']}"
end
More examples can be found at:
ruby-informix.rubyforge.org/examples.html
Data types supported
Informix Ruby
-----------------------------------------------------------------------------
SMALLINT, INT, INT8, FLOAT, Numeric
SERIAL, SERIAL8
CHAR, NCHAR, VARCHAR, NVARCHAR String
DATE Date
DATETIME Time
INTERVAL Informix::IntervalYTM, Informix::IntervalDTS
DECIMAL, MONEY BigDecimal
BOOL TrueClass, FalseClass
BYTE, TEXT StringIO, String
CLOB, BLOB Informix::Slob
NULL values can be inserted and are retrieved as nil
.
BYTE and TEXT are retrieved as Strings, but for supplying them as input parameters, a StringIO object, or a anyother IO-like object that provides a #read method must be used.
Strings can be used in the cases where Informix accepts them for non-character data types, like DATE, DATETIME, INTERVAL, BOOL, DECIMAL and MONEY
Recommendations
-
use blocks to release Informix resources automatically as soon as possible, or use #drop
-
you can optimize cursor execution by changing the size of fetch and insert buffers, setting the environment variable FET_BUF_SIZE to up to 32767.
Support
Feel free to send me bug reports, feature requests, comments, patches or questions directly to my mailbox or the following forums:
Presentations and articles about Ruby/Informix
-
“Talking with Perl, PHP, Python, Ruby to IDS” [link], Eric Herber, The Informix Zone.
-
“Informix on Rails” [link], Guy Bowerman, IBM developerWorks Blogs: Informix Application Development.
-
“Ruby/Informix, and the Ruby Common client” [link], Guy Bowerman, IBM developerWorks Blogs: Informix Application Development.
-
“Using IBM Informix Dynamic Server on Microsoft Windows, Part 6” [link], Akmal B. Chaudhri, IBM developerWorks: On demand demos.
License
Ruby/Informix is available under the three-clause BSD license
:include: COPYRIGHT
Gerardo Santana <gerardo.santana gmail> santanatechnotes.blogspot.com