Sha256: 2bfe7e9066a8c76c6f225d4021ef02a26205c09cffaca744bed2c936c35bfe4a

Contents?: true

Size: 1.93 KB

Versions: 2

Compression:

Stored size: 1.93 KB

Contents

module ActiveWrapper
  class Db
    
    attr_reader :base, :env
    
    def initialize(options)
      @base = options[:base]
      @env = options[:env]
    end
    
    def establish_connection
      unless ActiveRecord::Base.connected?
        config = YAML::load(File.open("#{base}/config/database.yml"))
        ActiveRecord::Base.configurations = config
        ActiveRecord::Base.establish_connection(env)
      end
    end

    def migrate(version=nil)
      ActiveRecord::Migrator.migrate("#{base}/db/migrate", version)
    end

    def migrate_reset
      db_migrate(0)
      db_migrate
    end

    def generate_migration(name=nil)
      raise "Please specify desired migration name with NAME=my_migration_name" unless name
  
      migration_name = name.strip.chomp
      migrations_path = "#{base}/db/migrate"
      migrations_template = File.expand_path("#{File.dirname(__FILE__)}/../../resources/migration.template")
  
      # Find the highest existing migration version or set to 1
      if (existing_migrations = Dir[File.join(migrations_path, '*.rb')]).length > 0
        version = File.basename(existing_migrations.sort.reverse.first)[/^(\d+)_/,1].to_i + 1
      else
        version = 1
      end
  
      # Read the contents of the migration template into string
      migrations_template = File.read(migrations_template)
  
      # Replace the migration name in template with the acutal one
      migration_content = migrations_template.gsub('__migration_name__', migration_name.camelize)
      migration_content = migration_content.gsub('__migration_table__', migration_name)
  
      # Generate migration filename
      migration_filename = "#{"%03d" % version}_#{migration_name}.rb"
  
      # Write the migration
      File.open(File.join(migrations_path, migration_filename), "w+") do |migration|
        migration.puts migration_content
      end
  
      # Done!
      puts "Successfully created migration #{migration_filename}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
winton-active_wrapper-0.1.0 lib/active_wrapper/db.rb
winton-active_wrapper-0.1.1 lib/active_wrapper/db.rb