From 2130e0f4826c927511f936914e5fa3f20fe3d6be Mon Sep 17 00:00:00 2001 From: Magnus Wissler Date: Tue, 11 Oct 2011 18:10:37 +0200 Subject: [PATCH] Support for multiple databases, not just the ActiveRecord::Base connection The database connection is now grabbed from self (in the next_insert_id method) and from the model class in the HashMethods module. This is needed when you have more than one database in your Rails (or anything else that uses ActiveRecord) app. --- lib/crewait.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/crewait.rb b/lib/crewait.rb index 429191d..b1a56fe 100644 --- a/lib/crewait.rb +++ b/lib/crewait.rb @@ -45,7 +45,7 @@ def self.config(hash) module BaseMethods def next_insert_id - connection = ActiveRecord::Base.connection + connection = self.connection database, adapter = connection.current_database, connection.adapter_name sql = case adapter.downcase when 'postgresql' @@ -55,7 +55,7 @@ def next_insert_id else raise "your database/adapter (#{adapter}) is not supported by crewait! want to write a patch?" end - results = ActiveRecord::Base.connection.execute(sql) + results = connection.execute(sql) case adapter.downcase when 'postgresql' results[0]["nextval"].to_i @@ -76,7 +76,7 @@ def crewait(hash) module HashMethods def import_to_sql(model_class) if model_class.respond_to? :table_name - model_class = model_class.table_name + model_table = model_class.table_name end keys = self.keys values = [] @@ -87,11 +87,11 @@ def import_to_sql(model_class) sql = values.to_crewait_sql while !sql.empty? do - query_string = "insert into #{model_class} (#{keys.join(', ')}) values #{sql.shift}" + query_string = "insert into #{model_table} (#{keys.join(', ')}) values #{sql.shift}" while !sql.empty? && (query_string.length + sql.last.length < 999_999) do query_string << ',' << sql.shift end - ActiveRecord::Base.connection.execute(query_string) + model_class.connection.execute(query_string) end end # this was originally called "<<", but changed for namespacing