An open API service indexing awesome lists of open source software.

https://github.com/jesseduffield/lazy_migrate

A little terminal UI for managing schema migrations in rails
https://github.com/jesseduffield/lazy_migrate

Last synced: 11 months ago
JSON representation

A little terminal UI for managing schema migrations in rails

Awesome Lists containing this project

README

          

# LazyMigrate

Easily manage rails migrations with a mini UI that can be invoked in your console or on the command line.

![](/github/demo.gif)

I am sick and tired of having to manually copy and paste version numbers from my migration filenames whenever I have to do anything more complicated than `rails db:migrate`! So I made a gem that easily plugs into a rails app and makes it all a little easier.

Although most of this just forwards the commands directly to rails, one feature goes a step beyond. If you have ever pulled the latest changes on master only to find that somebody managed to merge a migration before you merged yours, you may be familiar with the dance of:
1) `down`'ing your migration
2) obtaining a new version timestamp
3) replacing the version in your migration's filename
4) up'ing the migration again

This gem lets you do all that with the press of a button (via the `bring to top` option), so you don't need to break a sweat trying to merge your migration before somebody else beats you to the punch.

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'lazy_migrate'
```

And then execute:

$ bundle install

Or install it yourself as:

$ gem install lazy_migrate

## Usage

From within a rails console, go

```ruby
LazyMigrate.run
```

You can also invoke lazy_migrate as a rake task either by adding the following to your Rails app Rakefile:

```ruby
spec = Gem::Specification.find_by_name('lazy_migrate')
load "#{spec.gem_dir}/lib/tasks/lazy_migrate.rake"
```

Or by creating a rake task yourself like so:

```ruby
# in lib/tasks/lazy_migrate.rake
# frozen_string_literal: true

require 'lazy_migrate'

namespace :lazy_migrate do
desc 'runs lazy_migrate'
task run: :environment do
LazyMigrate.run
end
end

```

## Development

After checking out the repo, run `bin/setup` to install dependencies.

To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).

We use [Appraisal](https://github.com/thoughtbot/appraisal) to test the gem against different rails version like so:

```
bundle exec appraisal

bundle exec appraisal rails_5_1_5 rspec
bundle exec appraisal rails_5_2_4_3 install
```

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/jesseduffield/lazy_migrate.
If anybody wants this to work with the [Data Migrate](https://rubygems.org/gems/data_migrate/versions/1.2.0) gem let me know, currently it's only for schema migrations.
Hope you like types! Cos this gem uses [Sorbet](https://sorbet.org/).

## License

The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).