module Skr::Core::DB

Attributes

config_file[RW]

Public Instance Methods

configure_rake_environment() click to toggle source
# File lib/skr/core/db.rb, line 25
def configure_rake_environment
    ActiveRecord::Tasks::DatabaseTasks.seed_loader = Skr::Core::DB
    env = ENV['RAILS_ENV'] || 'development'
    Skr::Core::DB.config_file ||= 'config/database.yml'
    ENV['SCHEMA'] ||= 'db/schema.sql'
    ENV['DB_STRUCTURE'] ||= 'db/schema.sql'
    ActiveRecord::Base.schema_format = :sql
    Skr::Core::DB.establish_connection( env )
    ActiveRecord::Tasks::DatabaseTasks.database_configuration = ActiveRecord::Base.configurations
    ActiveRecord::Tasks::DatabaseTasks.env = 'test'
    ActiveRecord::Tasks::DatabaseTasks.migrations_paths = 'db/migrate'
    ActiveRecord::Tasks::DatabaseTasks.current_config( :config => ActiveRecord::Base.configurations[ env ] )
end
connect( configuration ) click to toggle source
# File lib/skr/core/db.rb, line 17
def connect( configuration )
    ::ActiveRecord::Base.establish_connection( configuration )
end
create_migration( migration_name ) click to toggle source
# File lib/skr/core/db.rb, line 39
            def create_migration( migration_name )
                STDERR.puts "Migration #{migration_name} already exists!" and return false if migration_exists?( migration_name )
                migration_number = Time.now.utc.strftime("%Y%m%d%H%M%S")
                migration_file = File.join(migrations_dir, "#{migration_number}_#{migration_name}.rb")
                migration_class = migration_name.split("_").map(&:capitalize).join
                File.open(migration_file, 'w') do |file|
                    file.write <<-MIGRATION.strip_heredoc
            class #{migration_class} < ActiveRecord::Migration
                def change
                end
            end
            MIGRATION
                end
            end
establish_connection( env = ENV['RAILS_ENV'] || 'development') click to toggle source
# File lib/skr/core/db.rb, line 10
def establish_connection( env = ENV['RAILS_ENV'] || 'development')
    file = config_file || 'config/database.yml'
    config = YAML::load( IO.read( file ) )
    ::ActiveRecord::Base.configurations = config
    self.connect( ::ActiveRecord::Base.configurations[ env ] )
end
migrate(version = nil) click to toggle source
# File lib/skr/core/db.rb, line 54
def migrate(version = nil)
    silence_activerecord do
        migration_version = version ? version.to_i : version
        ::ActiveRecord::Migrator.migrate( migrations_dir, migration_version )
    end
end
rollback(step = nil) click to toggle source
# File lib/skr/core/db.rb, line 61
def rollback(step = nil)
    silence_activerecord do
        migration_step = step ? step.to_i : 1
        ::ActiveRecord::Migrator.rollback(migrations_dir, migration_step)
    end
end

Private Instance Methods

migrations_dir() click to toggle source
# File lib/skr/core/db.rb, line 70
def migrations_dir
    ::ActiveRecord::Migrator.migrations_paths.first
end
silence_activerecord() { || ... } click to toggle source
# File lib/skr/core/db.rb, line 74
def silence_activerecord(&block)
    old_logger = ::ActiveRecord::Base.logger
    ::ActiveRecord::Base.logger = nil
    yield if block_given?
    ::ActiveRecord::Base.logger = old_logger
end