require 'active_record' require 'rtm/backend/active_record/001_initial_schema' module RTM # Assignes a logger to active record (or STDOUT as default) which outputs # the sql statements. def self.log(to=STDOUT) ActiveRecord::Base.logger = Logger.new(to) ActiveRecord::Base.colorize_logging = false if PLATFORM =~ /mswin/ end # This function generates the database schema using the default # ActiveRecord connection. def self.generate_database RTM::AR::TMDM::InitialSchema.migrate(:up) end # Connects to the sqlite3 database given in the path or to # a default database if no path is given. def self.connect_sqlite3(dbname="tmdm.sqlite3") ActiveRecord::Base.establish_connection( :adapter => platform_specific_adapter("sqlite3"), :database => dbname ) end # Connects to the sqlite2 database given in the path or to # a default database if no path is given. def self.connect_sqlite(dbname="tmdm.sqlite2") ActiveRecord::Base.establish_connection( :adapter => platform_specific_adapter("sqlite"), :database => dbname ) end # Connects to a mysql database. Parameters are # either # database, username, password, host # or # only a keyword hash with these parameters. def self.connect_mysql(database="rtm_development", username=nil, password=nil, host="localhost") if database.is_a? Hash return ActiveRecord::Base.establish_connection(database) end ActiveRecord::Base.establish_connection( :adapter => platform_specific_adapter("mysql"), :database => database, :username => username, :password => password, :host => host ) end # Connects to a in-memory database. No parameters required. # Schema will automatically be generated. def self.connect_memory ActiveRecord::Base.establish_connection( :adapter => platform_specific_adapter("sqlite3"), :database => ":memory:" ) no_output do generate_database end true end # Connects to a in-memory sqlite2 database, as connect_memory does with sqlite3 def self.connect_memory2 ActiveRecord::Base.establish_connection( :adapter => platform_specific_adapter("sqlite"), :database => ":memory:" ) no_output do generate_database end true end # Connects Active Record to a database or in Memory database if no parameters given. def self.connect(*args) if args.size == 0 return connect_memory end ActiveRecord::Base.establish_connection(*args) end private def self.platform_specific_adapter(adapter) if PLATFORM && PLATFORM =~ /java/ return "jdbc#{adapter}" end return adapter end end