Thanks to visit codestin.com
Credit goes to github.com

Skip to content

squadette/schema_enumerator

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SchemaEnumerator

Simple schema enumerator and table differ. Also generates migrations for your tables from the diffs.

Dependencies

Gems:

  • sequel
  • diffy
  • gem for your db adapter (sqlite3, pg, mysql2, or whatever sequel supports)

Installation

git clone git://github.com/markiz/schema_enumerator.git && \
cd schema_enumerator && \
rake install

Usage

Schema enumerator

require 'schema_enumerator'
enum = SchemaEnumerator.new({:adapter => 'mysql2', :database => 'test'})
# see http://sequel.rubyforge.org/rdoc/files/doc/opening_databases_rdoc.html
# for help on connection to db
people, users = enum.table("people", "users")
p people.fields
p people.indices

puts people.diff(users, :color)
# {:fields=>
#    {:id=>
#      {:allow_null=>false,
#       :default=>nil,
#       :primary_key=>true,
#       :db_type=>"integer"},
#     :name=>
# -    {:allow_null=>true,
# +    {:allow_null=>false,
# ...

# Also advanced diff:
pp people.diff(users, :hash)
# {:missing_fields=>{},
#  :extra_fields=>{},
#  :changed_fields=>
#   {:name=>
#     {:other=>
#       {:default=>nil,
#        :primary_key=>false,
#        :allow_null=>true,
#        :db_type=>"string"},
#      :own=>
#       {:default=>nil,
#        :primary_key=>false,
#        :allow_null=>false,
#        :db_type=>"string"}}},
#  :missing_indices=>{},
#  :extra_indices=>{[:name]=>{:unique=>false, :columns=>[:name]}}}

Migration generator

enum = SchemaEnumerator.new({:adapter => 'mysql2', :database => 'test'})
people, users = enum.table(:people, :users)
# Generates non-destructive migration to make `users`
# as identical to `people` as possible
puts SchemaEnumerator::MigrationGenerator.new(:people, :users).sequel_migration
# alter_table(:users) do
#   add_column :job, "varchar(80)", {:null=>true}
#   add_index [:name], {:unique=>false}
# end

About

Schema enumerator and differ for databases

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%