Hookup
Automate the bundle/migration tedium of Rails with Git hooks
Install / Use
/learn @tpope/HookupREADME
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
License
Copyright (c) Tim Pope. MIT License.
Related Skills
node-connect
346.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
346.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
346.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
