Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Squasher - squash your old migrations in a single command

License

NotificationsYou must be signed in to change notification settings

peara/squasher

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build StatusCode ClimateGem Version

Squasher compresses old migrations in a Rails application. If you work on a big project with lots of migrations, everyrake db:migrate might take a few seconds, or creating of a new database might take a few minutes. That's because Rails loads all those migration files. Squasher removes all the migrations and creates a single migration with the final database state of the specified date (the new migration will look like a schema).

Installation

You should not add this to your Gemfile. Just standalone installation:

$ gem install squasher

@note if you use Rbenv don't forget to runrbenv rehash.

Usage

@note stop all preloading systems if there are present (spring, zeus, etc)

Suppose your application was created a few years ago.%app_root%/db/migrate folder looks like this:

2009...._first_migration.rb2009...._another_migration.rb# and a lot of other files2011...._adding_model_foo.rb# few years later2013...._removing_model_foo.rb# and so on

Storing these atomic changes over time is painful and useless. It's time to archive all this stuff. Once you install the gem you can run thesquasher command.

$ squasher 2014 #compress all migrations which were created prior to the year 2014

You can tellsquasher a more detailed date, for example:

$ squasher 2013/12    #prior to December 2013$ squasher 2013/12/19 #prior to 19 December 2013

Options

-d - execute indry mode - test a squashing process without deleting old migrations. The final output will beprinted in the console.

-r - reuse a database from previous squashing process. The option can be used in the next cases:

  • you've run squasher indry mode before and there were no errors
  • you're squashing migrations gradually. For example, you want to squash migrations from 2013 till 2015, but theprocess breaks in a migration from 2014. In this situation you squash till 2014, save the squasher'sdatabase at the end, make a patch in the broken migration and run again the suite with-r option. As the resultsquasher will not need to create the db schema and all data from the previous migrations will be there.

Requirements

It works and was tested on Ruby 2.0+ and Rails 3.1+. It also requires a valid configuration inconfig/database.yml and using Ruby format indb/schema.rb (default Rails use-case).If an old migration inserted data (created ActiveRecord model records) you will lose this code in the squashed migration,BUTsquasher will ask you to leave a tmp database which will have all data that was inserted while migrating. Using this database you could add that data as another migration, or intoconfig/seed.rb (the expected place for this stuff).

Changelog

  • 0.2.0
    • adddry mode and ability to reuse the previous squasher database
    • improve database config processing
    • raise the minimum supported version of Ruby
  • 0.1.7
    • a regression fix of the log output (@lime)
    • improve a multi-platform support (@johncarney)
  • 0.1.6
    • support multiple database settings (@ppworks)

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

About

Squasher - squash your old migrations in a single command

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby96.6%
  • HTML3.4%

[8]ページ先頭

©2009-2025 Movatter.jp