MS SQL tilgang fra Ruby og Watir

Watir er et framework til automatiserede unit tests af webapplikationer ved brug af et automatiseringslag rettet imod Internet Explorer. Der er tiltag igang for at kunne benytte Watir i Firefox og Safari browserne.

I forbindelse med implementering af adskillige unit tests for en kunde opstod behovet for at kunne checke både datamodel og web-snitfalde imod hinanden. Dataene for de web applikationer der løbende skal kunne testes er placeret i en større SAN baseret MS SQL database.

Ruby har et helt fortrinligt database API, kaldet dbi, som kan anvendes til formålet. Man skal blot installere en ADO wrapper først, da denne ikke som standard medfølger seneste Ruby installationspakke (v186-26). Dette gøres ved først at hente denne dbi pakke indeholdende alle wrappere:
http://rubyforge.org/frs/download.php/655/ruby-dbi-all-0.0.23.tar.gz.

Udpak herfra filen “ruby-dpi-all/lib/dbd_ado/ADO.rb” og kopier denne fil til en nyoprettet “ADO” mappe i din Ruby installationssti, således den endelige placering for wrapper filen bliver “/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb”.

Det er sådanset alt der skal til. Du er nu istand til at tilgå MS SQL databaser fra Ruby, og dermed også fra Watir.

Eksempel:

require 'test/unit'
require 'watir'
require "dbi"

ConnectionString =
  "Provider=SQLOLEDB;" +
  "Data Source=DBSOURCE;" +
  "Initial Catalog=CATALOG;" +
  "User ID=USERNAME;" +
  "Password=PASSWORD;" +
  "Application name=RubyWatir;" +
  "Connection Timeout=0"

class MyTestClass < Test::Unit::TestCase
  ...
  def test_database
    ...
    db = DBI.connect("DBI:ADO:" + ConnectionString)
    sql = "select product, price, description from t_products"
    sth = db.prepare(sql)
    sth.execute
    row = sth.fetch
    puts row
    product = row[0]
    price = row[1]
    description = row[2]
    sth.finish
    db.disconnect
    ...
   end
   ...
end