https://github.com/tpope/hookup
Automate the bundle/migration tedium of Rails with Git hooks
https://github.com/tpope/hookup
Last synced: over 1 year ago
JSON representation
Automate the bundle/migration tedium of Rails with Git hooks
- Host: GitHub
- URL: https://github.com/tpope/hookup
- Owner: tpope
- License: mit
- Created: 2011-04-08T16:53:47.000Z (over 15 years ago)
- Default Branch: master
- Last Pushed: 2023-01-24T16:31:59.000Z (over 3 years ago)
- Last Synced: 2024-05-03T01:19:48.982Z (about 2 years ago)
- Language: Ruby
- Homepage:
- Size: 33.2 KB
- Stars: 479
- Watchers: 11
- Forks: 24
- Open Issues: 6
-
Metadata Files:
- Readme: README.markdown
- License: MIT-LICENSE
Awesome Lists containing this project
README
Hookup
======
Hookup takes care of Rails tedium like bundling and migrating through
Git hooks. It fires after events like
* pulling in upstream changes
* switching branches
* stepping through a bisect
* conflict in schema
Usage
-----
gem install hookup
cd yourproject
hookup install
### Bundling
Each time your current HEAD changes, hookup checks to see if your
`Gemfile`, `Gemfile.lock`, or gem spec has changed. If so, it runs
`bundle check`, and if that indicates any dependencies are unsatisfied,
it runs `bundle install`.
### Migrating
Each time your current HEAD changes, hookup checks to see if any
migrations have been added, deleted, or modified. Deleted and modified
migrations are given the `rake db:migrate:down` treatment, then `rake
db:migrate` is invoked to bring everything else up to date.
Hookup provides a `-C` option to change to a specified directory prior to
running `bundle` or `rake`. This should be used if your `Gemfile` and
`Rakefile` are in a non-standard location.
To use a non-standard `db` directory (where `schema.rb` and `migrate/`
live), add `--schema-dir="database/path"` to the `hookup post-checkout`
line in `.git/hooks/post-checkout`.
To force reloading the database if migrating fails, add
`--load-schema="rake db:reset"` to the `hookup post-checkout` line in
`.git/hooks/post-checkout`.
### Schema Resolving
Each time there's a conflict in `db/schema.rb` on the
`Rails::Schema.define` line, hookup resolves it in favor of the newer of
the two versions.
### Skip Hookup
Set the `SKIP_HOOKUP` environment variable to skip hookup.
SKIP_HOOKUP=1 git checkout master
### Removing Hookup
hookup remove
ChangeLog
---------
[See it on the wiki](https://github.com/tpope/hookup/wiki/ChangeLog)
License
-------
Copyright (c) Tim Pope. MIT License.