Module: Skr::Core::DB

Extended by:
DB
Included in:
DB
Defined in:
lib/skr/core/db.rb,
lib/skr/core/db/seed.rb,
lib/skr/core/db/migrations.rb,
lib/skr/core/db/migration_helpers.rb

Defined Under Namespace

Modules: CommandRecorder, MigrationMethods, Migrations, TableFields Classes: Seed

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#config_fileObject

Returns the value of attribute config_file.



8
9
10
# File 'lib/skr/core/db.rb', line 8

def config_file
  @config_file
end

Instance Method Details

#configure_rake_environmentObject



25
26
27
28
29
30
31
32
33
34
35
36
37
# 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) ⇒ Object



17
18
19
# File 'lib/skr/core/db.rb', line 17

def connect( configuration )
    ::ActiveRecord::Base.establish_connection( configuration )
end

#create_migration(migration_name) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 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') ⇒ Object



10
11
12
13
14
15
# 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) ⇒ Object



54
55
56
57
58
59
# 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

#migration_exists?(file_name) ⇒ Boolean

:nodoc:

Returns:

  • (Boolean)


21
22
23
# File 'lib/skr/core/db.rb', line 21

def migration_exists?( file_name ) #:nodoc:
    Dir.glob("#{migrations_dir}/[0-9]*_*.rb").grep(/\d+_#{file_name}.rb$/).first
end

#rollback(step = nil) ⇒ Object



61
62
63
64
65
66
# 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