Sha256: 148ee2eba1e8c8ff9fa8d24b3f1a4665dbb228ac487ed701cc391ffa0a3482e5

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

module SeamlessDatabasePool
  class TestModel < ActiveRecord::Base
    class << self
      def database_configs
        adapters = ENV['TEST_ADAPTERS'].blank? ? [] : ENV['TEST_ADAPTERS'].split(/\s+/)
        configs = {}
        YAML.load_file(File.expand_path("../database.yml", __FILE__)).each do |adapter_name, adapter_config|
          configs[adapter_name] = adapter_config if adapters.include?(adapter_name.downcase)
        end
        configs
      end
      
      def use_database_connection(db_name)
        establish_connection(database_configs[db_name.to_s])
      end
      
      def db_model(db_name)
        model_class_name = db_name.classify
        unless const_defined?(model_class_name)
          klass = Class.new(self)
          const_set(model_class_name, klass)
        end
        const_get(model_class_name)
      end
      
      def create_tables
        connection.create_table(table_name) do |t|
          t.column :name, :string
          t.column :value, :integer
        end unless table_exists?
      end
 
      def drop_tables
        connection.drop_table(table_name)
      end
      
      def cleanup_database!
        connection.disconnect!
        sqlite3_config = database_configs['sqlite3']
        if sqlite3_config && File.exist?(sqlite3_config['database'])
          File.delete(sqlite3_config['database'])
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
seamless_database_pool-1.0.11 spec/test_model.rb
seamless_database_pool-1.0.10 spec/test_model.rb