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