0.0
No commit activity in last 3 years
No release in over 3 years
Asynchronous ORM for Ruby
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

AsyncRecord¶ ↑

One of the greatest things about running on an event-based server is that you can get accelerated performance in database access.

Usually there is a lot of time spent blocking for a database query to return. In AsyncRecord, your queries don’t block the request. You will receive a callback once the query has completed. This has major performance implications.

NOTE: Even though your connections are non-blocking to the database server, the database server is still blocking when accessing IO (disk/memory).

To use AsyncRecord, do the following:

Install the Gem:

sudo gem install async_record

Setup async_record:

require 'async_record'
conn = AsyncRecord::Connection::MySQL.new(:host => "127.0.0.1", :port => 3306, :user => "root", :database => "database")
conn.connect

Define a model:

class User < AsyncRecord::Base
  set_table_name "users"
end

Controller ¶ ↑

These examples are for the Fastr web framework.

In your controller, try the following (remember to put the following in a deferred response):

Get all the rows in the table:¶ ↑

User.all(:limit => 256) do |users|
  users.each do |user|
    response.send_data("#{user.username}\n")
  end
  response.succeed
end

Find a row by ID¶ ↑

User.find(1) do |user|
  if user.nil?
    response.send_data("User not found")
  else
    response.send_data("User: #{user.username}\n")
  end
  response.succeed
end

Get the count of rows in the table¶ ↑

User.count do |count|
  response.send_data("Count: #{count}")
  response.succeed
end

Run a custom query¶ ↑

User.query("select username from users") do |results|
  response.send_data("Results: #{results.inspect}")
  response.succeed
end

WARNING: AsyncRecord is under heavy development, but its pretty cool :).