This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
Talking Directly to a MySQL Database | ||
---|---|---|
Code | Expected | Actual |
require 'rubygems' require 'mysql' def with_db dbh = Mysql.real_connect('localhost', 'cookbook_user', 'password', 'cookbook') begin yield dbh ensure dbh.close end end with_db do |db| db.query('drop table if exists secrets') db.query('create table secrets( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, secret LONGTEXT )') db.query(%{insert into secrets(secret) values ("Oh, MySQL, you're the only one who really understands me.")}) end with_db do |db| res = db.query('select * from secrets') res.each { |row| puts "#{row[0]}: #{row[1]}" } res.free end |
1: Oh, MySQL, you're the only one who really understands me. |
1: Oh, MySQL, you're the only one who really understands me. |
class Mysql alias :query_no_block :query def query(sql) res = query_no_block(sql) return res unless block_given? begin yield res ensure res.free if res end end end with_db do |db| db.query('select * from secrets') do |res| res.each { |row| puts "#{row[0]}: #{row[1]}" } end end |
1: Oh, MySQL, you're the only one who really understands me. |
1: Oh, MySQL, you're the only one who really understands me. |
with_db do |db| db.query('select * from secrets') do |res| puts "#{res.num_rows} row(s) matched:" res.each_hash do |hash| hash.each { |k,v| puts " #{k} = #{v}" } end end end |
1 row(s) matched: id = 1 secret = Oh, MySQL, you're the only one who really understands me. |
1 row(s) matched: id = 1 secret = Oh, MySQL, you're the only one who really understands me. |