Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Async MySQL driver for Ruby/Eventmachine
branch: master

This branch is 3 commits ahead, 3 commits behind tmm1:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
README
em-mysql.gemspec
test.rb

README

Async MySQL driver for Ruby/EventMachine
  (c) 2008 Aman Gupta (tmm1)

== Fork comments

Can work with multiple databases.
  
  db = Sequel.mysql config
  EventedMysql.databases[db] ||= EmMysql.new(config)
  
  db2 = Sequel.mysql config2
  EventedMysql.databases[db2] ||= EmMysql.new(config2)

Requires mysqlplus.

  require 'em/mysql'

  # alias SQL for simpler syntax

  SQL = EventedMysql
  def SQL(query, &blk) SQL.select(query, &blk) end

  
  # setup connection details and allow 4 connections to the server

  SQL.settings.update :host => 'localhost',
                      :port => 3306,
                      :database => 'test',
                      :connections => 4
  

  # use 4 connections to execute queries in parallel

  SQL('select sleep(0.25)'){ p 'done' }
  SQL('select sleep(0.25)'){ p 'done' }
  SQL('select sleep(0.25)'){ p 'done' }
  SQL('select sleep(0.25)'){ p 'done' }

Also includes a sequel async wrapper

  require 'sequel'
  require 'sequel/async'

  DB = Sequel.connect(:adapter => 'mysql', :user => 'root', :database => 'test', ...)
  EventedMysql.settings.update(..., :on_error => proc{|e| log 'error', e })

  DB[:table].where(:field => 'value').async_update(:field => 'new value')

For more info, see the comments in lib/sequel/async.rb

Something went wrong with that request. Please try again.