https://github.com/railsware/db_structure_ext
Extended rails tasks db:structure:dump/load that supports mysql views/triggers/routines
https://github.com/railsware/db_structure_ext
Last synced: 9 months ago
JSON representation
Extended rails tasks db:structure:dump/load that supports mysql views/triggers/routines
- Host: GitHub
- URL: https://github.com/railsware/db_structure_ext
- Owner: railsware
- License: mit
- Created: 2011-10-12T12:05:54.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2012-08-24T12:50:28.000Z (over 13 years ago)
- Last Synced: 2025-04-22T23:08:02.761Z (9 months ago)
- Language: Ruby
- Homepage:
- Size: 126 KB
- Stars: 7
- Watchers: 20
- Forks: 8
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DbStructureExt
ActiveRecord connection adapter extensions.
Currently it extends only mysql/mysql2 adapter with structure_dump/structure_load methods.
Library **does not override** mysql adapter by default.
So you can use extensions independently (via MysqlConnectionProxy) or include extension methods into adapter.
## Goals
* dump/load __full__ mysql structure (with tables/views/triggers/routines)
* dump/load mysql structure from any database/file to any file/database
* parallel_tests support in mysql structures
## Installation
gem install db_structure_ext
## Using MysqlConnectionProxy
connection = ActiveRecord::Base.connection
connection_proxy = DbStructureExt::MysqlConnectionProxy.new(connection)
connection_proxy.structure_dump
## Extending mysql adapter
require 'db_structure_ext/init_mysql_adapter'
connection.structure_dump
It automaticaly detects corresponding mysql/mysq2 adapter.
So it should works with any rails version including v1.2.6
## Dump structure
Extended *structure_dump* for mysql/mysql2 adapter dumps not only *tables*. It dumps:
* tables
* views
* triggers
* routines (functions and procedures)
## Load structure
Method loads sql statements separated by *\n\n*
### parallel tests support
It supports [parallel_tests](https://github.com/grosser/parallel_tests) or another gems that use TEST_ENV_NUMBER variable for tests parallelization.
It prepends
ENV['TEST_ENV_NUMBER']
to any table name with *_test* suffix in name
## Rails db tasks extensions
Add to your *Rakefile*
require 'db_structure_ext/tasks'
In case Rails3 it loads tasks automaticaly via railtie mechanizm.
### db:structure:dump
Synopsis:
rake db:structure:dump[env,file] # Dump the database structure to a SQL file
By default it works as original well-known rails task.
It dumps development structure to *db/development_structure.sql*
But it dumps to NOT only TABLES. It dumps also VIEWS, TRIGGERS and ROUTINES.
Additionally you can indicate another *environment* as first argument and optionally another dump *file* as second.
By default dump filename is *db/{env}_structure.sql*
### db:structure:load
Synopsis:
rake db:structure:load[env,file] # Load SQL structure file to the database
It's opposite task to *db:structure:load* that allows to load db structure from specified file to specified db environment.
The arguments is the same as for previous task.
### Examples
Dump *development* structure to db/development_structure.sql file:
rake db:structure:dump[development,db/development_structure.sql]
# or
rake db:structure:dump[development]
# or
RAILS_ENV=development db:structure:dump
# or just
rake db:structure:dump
Dump development structure to db/my_structure.sql file:
rake db:structure:dump[development,db/my_structure.sql]
Load db/my_structure.sql to test database:
rake db:structure:load[test,db/my_structure.sql]
Load db/development_structure.sql to development database:
rake db:structure:load[development,db/development_structure.sql]
# or
rake db:structure:load[development]
# or
RAILS_ENV=development rake db:structure:load[development]
# or
rake db:structure:load
## Testing
We have tested library against AR 1.x.x and AR 3.0.x.
We use [multiversion](https://github.com/railsware/multiversion) gem
It assumes you use RVM and Bundler.
### Create rvm aliases
rvm alias create ar01_r186 ruby-1.8.6-pYOUR_PATCH_LEVEL
rvm alias create ar30_r192 ruby-1.9.2-pYOUR_PATCH_LEVEL
### Install multiversion
gem install multiversion
### Install gems
multiversion all bundle install
### Run tests
multiversion all rspec spec
## License
* Copyright (c) 2012 Railsware (www.railsware.com)
* [MIT](www.opensource.org/licenses/MIT)